Documentation
¶
Overview ¶
Package typegen turns a realm's loaded config into TypeScript types: documents, queries, functions, configuration, templates and roles. Everything comes from the same registry the server enforces; nothing is enforced at runtime from the generated files.
Index ¶
Constants ¶
const ( TypesFile = "types.d.ts" InfoFile = "realm.json" )
File names written by `backd types`.
const DartTypesFile = "types.dart"
DartTypesFile is the file `backd types --lang dart` writes.
const Version = "1"
Version is the generator's version: it changes when the output format does.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type FunctionsOutput ¶
FunctionsOutput is a functions project's backd.d.ts.
func GenerateFunctions ¶
func GenerateFunctions(reg *registry.Registry, realm, database, config string) (*FunctionsOutput, error)
GenerateFunctions produces the backd.d.ts of one database's functions project: the realm's types plus defineFunction and a context typed per function.
type Info ¶
type Info struct {
Generator string `json:"generator"`
Realm string `json:"realm"`
// Fingerprint identifies the generated types (a hash of types.d.ts without its header):
// what the JavaScript client sends to know whether its types are stale.
Fingerprint string `json:"fingerprint"`
// Config is the config directory's fingerprint, when a caller asks to record it; `backd types`
// leaves it out, so unrelated changes to the config don't touch the committed realm.json.
Config string `json:"config,omitempty"`
Entries map[string]string `json:"entries"`
}
Info is realm.json: what the generated types were made from, and the type-level entries `--diff` compares.
type Options ¶
type Options struct {
Realm string
Database string // empty: every database of the realm
// Lang is the language to emit: "ts" (the default) or "dart".
Lang string
// Config is registry.Fingerprint of the loaded config; recorded in realm.json.
Config string
}
Options select what to generate.
type Output ¶
type Output struct {
Types string // contents of types.d.ts
Info Info // contents of realm.json
Warnings []string // things the generator couldn't express, with where
}
Output is what the generator produces for one realm.
func Generate ¶
Generate produces the types of one realm.
With Lang "dart" the emitted Types are Dart; the Info (entries and fingerprint) still comes from the TypeScript pass, so realm.json is the same file for every language and the stale-types check the server runs matches either client's fingerprint.