@dereekb/dbx-cli 13.11.18 → 13.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/firebase-api-manifest/main.js +70 -9
- package/firebase-api-manifest/package.json +1 -1
- package/firestore-indexes/src/firestore-indexes-generate.d.ts +125 -0
- package/firestore-indexes/src/firestore-model-identity-resolver.d.ts +93 -0
- package/firestore-indexes/src/firestore-query-helpers.d.ts +108 -0
- package/firestore-indexes/src/generate-firestore-indexes-cli.d.ts +94 -0
- package/firestore-indexes/src/index.d.ts +7 -0
- package/firestore-indexes/src/model-firebase-index-analyze.d.ts +68 -0
- package/firestore-indexes/src/model-firebase-index-build-manifest.d.ts +123 -0
- package/firestore-indexes/src/model-firebase-index-extract.d.ts +246 -0
- package/firestore-indexes/src/model-firebase-index-runtime.d.ts +126 -0
- package/firestore-indexes/src/model-firebase-index-scan-config-schema.d.ts +58 -0
- package/firestore-indexes/src/model-firebase-index-schema.d.ts +366 -0
- package/generate-firestore-indexes/main.js +1 -1
- package/generate-firestore-indexes/package.json +1 -1
- package/generate-mcp-manifest/main.js +1314 -0
- package/generate-mcp-manifest/package.json +6 -0
- package/generated/firebase-models.generated.d.ts +3 -0
- package/index.cjs.js +45614 -640
- package/index.esm.js +45321 -643
- package/lint-cache/main.js +32 -28
- package/lint-cache/package.json +2 -2
- package/manifest-extract/index.cjs.js +169 -4
- package/manifest-extract/index.esm.js +169 -4
- package/manifest-extract/package.json +1 -1
- package/manifest-extract/src/lib/types.d.ts +26 -1
- package/package.json +14 -10
- package/src/lib/index.d.ts +3 -0
- package/src/lib/manifest/types.d.ts +155 -0
- package/src/lib/mcp-scan/config/config-schema.d.ts +226 -0
- package/src/lib/mcp-scan/config/load-config.d.ts +63 -0
- package/src/lib/mcp-scan/index.d.ts +16 -0
- package/src/lib/mcp-scan/manifest/actions-loader.d.ts +49 -0
- package/src/lib/mcp-scan/manifest/actions-schema.d.ts +328 -0
- package/src/lib/mcp-scan/manifest/core-topics.d.ts +38 -0
- package/src/lib/mcp-scan/manifest/css-utilities-loader.d.ts +55 -0
- package/src/lib/mcp-scan/manifest/css-utilities-schema.d.ts +168 -0
- package/src/lib/mcp-scan/manifest/dbx-docs-ui-examples-loader.d.ts +33 -0
- package/src/lib/mcp-scan/manifest/dbx-docs-ui-examples-schema.d.ts +133 -0
- package/src/lib/mcp-scan/manifest/filters-loader.d.ts +61 -0
- package/src/lib/mcp-scan/manifest/filters-schema.d.ts +190 -0
- package/src/lib/mcp-scan/manifest/forge-fields-loader.d.ts +53 -0
- package/src/lib/mcp-scan/manifest/forge-fields-schema.d.ts +170 -0
- package/src/lib/mcp-scan/manifest/index.d.ts +43 -0
- package/src/lib/mcp-scan/manifest/load-actions-registry.d.ts +38 -0
- package/src/lib/mcp-scan/manifest/load-auth-registry.d.ts +82 -0
- package/src/lib/mcp-scan/manifest/load-css-utilities-registry.d.ts +67 -0
- package/src/lib/mcp-scan/manifest/load-dbx-docs-ui-examples-registry.d.ts +45 -0
- package/src/lib/mcp-scan/manifest/load-filters-registry.d.ts +69 -0
- package/src/lib/mcp-scan/manifest/load-forge-fields-registry.d.ts +70 -0
- package/src/lib/mcp-scan/manifest/load-model-firebase-index-registry.d.ts +61 -0
- package/src/lib/mcp-scan/manifest/load-model-snapshot-fields-registry.d.ts +74 -0
- package/src/lib/mcp-scan/manifest/load-pipes-registry.d.ts +69 -0
- package/src/lib/mcp-scan/manifest/load-registry.d.ts +76 -0
- package/src/lib/mcp-scan/manifest/load-tokens-registry.d.ts +69 -0
- package/src/lib/mcp-scan/manifest/load-ui-components-registry.d.ts +70 -0
- package/src/lib/mcp-scan/manifest/load-utils-registry.d.ts +73 -0
- package/src/lib/mcp-scan/manifest/loader.d.ts +120 -0
- package/src/lib/mcp-scan/manifest/manifest-loader-base.d.ts +130 -0
- package/src/lib/mcp-scan/manifest/model-firebase-index-loader.d.ts +53 -0
- package/src/lib/mcp-scan/manifest/model-snapshot-fields-loader.d.ts +54 -0
- package/src/lib/mcp-scan/manifest/model-snapshot-fields-schema.d.ts +127 -0
- package/src/lib/mcp-scan/manifest/pipes-loader.d.ts +54 -0
- package/src/lib/mcp-scan/manifest/pipes-schema.d.ts +125 -0
- package/src/lib/mcp-scan/manifest/semantic-types-schema.d.ts +108 -0
- package/src/lib/mcp-scan/manifest/tokens-loader.d.ts +55 -0
- package/src/lib/mcp-scan/manifest/tokens-schema.d.ts +116 -0
- package/src/lib/mcp-scan/manifest/ui-components-loader.d.ts +54 -0
- package/src/lib/mcp-scan/manifest/ui-components-schema.d.ts +149 -0
- package/src/lib/mcp-scan/manifest/utils-loader.d.ts +54 -0
- package/src/lib/mcp-scan/manifest/utils-schema.d.ts +120 -0
- package/src/lib/mcp-scan/registry/actions-runtime.d.ts +173 -0
- package/src/lib/mcp-scan/registry/archetypes.d.ts +235 -0
- package/src/lib/mcp-scan/registry/auth-builtin.d.ts +59 -0
- package/src/lib/mcp-scan/registry/auth-runtime.d.ts +343 -0
- package/src/lib/mcp-scan/registry/css-utilities-runtime.d.ts +133 -0
- package/src/lib/mcp-scan/registry/dbx-docs-ui-examples-runtime.d.ts +58 -0
- package/src/lib/mcp-scan/registry/downstream-models-runtime.d.ts +93 -0
- package/src/lib/mcp-scan/registry/filters-runtime.d.ts +128 -0
- package/src/lib/mcp-scan/registry/firebase-models.d.ts +387 -0
- package/src/lib/mcp-scan/registry/forge-fields.d.ts +101 -0
- package/src/lib/mcp-scan/registry/form-fields.d.ts +203 -0
- package/src/lib/mcp-scan/registry/index.d.ts +165 -0
- package/src/lib/mcp-scan/registry/model-snapshot-fields-runtime.d.ts +138 -0
- package/src/lib/mcp-scan/registry/pipes-runtime.d.ts +136 -0
- package/src/lib/mcp-scan/registry/reserved-model-folders.d.ts +29 -0
- package/src/lib/mcp-scan/registry/semantic-types.d.ts +81 -0
- package/src/lib/mcp-scan/registry/tokens-runtime.d.ts +96 -0
- package/src/lib/mcp-scan/registry/ui-components-runtime.d.ts +90 -0
- package/src/lib/mcp-scan/registry/utils-runtime.d.ts +136 -0
- package/src/lib/mcp-scan/scan/_jsdoc-tagged-export/extract-base.d.ts +245 -0
- package/src/lib/mcp-scan/scan/actions-build-manifest.d.ts +58 -0
- package/src/lib/mcp-scan/scan/actions-cli.d.ts +38 -0
- package/src/lib/mcp-scan/scan/actions-extract.d.ts +99 -0
- package/src/lib/mcp-scan/scan/actions-scan-config-schema.d.ts +42 -0
- package/src/lib/mcp-scan/scan/auth-extract.d.ts +127 -0
- package/src/lib/mcp-scan/scan/build-manifest.d.ts +76 -0
- package/src/lib/mcp-scan/scan/cli.d.ts +60 -0
- package/src/lib/mcp-scan/scan/css-utilities-build-manifest.d.ts +76 -0
- package/src/lib/mcp-scan/scan/css-utilities-cli.d.ts +36 -0
- package/src/lib/mcp-scan/scan/css-utilities-extract.d.ts +187 -0
- package/src/lib/mcp-scan/scan/css-utilities-scan-config-schema.d.ts +57 -0
- package/src/lib/mcp-scan/scan/dbx-docs-ui-examples-build-manifest.d.ts +68 -0
- package/src/lib/mcp-scan/scan/dbx-docs-ui-examples-cli.d.ts +20 -0
- package/src/lib/mcp-scan/scan/dbx-docs-ui-examples-extract.d.ts +160 -0
- package/src/lib/mcp-scan/scan/dbx-docs-ui-examples-scan-config-schema.d.ts +56 -0
- package/src/lib/mcp-scan/scan/discover-downstream-packages.d.ts +76 -0
- package/src/lib/mcp-scan/scan/discover-firebase-packages.d.ts +58 -0
- package/src/lib/mcp-scan/scan/extract-models/assemble.d.ts +105 -0
- package/src/lib/mcp-scan/scan/extract-models/collect-inherited.d.ts +22 -0
- package/src/lib/mcp-scan/scan/extract-models/find-converters.d.ts +19 -0
- package/src/lib/mcp-scan/scan/extract-models/find-enums.d.ts +19 -0
- package/src/lib/mcp-scan/scan/extract-models/find-identities.d.ts +25 -0
- package/src/lib/mcp-scan/scan/extract-models/find-interfaces.d.ts +31 -0
- package/src/lib/mcp-scan/scan/extract-models/find-model-groups.d.ts +21 -0
- package/src/lib/mcp-scan/scan/extract-models/find-service-factories.d.ts +19 -0
- package/src/lib/mcp-scan/scan/extract-models/find-sub-object-consts.d.ts +20 -0
- package/src/lib/mcp-scan/scan/extract-models/index.d.ts +74 -0
- package/src/lib/mcp-scan/scan/extract-models/infer-collection-kind.d.ts +22 -0
- package/src/lib/mcp-scan/scan/extract-models/service-factory-constants.d.ts +6 -0
- package/src/lib/mcp-scan/scan/extract-models/types.d.ts +171 -0
- package/src/lib/mcp-scan/scan/extract.d.ts +82 -0
- package/src/lib/mcp-scan/scan/filters-build-manifest.d.ts +78 -0
- package/src/lib/mcp-scan/scan/filters-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/filters-extract.d.ts +101 -0
- package/src/lib/mcp-scan/scan/filters-scan-config-schema.d.ts +56 -0
- package/src/lib/mcp-scan/scan/forge-fields-build-manifest.d.ts +78 -0
- package/src/lib/mcp-scan/scan/forge-fields-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/forge-fields-extract.d.ts +165 -0
- package/src/lib/mcp-scan/scan/forge-fields-scan-config-schema.d.ts +61 -0
- package/src/lib/mcp-scan/scan/index.d.ts +60 -0
- package/src/lib/mcp-scan/scan/model-firebase-index-cli.d.ts +22 -0
- package/src/lib/mcp-scan/scan/model-firebase-index-dispatcher-credit.d.ts +47 -0
- package/src/lib/mcp-scan/scan/model-firebase-index-reference-scan.d.ts +100 -0
- package/src/lib/mcp-scan/scan/model-snapshot-fields-build-manifest.d.ts +79 -0
- package/src/lib/mcp-scan/scan/model-snapshot-fields-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/model-snapshot-fields-extract.d.ts +115 -0
- package/src/lib/mcp-scan/scan/model-snapshot-fields-scan-config-schema.d.ts +59 -0
- package/src/lib/mcp-scan/scan/pipes-build-manifest.d.ts +78 -0
- package/src/lib/mcp-scan/scan/pipes-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/pipes-extract.d.ts +90 -0
- package/src/lib/mcp-scan/scan/pipes-scan-config-schema.d.ts +56 -0
- package/src/lib/mcp-scan/scan/scan-angular-io.d.ts +89 -0
- package/src/lib/mcp-scan/scan/scan-cli-base.d.ts +162 -0
- package/src/lib/mcp-scan/scan/scan-config-schema.d.ts +44 -0
- package/src/lib/mcp-scan/scan/ui-components-build-manifest.d.ts +78 -0
- package/src/lib/mcp-scan/scan/ui-components-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/ui-components-extract.d.ts +124 -0
- package/src/lib/mcp-scan/scan/ui-components-scan-config-schema.d.ts +62 -0
- package/src/lib/mcp-scan/scan/utils-build-manifest.d.ts +78 -0
- package/src/lib/mcp-scan/scan/utils-cli.d.ts +37 -0
- package/src/lib/mcp-scan/scan/utils-extract.d.ts +103 -0
- package/src/lib/mcp-scan/scan/utils-scan-config-schema.d.ts +57 -0
- package/test/package.json +9 -9
- package/index.cjs.default.js +0 -1
- package/index.cjs.mjs +0 -2
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form Field Registry.
|
|
3
|
+
*
|
|
4
|
+
* Canonical metadata for @dereekb/dbx-form helpers — field factories
|
|
5
|
+
* (e.g. `dbxForgeTextField`), composite builders (e.g. `dbxForgeDateRangeRow`),
|
|
6
|
+
* and layout primitives (e.g. `dbxForgeRow`). The three-tier taxonomy is
|
|
7
|
+
* documented in the `dbx__ref__dbx-forge-field` skill.
|
|
8
|
+
*
|
|
9
|
+
* The PRIMARY search index is `produces` — the output primitive each entry
|
|
10
|
+
* yields. "I need a Date", "I need a RowField" is the most common AI query
|
|
11
|
+
* shape, and the registry is small enough (<40 entries) that filtering further
|
|
12
|
+
* by tier or inspecting config properties is cheap after the primitive match.
|
|
13
|
+
*
|
|
14
|
+
* Entries are slug-keyed (`'text'`, `'date-range-row'`, `'row'`). Slugs are
|
|
15
|
+
* kebab-case and unique across all three tiers.
|
|
16
|
+
*/
|
|
17
|
+
import type { PropertyInfo } from './index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Builder tier from the form-field skill.
|
|
20
|
+
*
|
|
21
|
+
* - `field-factory` dbxForgeFieldFunction / dbxForgeMaterialFormFieldWrappedFieldFunction — registers a type
|
|
22
|
+
* - `field-derivative` pre-configured wrapper around a single field-factory — returns one field of the same shape with presets baked in; does NOT register a type
|
|
23
|
+
* - `composite-builder` plain function composing other form entries into ONE field/group — does NOT register a type
|
|
24
|
+
* - `template-builder` returns multiple related fields as an array/tuple — distinct from composite-builders, which compose into a single container
|
|
25
|
+
* - `primitive` core layout helper (row, group, array, section)
|
|
26
|
+
*/
|
|
27
|
+
export type FormTier = 'field-factory' | 'field-derivative' | 'composite-builder' | 'template-builder' | 'primitive';
|
|
28
|
+
/**
|
|
29
|
+
* Which form factory helper a field-factory entry is built with.
|
|
30
|
+
*
|
|
31
|
+
* - `unwrapped` `dbxForgeFieldFunction` (field renders its own chrome)
|
|
32
|
+
* - `material-form-field-wrapped` `dbxForgeMaterialFormFieldWrappedFieldFunction` (wrapped in mat-form-field)
|
|
33
|
+
*/
|
|
34
|
+
export type FormFieldWrapperPattern = 'unwrapped' | 'material-form-field-wrapped';
|
|
35
|
+
/**
|
|
36
|
+
* What a composite builder's naming suffix advertises it returns.
|
|
37
|
+
*
|
|
38
|
+
* - `Row` `dbxForgeXRow` → `RowField`
|
|
39
|
+
* - `Group` `dbxForgeXGroup` → `GroupField`
|
|
40
|
+
* - `Fields` `dbxForgeXFields` → `FieldDef[]`
|
|
41
|
+
* - `Field` `dbxForgeXField` → single field (composite array fields keep `Field`)
|
|
42
|
+
* - `Wrapper` `dbxForgeXWrapper` → WrapperConfig or composed layout wrapped in a toggle/expand
|
|
43
|
+
* - `Layout` `dbxForgeXLayout` → GroupField with responsive flex configuration
|
|
44
|
+
*/
|
|
45
|
+
export type FormCompositeSuffix = 'Row' | 'Group' | 'Fields' | 'Field' | 'Wrapper' | 'Layout';
|
|
46
|
+
/**
|
|
47
|
+
* Documentation of the common output primitives. `produces` on an entry is a
|
|
48
|
+
* raw `string` (entries can produce arbitrary form-model types like `'string'`,
|
|
49
|
+
* `'number'`, `'Date'`, `'T'`, `'T[]'`, `'AddressValue'`, ...). These are the
|
|
50
|
+
* canonical layout outputs that commonly show up in the catalog.
|
|
51
|
+
*/
|
|
52
|
+
export type FormLayoutPrimitive = 'RowField' | 'GroupField' | 'ArrayField' | 'SectionField' | 'FieldDef[]' | 'WrapperConfig';
|
|
53
|
+
/**
|
|
54
|
+
* Whether an entry's output is an array / collection.
|
|
55
|
+
*
|
|
56
|
+
* - `yes` entry always produces a collection (field's form value is an
|
|
57
|
+
* array, OR composite returns `FieldDef[]`).
|
|
58
|
+
* - `no` entry produces a single value / single field.
|
|
59
|
+
* - `optional` entry can be configured either way (e.g. searchable-chip in
|
|
60
|
+
* single-select vs multi-select mode).
|
|
61
|
+
*/
|
|
62
|
+
export type FormArrayOutput = 'yes' | 'no' | 'optional';
|
|
63
|
+
interface FormEntryBase {
|
|
64
|
+
/**
|
|
65
|
+
* Unique registry slug (kebab-case). Used for lookup.
|
|
66
|
+
*/
|
|
67
|
+
readonly slug: string;
|
|
68
|
+
/**
|
|
69
|
+
* Exported factory/builder function name (e.g. `'dbxForgeTextField'`).
|
|
70
|
+
*/
|
|
71
|
+
readonly factoryName: string;
|
|
72
|
+
/**
|
|
73
|
+
* PRIMARY INDEX. The output primitive this entry produces.
|
|
74
|
+
*
|
|
75
|
+
* Field factories: the form-model value type (e.g. `'string'`, `'number'`,
|
|
76
|
+
* `'boolean'`, `'Date'`, `'T'`, `'T[]'`).
|
|
77
|
+
* Composite builders: the composed return type (e.g. `'RowField'`,
|
|
78
|
+
* `'GroupField'`, `'FieldDef[]'`, `'ArrayField'`).
|
|
79
|
+
* Primitives: the layout field / wrapper type returned (`'RowField'`,
|
|
80
|
+
* `'GroupField'`, `'ArrayField'`, `'WrapperConfig'`, ...).
|
|
81
|
+
*/
|
|
82
|
+
readonly produces: string;
|
|
83
|
+
/**
|
|
84
|
+
* Whether this entry's output is an array. Complements `produces` — lets
|
|
85
|
+
* callers ask "I need a single X" vs "I need a list of X" without parsing
|
|
86
|
+
* the type string.
|
|
87
|
+
*/
|
|
88
|
+
readonly arrayOutput: FormArrayOutput;
|
|
89
|
+
/**
|
|
90
|
+
* Prose description of what the entry builds and when to reach for it.
|
|
91
|
+
*/
|
|
92
|
+
readonly description: string;
|
|
93
|
+
/**
|
|
94
|
+
* Full copy-paste-ready usage example.
|
|
95
|
+
*/
|
|
96
|
+
readonly example: string;
|
|
97
|
+
/**
|
|
98
|
+
* Smallest valid invocation.
|
|
99
|
+
*/
|
|
100
|
+
readonly minimalExample: string;
|
|
101
|
+
/**
|
|
102
|
+
* Noteworthy config properties beyond `key` / `label` / `required` (which are assumed).
|
|
103
|
+
*/
|
|
104
|
+
readonly config: Record<string, PropertyInfo>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* A field factory: registers an ng-forge field type via
|
|
108
|
+
* `dbxForgeFieldFunction` or `dbxForgeMaterialFormFieldWrappedFieldFunction`.
|
|
109
|
+
*/
|
|
110
|
+
export interface FormFieldFactoryInfo extends FormEntryBase {
|
|
111
|
+
readonly tier: 'field-factory';
|
|
112
|
+
readonly wrapperPattern: FormFieldWrapperPattern;
|
|
113
|
+
/**
|
|
114
|
+
* Underlying ng-forge dynamic-forms type string (e.g. `'input'`, `'textarea'`, `'datepicker'`, `'toggle'`, `'slider'`).
|
|
115
|
+
*/
|
|
116
|
+
readonly ngFormType: string;
|
|
117
|
+
/**
|
|
118
|
+
* TypeScript config interface name (e.g. `'DbxForgeTextFieldConfig'`).
|
|
119
|
+
*/
|
|
120
|
+
readonly configInterface: string;
|
|
121
|
+
/**
|
|
122
|
+
* Generic signature if the factory accepts type parameters (e.g. `'<T = unknown>'`).
|
|
123
|
+
*/
|
|
124
|
+
readonly generic?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A field-derivative: pre-configured wrapper around a single field-factory.
|
|
128
|
+
* Returns one field of the same shape as its base factory, with presets baked in.
|
|
129
|
+
* Does not register a new ng-forge type.
|
|
130
|
+
*/
|
|
131
|
+
export interface FormFieldDerivativeInfo extends FormEntryBase {
|
|
132
|
+
readonly tier: 'field-derivative';
|
|
133
|
+
/**
|
|
134
|
+
* TypeScript config interface name (e.g. `'DbxForgeEmailFieldConfig'`).
|
|
135
|
+
*/
|
|
136
|
+
readonly configInterface: string;
|
|
137
|
+
/**
|
|
138
|
+
* Generic signature if the derivative accepts type parameters.
|
|
139
|
+
*/
|
|
140
|
+
readonly generic?: string;
|
|
141
|
+
/**
|
|
142
|
+
* Slug of the base field-factory (or other registered entry) this derivative wraps.
|
|
143
|
+
*/
|
|
144
|
+
readonly derivedFromSlug: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* A composite builder: composes other form entries into a layout. Does not
|
|
148
|
+
* register a new ng-forge type.
|
|
149
|
+
*/
|
|
150
|
+
export interface FormCompositeBuilderInfo extends FormEntryBase {
|
|
151
|
+
readonly tier: 'composite-builder';
|
|
152
|
+
/**
|
|
153
|
+
* Which suffix the builder uses — mirrors its return shape.
|
|
154
|
+
*/
|
|
155
|
+
readonly suffix: FormCompositeSuffix;
|
|
156
|
+
/**
|
|
157
|
+
* TypeScript config interface name (descriptive, not `DbxForgeFieldFunctionDef`-based).
|
|
158
|
+
*/
|
|
159
|
+
readonly configInterface: string;
|
|
160
|
+
/**
|
|
161
|
+
* Slugs of other form entries this composite composes from.
|
|
162
|
+
*/
|
|
163
|
+
readonly composesFromSlugs: readonly string[];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* A template-builder: returns multiple related fields as an array or tuple.
|
|
167
|
+
* Distinct from composite-builders, which return one composed field/group.
|
|
168
|
+
*/
|
|
169
|
+
export interface FormFieldTemplateInfo extends FormEntryBase {
|
|
170
|
+
readonly tier: 'template-builder';
|
|
171
|
+
/**
|
|
172
|
+
* TypeScript config interface name.
|
|
173
|
+
*/
|
|
174
|
+
readonly configInterface: string;
|
|
175
|
+
/**
|
|
176
|
+
* Slugs of the fields this template returns, in declaration order.
|
|
177
|
+
*/
|
|
178
|
+
readonly returnsSlugs: readonly string[];
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* A layout primitive: core library helper that composites wrap (e.g. `dbxForgeRow`).
|
|
182
|
+
*/
|
|
183
|
+
export interface FormPrimitiveInfo extends FormEntryBase {
|
|
184
|
+
readonly tier: 'primitive';
|
|
185
|
+
/**
|
|
186
|
+
* Layout field type this primitive returns. Accepts any string for flexibility; common values enumerated in {@link FormLayoutPrimitive}.
|
|
187
|
+
*/
|
|
188
|
+
readonly returns: string;
|
|
189
|
+
/**
|
|
190
|
+
* TypeScript config interface name if the primitive accepts a config object.
|
|
191
|
+
*/
|
|
192
|
+
readonly configInterface?: string;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Any entry in the form registry.
|
|
196
|
+
*/
|
|
197
|
+
export type FormFieldInfo = FormFieldFactoryInfo | FormFieldDerivativeInfo | FormCompositeBuilderInfo | FormFieldTemplateInfo | FormPrimitiveInfo;
|
|
198
|
+
/**
|
|
199
|
+
* Presentation order for tiers in listings.
|
|
200
|
+
*/
|
|
201
|
+
export declare const FORM_TIER_ORDER: readonly FormTier[];
|
|
202
|
+
export declare const FORM_FIELDS: readonly FormFieldInfo[];
|
|
203
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry barrel for dbx-components domains.
|
|
3
|
+
*
|
|
4
|
+
* Each domain exports typed metadata constants (plain TypeScript, no state)
|
|
5
|
+
* plus pure getter functions. Domains are populated incrementally — see the
|
|
6
|
+
* implementation plan in the feat/dbx-components-mcp branch.
|
|
7
|
+
*
|
|
8
|
+
* Planned domains:
|
|
9
|
+
* - form-fields field factories, composite builders, and layout primitives
|
|
10
|
+
* - firebase-models model identity, data interfaces, converters, collection patterns
|
|
11
|
+
* - semantic-types domain-meaningful type aliases tagged with @semanticType (loaded at runtime)
|
|
12
|
+
* - model-pointers lightweight source-file pointers used by the decode tool
|
|
13
|
+
* - server-actions callable / on-call / scheduled / event pipeline patterns
|
|
14
|
+
* - component-patterns action, list, and store patterns
|
|
15
|
+
* - conventions TypeScript coding standards and semantic type catalog
|
|
16
|
+
*/
|
|
17
|
+
export { createSemanticTypeRegistry, createSemanticTypeRegistryFromEntries, EMPTY_SEMANTIC_TYPE_REGISTRY } from './semantic-types.js';
|
|
18
|
+
export type { SemanticTypeRegistry } from './semantic-types.js';
|
|
19
|
+
export interface PropertyInfo {
|
|
20
|
+
readonly name: string;
|
|
21
|
+
readonly type: string;
|
|
22
|
+
readonly description: string;
|
|
23
|
+
readonly required: boolean;
|
|
24
|
+
readonly default?: unknown;
|
|
25
|
+
}
|
|
26
|
+
export { FORM_FIELDS, FORM_TIER_ORDER } from './form-fields.js';
|
|
27
|
+
export type { FormFieldInfo, FormFieldFactoryInfo, FormFieldDerivativeInfo, FormCompositeBuilderInfo, FormFieldTemplateInfo, FormPrimitiveInfo, FormTier, FormFieldWrapperPattern, FormCompositeSuffix, FormLayoutPrimitive, FormArrayOutput } from './form-fields.js';
|
|
28
|
+
export { ACTION_ROLE_ORDER, createActionRegistry, createActionRegistryFromEntries, EMPTY_ACTION_REGISTRY, toActionEntryInfo } from './actions-runtime.js';
|
|
29
|
+
export type { ActionRegistry, ActionEntryInfo, ActionDirectiveInfo, ActionStoreInfo, ActionStateInfo, ActionEntryRole, ActionInputInfo, ActionOutputInfo, ActionMethodInfo, ActionObservableInfo } from './actions-runtime.js';
|
|
30
|
+
export { createUiComponentRegistry, createUiComponentRegistryFromEntries, EMPTY_UI_COMPONENT_REGISTRY } from './ui-components-runtime.js';
|
|
31
|
+
export type { UiComponentRegistry } from './ui-components-runtime.js';
|
|
32
|
+
export { createCssUtilityRegistry, createCssUtilityRegistryFromEntries, EMPTY_CSS_UTILITY_REGISTRY, parseDeclarations } from './css-utilities-runtime.js';
|
|
33
|
+
export type { CssUtilityRegistry, ScoredCssUtilityMatch, SearchByDeclarationsOptions, FindByIntentOptions } from './css-utilities-runtime.js';
|
|
34
|
+
export { createForgeFieldRegistry, createForgeFieldRegistryFromEntries, EMPTY_FORGE_FIELD_REGISTRY, toFormFieldInfo } from './forge-fields.js';
|
|
35
|
+
export type { ForgeFieldRegistry } from './forge-fields.js';
|
|
36
|
+
export { createPipeRegistry, createPipeRegistryFromEntries, EMPTY_PIPE_REGISTRY, PIPE_CATEGORY_ORDER } from './pipes-runtime.js';
|
|
37
|
+
export type { PipeRegistry, PipeEntryInfo, PipeCategory } from './pipes-runtime.js';
|
|
38
|
+
export { createUtilRegistry, createUtilRegistryFromEntries, EMPTY_UTIL_REGISTRY } from './utils-runtime.js';
|
|
39
|
+
export type { UtilRegistry, UtilEntryInfo } from './utils-runtime.js';
|
|
40
|
+
export { createTokenRegistry, createTokenRegistryFromEntries, EMPTY_TOKEN_REGISTRY } from './tokens-runtime.js';
|
|
41
|
+
export type { TokenRegistry } from './tokens-runtime.js';
|
|
42
|
+
export { createModelSnapshotFieldRegistry, createModelSnapshotFieldRegistryFromEntries, EMPTY_MODEL_SNAPSHOT_FIELD_REGISTRY } from './model-snapshot-fields-runtime.js';
|
|
43
|
+
export type { ModelSnapshotFieldRegistry, ModelSnapshotFieldEntryInfo } from './model-snapshot-fields-runtime.js';
|
|
44
|
+
export { createDbxDocsUiExamplesRegistry, createDbxDocsUiExamplesRegistryFromEntries, EMPTY_DBX_DOCS_UI_EXAMPLES_REGISTRY } from './dbx-docs-ui-examples-runtime.js';
|
|
45
|
+
export type { DbxDocsUiExamplesRegistry } from './dbx-docs-ui-examples-runtime.js';
|
|
46
|
+
export { FILTER_KIND_ORDER, createFilterRegistry, createFilterRegistryFromEntries, EMPTY_FILTER_REGISTRY, toFilterEntryInfo } from './filters-runtime.js';
|
|
47
|
+
export type { FilterRegistry, FilterEntryInfo, FilterEntryInputInfo, FilterKind } from './filters-runtime.js';
|
|
48
|
+
export { createAuthRegistryFromEntries, EMPTY_AUTH_REGISTRY } from './auth-runtime.js';
|
|
49
|
+
export type { AuthRegistry, AuthRoleInfo, AuthClaimInfo, AuthClaimRoleMappingInfo, AuthScopeInfo, AuthScopeEnforcementInfo, AuthAppInfo, AuthEntrySource, CreateAuthRegistryFromEntriesInput } from './auth-runtime.js';
|
|
50
|
+
export { BUILTIN_AUTH_ROLES, BUILTIN_AUTH_CLAIMS, BUILTIN_AUTH_SCOPES, WORKSPACE_AUTH_CLAIMS, WORKSPACE_AUTH_APPS } from './auth-builtin.js';
|
|
51
|
+
import { type FirebaseModel, type FirebaseModelGroup } from './firebase-models.js';
|
|
52
|
+
export { FIREBASE_MODELS, FIREBASE_MODEL_GROUPS } from './firebase-models.js';
|
|
53
|
+
export type { FirebaseModel, FirebaseModelGroup, FirebaseEnum, FirebaseEnumValue, FirebaseField, FirebaseSubObject, FirestoreCollectionKind } from './firebase-models.js';
|
|
54
|
+
export { RESERVED_MODEL_FOLDERS } from './reserved-model-folders.js';
|
|
55
|
+
export type { ReservedModelFolder } from './reserved-model-folders.js';
|
|
56
|
+
export { MODEL_ARCHETYPES, MODEL_ARCHETYPE_SYNC_MODES, MODEL_ARCHETYPE_ADDON_SLUGS, getModelArchetypeBySlug, resolveModelArchetype, getModelArchetypesBySyncMode, getModelArchetypesByCollectionKind, getModelArchetypesByAxisValue } from './archetypes.js';
|
|
57
|
+
export type { ModelArchetypeInfo, ModelArchetypeSlug, ModelArchetypeSyncMode, ModelArchetypeDocIdSource, ModelArchetypeParentRelation, ModelArchetypeUserRelation, ModelArchetypeMutability, ModelArchetypeSingleItemSubPurpose, ModelArchetypeDenormalisedAggregateKeying, ModelArchetypeExpectedAnswers } from './archetypes.js';
|
|
58
|
+
export { getDownstreamCatalog, clearDownstreamCatalogCache } from './downstream-models-runtime.js';
|
|
59
|
+
export type { DownstreamCatalog, DownstreamCatalogError, GetDownstreamCatalogInput } from './downstream-models-runtime.js';
|
|
60
|
+
/**
|
|
61
|
+
* Returns every registered Firebase model entry.
|
|
62
|
+
*
|
|
63
|
+
* @returns The full Firebase model registry list in declaration order.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getFirebaseModels(): readonly FirebaseModel[];
|
|
66
|
+
/**
|
|
67
|
+
* Looks up a model by its interface name (`'StorageFile'`) or identity const
|
|
68
|
+
* (`'storageFileIdentity'`). Case-insensitive.
|
|
69
|
+
*
|
|
70
|
+
* @param key - The interface name, identity const, or model type to resolve.
|
|
71
|
+
* @returns The matching model entry, or `undefined` when no candidate matches.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getFirebaseModel(key: string): FirebaseModel | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* PRIMARY INDEX. Returns the model with the given collection prefix
|
|
76
|
+
* (`'sf'` → StorageFile). Case-insensitive exact match.
|
|
77
|
+
*
|
|
78
|
+
* @param prefix - The short collection prefix used by the model.
|
|
79
|
+
* @returns The matching model entry, or `undefined` when no model uses the prefix.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getFirebaseModelByPrefix(prefix: string): FirebaseModel | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Returns every subcollection model whose parent identity matches
|
|
84
|
+
* `parentIdentityConst` (e.g. `'notificationBoxIdentity'`).
|
|
85
|
+
*
|
|
86
|
+
* @param parentIdentityConst - Identity const of the parent collection to scan beneath.
|
|
87
|
+
* @returns Each subcollection model nested under the given parent, in registry order.
|
|
88
|
+
*/
|
|
89
|
+
export declare function getFirebaseSubcollectionsOf(parentIdentityConst: string): readonly FirebaseModel[];
|
|
90
|
+
/**
|
|
91
|
+
* Returns every model whose Firestore document id IS a Firebase Auth user uid
|
|
92
|
+
* — i.e. the interface (or one of its same-file ancestors) extends
|
|
93
|
+
* `UserRelatedById`. Useful for enumerating the per-user document set when
|
|
94
|
+
* reasoning about ownership and permissions.
|
|
95
|
+
*
|
|
96
|
+
* @returns Each user-keyed model in registry order.
|
|
97
|
+
*/
|
|
98
|
+
export declare function getFirebaseUserKeyedByIdModels(): readonly FirebaseModel[];
|
|
99
|
+
/**
|
|
100
|
+
* Returns every model that carries an explicit `uid` field referencing a
|
|
101
|
+
* Firebase Auth user — i.e. the interface (or one of its same-file
|
|
102
|
+
* ancestors) extends `UserRelated`. Independent of
|
|
103
|
+
* {@link getFirebaseUserKeyedByIdModels}: a model can appear in either,
|
|
104
|
+
* both, or neither list.
|
|
105
|
+
*
|
|
106
|
+
* @returns Each user-related model in registry order.
|
|
107
|
+
*/
|
|
108
|
+
export declare function getFirebaseUserRelatedModels(): readonly FirebaseModel[];
|
|
109
|
+
/**
|
|
110
|
+
* Returns every model whose Firestore document id IS a region key (interface
|
|
111
|
+
* extends `RegionRelatedById`).
|
|
112
|
+
*
|
|
113
|
+
* @returns Each region-keyed model in registry order.
|
|
114
|
+
*/
|
|
115
|
+
export declare function getFirebaseRegionKeyedByIdModels(): readonly FirebaseModel[];
|
|
116
|
+
/**
|
|
117
|
+
* Returns every model whose Firestore document id IS a district key (interface
|
|
118
|
+
* extends `DistrictRelatedById`).
|
|
119
|
+
*
|
|
120
|
+
* @returns Each district-keyed model in registry order.
|
|
121
|
+
*/
|
|
122
|
+
export declare function getFirebaseDistrictKeyedByIdModels(): readonly FirebaseModel[];
|
|
123
|
+
/**
|
|
124
|
+
* Returns every model whose Firestore document id IS an external vendor id
|
|
125
|
+
* (interface extends `ExternalRelatedById`).
|
|
126
|
+
*
|
|
127
|
+
* @returns Each external-id-keyed model in registry order.
|
|
128
|
+
*/
|
|
129
|
+
export declare function getFirebaseExternalIdKeyedByIdModels(): readonly FirebaseModel[];
|
|
130
|
+
/**
|
|
131
|
+
* Returns every model whose Firestore document id IS a temporal bucket code
|
|
132
|
+
* (year-week / year-month / …).
|
|
133
|
+
*
|
|
134
|
+
* @returns Each bucket-keyed model in registry order.
|
|
135
|
+
*/
|
|
136
|
+
export declare function getFirebaseBucketKeyedByIdModels(): readonly FirebaseModel[];
|
|
137
|
+
/**
|
|
138
|
+
* Returns every model whose `archetype` matches the given slug. Used by
|
|
139
|
+
* `dbx_model_archetype_search` peer search.
|
|
140
|
+
*
|
|
141
|
+
* @param archetype - The archetype slug to filter by.
|
|
142
|
+
* @returns Each matching model in registry order.
|
|
143
|
+
*/
|
|
144
|
+
export declare function getFirebaseModelsByArchetype(archetype: string): readonly FirebaseModel[];
|
|
145
|
+
/**
|
|
146
|
+
* Returns the catalog of distinct collection prefixes in the registry.
|
|
147
|
+
*
|
|
148
|
+
* @returns The unique set of collection prefixes, sorted alphabetically.
|
|
149
|
+
*/
|
|
150
|
+
export declare function getFirebasePrefixCatalog(): readonly string[];
|
|
151
|
+
/**
|
|
152
|
+
* Returns every registered Firebase model-group container (e.g.
|
|
153
|
+
* `NotificationFirestoreCollections`).
|
|
154
|
+
*
|
|
155
|
+
* @returns The full model-group registry list in declaration order.
|
|
156
|
+
*/
|
|
157
|
+
export declare function getFirebaseModelGroups(): readonly FirebaseModelGroup[];
|
|
158
|
+
/**
|
|
159
|
+
* Looks up a model group by its `<Name>FirestoreCollections` class/interface
|
|
160
|
+
* name (e.g. `'NotificationFirestoreCollections'`). Case-insensitive.
|
|
161
|
+
*
|
|
162
|
+
* @param name - The group container name to resolve.
|
|
163
|
+
* @returns The matching group entry, or `undefined` when no group matches.
|
|
164
|
+
*/
|
|
165
|
+
export declare function getFirebaseModelGroup(name: string): FirebaseModelGroup | undefined;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-snapshot-fields runtime registry wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the raw {@link LoadModelSnapshotFieldManifestsResult} produced by
|
|
5
|
+
* the loader with domain-friendly accessors so the lookup/search tools and
|
|
6
|
+
* the registry resource don't have to walk Maps directly.
|
|
7
|
+
*
|
|
8
|
+
* The registry is loaded once at server startup and passed into the tool
|
|
9
|
+
* factories. Tests can construct a registry from any entry array via
|
|
10
|
+
* {@link createModelSnapshotFieldRegistryFromEntries} to drive the tools
|
|
11
|
+
* without touching disk.
|
|
12
|
+
*/
|
|
13
|
+
import type { LoadModelSnapshotFieldManifestsResult } from '../manifest/model-snapshot-fields-loader.js';
|
|
14
|
+
import type { ModelSnapshotFieldEntry } from '../manifest/model-snapshot-fields-schema.js';
|
|
15
|
+
/**
|
|
16
|
+
* Closed kind vocabulary describing the shape of one snapshot-field entry.
|
|
17
|
+
*/
|
|
18
|
+
export type ModelSnapshotFieldKind = 'factory' | 'const';
|
|
19
|
+
/**
|
|
20
|
+
* One documented parameter of a factory snapshot field.
|
|
21
|
+
*/
|
|
22
|
+
export interface ModelSnapshotFieldParamInfo {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly type: string;
|
|
25
|
+
readonly description: string;
|
|
26
|
+
readonly optional: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* One curated snapshot-field entry surfaced through the
|
|
30
|
+
* `dbx_model_snapshot_field_*` tools.
|
|
31
|
+
*
|
|
32
|
+
* Mirrors {@link ModelSnapshotFieldEntry} but normalises optional manifest
|
|
33
|
+
* fields to empty arrays / safe defaults so callers (lookup, search,
|
|
34
|
+
* resources) don't have to defensively branch.
|
|
35
|
+
*/
|
|
36
|
+
export interface ModelSnapshotFieldEntryInfo {
|
|
37
|
+
readonly slug: string;
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly kind: ModelSnapshotFieldKind;
|
|
40
|
+
readonly category: string;
|
|
41
|
+
readonly module: string;
|
|
42
|
+
readonly subpath: string;
|
|
43
|
+
readonly signature: string;
|
|
44
|
+
readonly description: string;
|
|
45
|
+
readonly optional: boolean;
|
|
46
|
+
readonly params: readonly ModelSnapshotFieldParamInfo[];
|
|
47
|
+
readonly returns: string;
|
|
48
|
+
readonly tags: readonly string[];
|
|
49
|
+
readonly example: string;
|
|
50
|
+
readonly relatedSlugs: readonly string[];
|
|
51
|
+
readonly skillRefs: readonly string[];
|
|
52
|
+
readonly deprecated: boolean | string;
|
|
53
|
+
readonly since: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Domain-friendly read API over a merged model-snapshot-fields manifest set.
|
|
57
|
+
* All accessors return readonly arrays preserving the order the manifests
|
|
58
|
+
* declared their entries (manifests are walked in source order).
|
|
59
|
+
*/
|
|
60
|
+
export interface ModelSnapshotFieldRegistry {
|
|
61
|
+
readonly all: readonly ModelSnapshotFieldEntryInfo[];
|
|
62
|
+
readonly loadedSources: readonly string[];
|
|
63
|
+
readonly categories: readonly string[];
|
|
64
|
+
readonly modules: readonly string[];
|
|
65
|
+
/**
|
|
66
|
+
* Returns the entry whose slug matches `slug` exactly. Slugs are unique
|
|
67
|
+
* across manifests (collisions emit a loader warning and the
|
|
68
|
+
* second-loaded entry wins).
|
|
69
|
+
*/
|
|
70
|
+
findBySlug(slug: string): ModelSnapshotFieldEntryInfo | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the entry whose exported identifier matches `name`. Lookup is
|
|
73
|
+
* case-sensitive — most snapshot-field names are camelCase.
|
|
74
|
+
*/
|
|
75
|
+
findByName(name: string): ModelSnapshotFieldEntryInfo | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the entry whose exported identifier matches `name`
|
|
78
|
+
* case-insensitively. Falls back to the case-sensitive path first to
|
|
79
|
+
* keep camelCase hits prioritised.
|
|
80
|
+
*/
|
|
81
|
+
findByNameInsensitive(name: string): ModelSnapshotFieldEntryInfo | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Returns every entry whose `category` field matches `category` exactly,
|
|
84
|
+
* in registry order.
|
|
85
|
+
*/
|
|
86
|
+
findByCategory(category: string): readonly ModelSnapshotFieldEntryInfo[];
|
|
87
|
+
/**
|
|
88
|
+
* Returns every entry whose `module` field matches `module` exactly, in
|
|
89
|
+
* registry order.
|
|
90
|
+
*/
|
|
91
|
+
findByModule(module: string): readonly ModelSnapshotFieldEntryInfo[];
|
|
92
|
+
/**
|
|
93
|
+
* Returns every entry whose `tags` array includes `tag` (case-sensitive,
|
|
94
|
+
* tags are stored lowercased), in registry order.
|
|
95
|
+
*/
|
|
96
|
+
findByTag(tag: string): readonly ModelSnapshotFieldEntryInfo[];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Builds a {@link ModelSnapshotFieldRegistry} from a loader result.
|
|
100
|
+
*
|
|
101
|
+
* @param loaded - The merged registry returned by `loadModelSnapshotFieldManifests`
|
|
102
|
+
* @returns A domain-friendly read API over the merged entries.
|
|
103
|
+
*
|
|
104
|
+
* @__NO_SIDE_EFFECTS__
|
|
105
|
+
*/
|
|
106
|
+
export declare function createModelSnapshotFieldRegistry(loaded: LoadModelSnapshotFieldManifestsResult): ModelSnapshotFieldRegistry;
|
|
107
|
+
/**
|
|
108
|
+
* Builds a {@link ModelSnapshotFieldRegistry} from a raw
|
|
109
|
+
* {@link ModelSnapshotFieldEntryInfo} array. Used by tests that need to
|
|
110
|
+
* drive the tools without going through the loader pipeline.
|
|
111
|
+
*
|
|
112
|
+
* @param input - The entries plus the source labels to advertise.
|
|
113
|
+
* @param input.entries - The full entry list.
|
|
114
|
+
* @param input.loadedSources - Source labels reported via `registry.loadedSources`
|
|
115
|
+
* @returns A domain-friendly read API over the supplied entries.
|
|
116
|
+
*
|
|
117
|
+
* @__NO_SIDE_EFFECTS__
|
|
118
|
+
*/
|
|
119
|
+
export declare function createModelSnapshotFieldRegistryFromEntries(input: {
|
|
120
|
+
readonly entries: readonly ModelSnapshotFieldEntryInfo[];
|
|
121
|
+
readonly loadedSources: readonly string[];
|
|
122
|
+
}): ModelSnapshotFieldRegistry;
|
|
123
|
+
/**
|
|
124
|
+
* Empty registry suitable as a default when the server has no
|
|
125
|
+
* model-snapshot-fields manifest sources to load. Tools wired against this
|
|
126
|
+
* registry behave like a registry that loaded successfully with zero
|
|
127
|
+
* entries.
|
|
128
|
+
*/
|
|
129
|
+
export declare const EMPTY_MODEL_SNAPSHOT_FIELD_REGISTRY: ModelSnapshotFieldRegistry;
|
|
130
|
+
/**
|
|
131
|
+
* Converts a manifest entry into the {@link ModelSnapshotFieldEntryInfo}
|
|
132
|
+
* shape the lookup/search tools consume. Optional manifest fields fall
|
|
133
|
+
* back to safe defaults so a partially-populated entry still renders cleanly.
|
|
134
|
+
*
|
|
135
|
+
* @param entry - The manifest entry to convert.
|
|
136
|
+
* @returns The matching ModelSnapshotFieldEntryInfo.
|
|
137
|
+
*/
|
|
138
|
+
export declare function toModelSnapshotFieldEntryInfo(entry: ModelSnapshotFieldEntry): ModelSnapshotFieldEntryInfo;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipes runtime registry wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the raw {@link LoadPipeManifestsResult} produced by the loader with
|
|
5
|
+
* domain-friendly accessors so the lookup tool and the registry resource
|
|
6
|
+
* don't have to walk Maps directly.
|
|
7
|
+
*
|
|
8
|
+
* The registry is loaded once at server startup and passed into the tool
|
|
9
|
+
* factories. Tests can construct a registry from any entry array via
|
|
10
|
+
* {@link createPipeRegistryFromEntries} to drive the tool without touching
|
|
11
|
+
* disk.
|
|
12
|
+
*
|
|
13
|
+
* Manifest entries (flat, JSON-friendly shape) are converted into the
|
|
14
|
+
* `PipeEntryInfo` shape historically exposed by `tools/data/pipe-entries.ts`.
|
|
15
|
+
* The lookup tool keeps consuming that shape so this module is the only seam
|
|
16
|
+
* that changed when the hand-written entries were deleted.
|
|
17
|
+
*/
|
|
18
|
+
import type { LoadPipeManifestsResult } from '../manifest/pipes-loader.js';
|
|
19
|
+
import type { PipeEntry } from '../manifest/pipes-schema.js';
|
|
20
|
+
/**
|
|
21
|
+
* Browse-friendly category grouping. Mirrors the on-disk folder layout of
|
|
22
|
+
* `packages/dbx-core/src/lib/pipe/` and the `category` field on every
|
|
23
|
+
* manifest entry.
|
|
24
|
+
*/
|
|
25
|
+
export type PipeCategory = 'value' | 'date' | 'async' | 'misc';
|
|
26
|
+
/**
|
|
27
|
+
* Whether the pipe is `pure: true` (default — runs only when the reference
|
|
28
|
+
* to its inputs change) or `pure: false` (runs on every change detection).
|
|
29
|
+
*/
|
|
30
|
+
export type PipePurity = 'pure' | 'impure';
|
|
31
|
+
/**
|
|
32
|
+
* One documented argument supplied to the pipe `transform()` method on top
|
|
33
|
+
* of the piped value (e.g. `{{ value | dollarAmount:'N/A' }}` — `'N/A'` is
|
|
34
|
+
* the `defaultIfNull` argument).
|
|
35
|
+
*/
|
|
36
|
+
export interface PipeEntryArgInfo {
|
|
37
|
+
readonly name: string;
|
|
38
|
+
readonly type: string;
|
|
39
|
+
readonly description: string;
|
|
40
|
+
readonly required: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* One curated pipe entry surfaced through `dbx_pipe_lookup`. Mirrors the
|
|
44
|
+
* legacy hand-written shape so the lookup tool didn't have to be rewritten
|
|
45
|
+
* when the manifest pipeline replaced the inline data table.
|
|
46
|
+
*/
|
|
47
|
+
export interface PipeEntryInfo {
|
|
48
|
+
readonly slug: string;
|
|
49
|
+
readonly category: PipeCategory;
|
|
50
|
+
readonly pipeName: string;
|
|
51
|
+
readonly className: string;
|
|
52
|
+
readonly module: string;
|
|
53
|
+
readonly inputType: string;
|
|
54
|
+
readonly outputType: string;
|
|
55
|
+
readonly purity: PipePurity;
|
|
56
|
+
readonly description: string;
|
|
57
|
+
readonly args: readonly PipeEntryArgInfo[];
|
|
58
|
+
readonly relatedSlugs: readonly string[];
|
|
59
|
+
readonly skillRefs: readonly string[];
|
|
60
|
+
readonly example: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Domain-friendly read API over a merged pipes manifest set. All accessors
|
|
64
|
+
* return readonly arrays preserving the order the manifests declared their
|
|
65
|
+
* entries (manifests are walked in source order).
|
|
66
|
+
*/
|
|
67
|
+
export interface PipeRegistry {
|
|
68
|
+
readonly all: readonly PipeEntryInfo[];
|
|
69
|
+
readonly loadedSources: readonly string[];
|
|
70
|
+
readonly categories: readonly PipeCategory[];
|
|
71
|
+
/**
|
|
72
|
+
* Returns the entry whose slug matches `slug` exactly. Slugs are unique
|
|
73
|
+
* across manifests (collisions emit a loader warning and the second-loaded
|
|
74
|
+
* entry wins).
|
|
75
|
+
*/
|
|
76
|
+
findBySlug(slug: string): PipeEntryInfo | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Returns the entry whose Angular pipe name matches `pipeName` (case
|
|
79
|
+
* sensitive — Angular pipe names are camelCase).
|
|
80
|
+
*/
|
|
81
|
+
findByPipeName(pipeName: string): PipeEntryInfo | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the entry whose TypeScript class name matches `className`
|
|
84
|
+
* (case-insensitive).
|
|
85
|
+
*/
|
|
86
|
+
findByClassName(className: string): PipeEntryInfo | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Returns every entry whose `category` field matches `category` exactly,
|
|
89
|
+
* in registry order.
|
|
90
|
+
*/
|
|
91
|
+
findByCategory(category: PipeCategory): readonly PipeEntryInfo[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stable rendering order for category buckets in the catalog view.
|
|
95
|
+
*/
|
|
96
|
+
export declare const PIPE_CATEGORY_ORDER: readonly PipeCategory[];
|
|
97
|
+
/**
|
|
98
|
+
* Builds a {@link PipeRegistry} from a loader result.
|
|
99
|
+
*
|
|
100
|
+
* @param loaded - The merged registry returned by `loadPipeManifests`
|
|
101
|
+
* @returns A domain-friendly read API over the merged entries.
|
|
102
|
+
*
|
|
103
|
+
* @__NO_SIDE_EFFECTS__
|
|
104
|
+
*/
|
|
105
|
+
export declare function createPipeRegistry(loaded: LoadPipeManifestsResult): PipeRegistry;
|
|
106
|
+
/**
|
|
107
|
+
* Builds a {@link PipeRegistry} from a raw {@link PipeEntryInfo} array. Used
|
|
108
|
+
* by tests that need to drive the tool without going through the loader
|
|
109
|
+
* pipeline.
|
|
110
|
+
*
|
|
111
|
+
* @param input - The entries plus the source labels to advertise.
|
|
112
|
+
* @param input.entries - The full entry list.
|
|
113
|
+
* @param input.loadedSources - Source labels reported via `registry.loadedSources`
|
|
114
|
+
* @returns A domain-friendly read API over the supplied entries.
|
|
115
|
+
*
|
|
116
|
+
* @__NO_SIDE_EFFECTS__
|
|
117
|
+
*/
|
|
118
|
+
export declare function createPipeRegistryFromEntries(input: {
|
|
119
|
+
readonly entries: readonly PipeEntryInfo[];
|
|
120
|
+
readonly loadedSources: readonly string[];
|
|
121
|
+
}): PipeRegistry;
|
|
122
|
+
/**
|
|
123
|
+
* Empty registry suitable as a default when the server has no pipes manifest
|
|
124
|
+
* sources to load. Tools wired against this registry behave like a registry
|
|
125
|
+
* that loaded successfully with zero entries.
|
|
126
|
+
*/
|
|
127
|
+
export declare const EMPTY_PIPE_REGISTRY: PipeRegistry;
|
|
128
|
+
/**
|
|
129
|
+
* Converts a manifest entry into the {@link PipeEntryInfo} shape the lookup
|
|
130
|
+
* tool consumes. Optional manifest fields fall back to safe defaults so a
|
|
131
|
+
* partially-populated entry still renders cleanly.
|
|
132
|
+
*
|
|
133
|
+
* @param entry - The manifest entry to convert.
|
|
134
|
+
* @returns The matching PipeEntryInfo.
|
|
135
|
+
*/
|
|
136
|
+
export declare function toPipeEntryInfo(entry: PipeEntry): PipeEntryInfo;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserved model-folder names used by both scanners (skip these folders
|
|
3
|
+
* during canonical extraction) and the `dbx_validate_model_folder` validator
|
|
4
|
+
* (emit a warning naming the dedicated validator instead of running the
|
|
5
|
+
* 5-file structural rules).
|
|
6
|
+
*
|
|
7
|
+
* Canonical home so the scan side does not need to reach back into the
|
|
8
|
+
* dbx-components-mcp `tools/` tree.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Descriptor for a reserved model-folder name — one that the validator
|
|
12
|
+
* recognizes but deliberately skips because the folder either follows a
|
|
13
|
+
* distinct layout (e.g. `system/`) or is an extension of an upstream
|
|
14
|
+
* group imported from `@dereekb/firebase` (e.g. `notification/`,
|
|
15
|
+
* `storagefile/`). The emitted warning points the caller at the
|
|
16
|
+
* dedicated validator for that group.
|
|
17
|
+
*/
|
|
18
|
+
export interface ReservedModelFolder {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly reason: string;
|
|
21
|
+
readonly recommendedTool: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Folder names reserved from the canonical 5-file check. The validator
|
|
25
|
+
* emits a `RESERVED_MODEL_FOLDER` warning naming the
|
|
26
|
+
* {@link ReservedModelFolder.recommendedTool} instead of running
|
|
27
|
+
* structural rules.
|
|
28
|
+
*/
|
|
29
|
+
export declare const RESERVED_MODEL_FOLDERS: readonly ReservedModelFolder[];
|