firebase-contract 0.1.0-rc.14 → 0.1.0-rc.15
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/README.md +43 -4
- package/dist/lib/_internal/generators/firestore/firestore-projection-generator.d.ts.map +1 -1
- package/dist/lib/_internal/generators/firestore/firestore-projection-generator.js +3 -20
- package/dist/lib/_internal/generators/firestore/firestore-split-generator.d.ts.map +1 -1
- package/dist/lib/_internal/generators/firestore/firestore-split-generator.js +66 -44
- package/dist/lib/_internal/generators/support/split.d.ts.map +1 -1
- package/dist/lib/_internal/generators/support/split.js +2 -1
- package/dist/lib/_internal/generators/typescript/typescript-generator.d.ts.map +1 -1
- package/dist/lib/_internal/generators/typescript/typescript-generator.js +4 -2
- package/dist/lib/_internal/generators/zod/zod-generator.d.ts.map +1 -1
- package/dist/lib/_internal/generators/zod/zod-generator.js +2 -1
- package/dist/lib/_internal/ir/build-ir.d.ts.map +1 -1
- package/dist/lib/_internal/ir/build-ir.js +31 -1
- package/dist/lib/_internal/ir/ir.d.ts +18 -4
- package/dist/lib/_internal/ir/ir.d.ts.map +1 -1
- package/dist/lib/_internal/ir/ir.js +1 -0
- package/dist/lib/_internal/parser/parse.d.ts.map +1 -1
- package/dist/lib/_internal/parser/parse.js +37 -5
- package/dist/lib/_internal/parser/raw-document.d.ts +18 -1
- package/dist/lib/_internal/parser/raw-document.d.ts.map +1 -1
- package/dist/lib/_internal/validation/rules.d.ts +1 -1
- package/dist/lib/_internal/validation/rules.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ From one contract, generate:
|
|
|
10
10
|
- **Zod** validation schemas
|
|
11
11
|
- **Data Connect** GraphQL schema (`@table`, keys, directives), query/mutation
|
|
12
12
|
operations (routed per connector), and `Any`↔logical adapters
|
|
13
|
-
- **Firestore** projection schemas (denormalized read model
|
|
13
|
+
- **Firestore** projection schemas (denormalized read model; shared field groups via fragments)
|
|
14
14
|
- **API** request/response types, request-validation Zod, and class-validator DTOs
|
|
15
15
|
- **Cloud Task / Pub/Sub** payload envelopes + delivery constants
|
|
16
16
|
- **SQL migrations** for constraints Data Connect can't express (composite FKs,
|
|
@@ -481,9 +481,9 @@ reality automatically:
|
|
|
481
481
|
|
|
482
482
|
- **relations → resolved string ids** (`ownerUser` → `ownerUserId: z.string()`)
|
|
483
483
|
- **timestamps → `z.date()`**, optional fields → `.nullable()`
|
|
484
|
-
- a **`_meta_`** consistency envelope is attached (opt out with `meta: false`)
|
|
485
484
|
- `pick` / `omit` select which base fields survive
|
|
486
485
|
- inline `fields` add denormalized data (flattened DAG edges, stringified JSON)
|
|
486
|
+
- `extends: [<fragment>…]` splices shared fields in (see **Fragments** below)
|
|
487
487
|
|
|
488
488
|
```yaml
|
|
489
489
|
firestore:
|
|
@@ -517,7 +517,6 @@ export const ShopSchema = DcShopSchema.pick({
|
|
|
517
517
|
}).extend({
|
|
518
518
|
createdAt: z.date(),
|
|
519
519
|
updatedAt: z.date().nullable(),
|
|
520
|
-
_meta_: _Meta_Schema,
|
|
521
520
|
})
|
|
522
521
|
```
|
|
523
522
|
|
|
@@ -534,6 +533,46 @@ Additional projection options:
|
|
|
534
533
|
- FS-only enums render as frozen consts (`REVIEW_STATE` + `ReviewStateSchema`),
|
|
535
534
|
co-located with the first projection that references them
|
|
536
535
|
|
|
536
|
+
### Fragments (`fragments:` + `extends:`)
|
|
537
|
+
|
|
538
|
+
A **fragment** is a named group of fields declared once and spliced into
|
|
539
|
+
consumers via `extends: [<name>…]` — the way to share a common field across
|
|
540
|
+
many projections (a consistency `_meta_` envelope, audit columns, …) without a
|
|
541
|
+
tool-imposed convention. The fragment field's name, type, and which docs carry
|
|
542
|
+
it are all yours.
|
|
543
|
+
|
|
544
|
+
The value objects a fragment references can be **pinned** to a fixed split
|
|
545
|
+
output via `out` (+ optional `file`) on the model declaration. A pinned value
|
|
546
|
+
object is *placement-scoped*: emitted only at that location (dependency-ordered,
|
|
547
|
+
with an `index.ts` barrel), imported by consumers via that directory, and
|
|
548
|
+
excluded from the default `typescript`/`zod` barrels — so it lives purely in the
|
|
549
|
+
firestore output. This is what lets a shared envelope sit under `firestore/_/`.
|
|
550
|
+
|
|
551
|
+
```yaml
|
|
552
|
+
models:
|
|
553
|
+
MetaOp:
|
|
554
|
+
out: firestore/_ # → firestore/_/_meta_.ts (+ firestore/_/index.ts)
|
|
555
|
+
file: _meta_.ts
|
|
556
|
+
fields:
|
|
557
|
+
id: { type: string }
|
|
558
|
+
Meta:
|
|
559
|
+
out: firestore/_
|
|
560
|
+
file: _meta_.ts
|
|
561
|
+
fields:
|
|
562
|
+
scope: { type: float, nullable: true }
|
|
563
|
+
op: { type: MetaOp, nullable: true }
|
|
564
|
+
|
|
565
|
+
fragments:
|
|
566
|
+
meta:
|
|
567
|
+
fields:
|
|
568
|
+
_meta_: { type: Meta }
|
|
569
|
+
|
|
570
|
+
firestore:
|
|
571
|
+
Shop:
|
|
572
|
+
from: Shop
|
|
573
|
+
extends: [meta] # appends `_meta_: MetaSchema` (imported from './_')
|
|
574
|
+
```
|
|
575
|
+
|
|
537
576
|
## Discriminated unions
|
|
538
577
|
|
|
539
578
|
```yaml
|
|
@@ -617,7 +656,7 @@ project:
|
|
|
617
656
|
| `data-connect-operations`| document | `<connector>/operations.gql` + `.ts`; `split: true` → `<connector>/operations/<entity>/{queries,mutations}.gql` | queries/mutations (where ops, orderBy, limit, aggregate, exprs, inc), per connector; split matches the real Data Connect repo layout |
|
|
618
657
|
| `data-connect-adapter` | document | `data-connect-adapters.ts` | convert `Any` rows ⇄ logical types |
|
|
619
658
|
| `firestore-types` | document | `firestore-types.ts` | naive TS types with Firestore `Timestamp` (all models) |
|
|
620
|
-
| `firestore` | document | `firestore.ts`; `split: true` → `firestore/<collection>.ts` + barrel | Firestore projection Zod schemas (derived, denormalized);
|
|
659
|
+
| `firestore` | document | `firestore.ts`; `split: true` → `firestore/<collection>.ts` + barrel | Firestore projection Zod schemas (derived, denormalized); `extends` fragments, pinned value objects under their `out` (e.g. `firestore/_/`), DC-schema `.pick()` reuse, `FIRESTORE_DATABASES` constants in the barrel |
|
|
621
660
|
| `api-types` | api | `api-types.ts` | endpoint request/response types |
|
|
622
661
|
| `api-validation` | api | `api-validation.ts` | endpoint request-validation Zod |
|
|
623
662
|
| `api-dto` | api | `<operation>.dto.ts` per api | class-validator DTO classes (NestJS `dto/` convention) |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore-projection-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/firestore/firestore-projection-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"firestore-projection-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/firestore/firestore-projection-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AA4E5E;;;;;;;GAOG;AACH,eAAO,MAAM,kCAAkC,QAAO,SAiBnD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { findModel } from '../../ir/ir.js';
|
|
1
|
+
import { findFragment, findModel } from '../../ir/ir.js';
|
|
2
2
|
import { singleQuote } from '../support/naming.js';
|
|
3
3
|
import { isRelation, relationFkName } from '../support/relations.js';
|
|
4
4
|
import { headerBlocks } from '../support/header.js';
|
|
@@ -18,19 +18,6 @@ const SCALAR_ZOD = {
|
|
|
18
18
|
json: 'z.unknown()',
|
|
19
19
|
id: 'z.string()',
|
|
20
20
|
};
|
|
21
|
-
const META_BLOCK = [
|
|
22
|
-
'export const _Meta_OperationSchema = z.object({',
|
|
23
|
-
' id: z.string(),',
|
|
24
|
-
' identifierId: z.string(),',
|
|
25
|
-
' updatedAt: z.number(),',
|
|
26
|
-
'})',
|
|
27
|
-
'export const _Meta_Schema = z.object({',
|
|
28
|
-
' scope: z.number().nullable(),',
|
|
29
|
-
' sys: z.number().nullable(),',
|
|
30
|
-
' op: _Meta_OperationSchema.nullable(),',
|
|
31
|
-
'})',
|
|
32
|
-
'export type _Meta_ = z.infer<typeof _Meta_Schema>',
|
|
33
|
-
].join('\n');
|
|
34
21
|
const fsField = (ir, field) => {
|
|
35
22
|
const name = isRelation(field) ? relationFkName(field) : field.name;
|
|
36
23
|
let schema;
|
|
@@ -69,7 +56,8 @@ const effectiveFields = (ir, doc) => {
|
|
|
69
56
|
const { name, schema } = fsField(ir, field);
|
|
70
57
|
entries.set(name, schema);
|
|
71
58
|
}
|
|
72
|
-
|
|
59
|
+
const added = [...doc.fields, ...doc.extends.flatMap(name => findFragment(ir, name)?.fields ?? [])];
|
|
60
|
+
for (const field of added) {
|
|
73
61
|
const { name, schema } = fsField(ir, field);
|
|
74
62
|
entries.set(name, schema);
|
|
75
63
|
}
|
|
@@ -82,8 +70,6 @@ const renderDoc = (ir, doc) => {
|
|
|
82
70
|
else if (doc.description)
|
|
83
71
|
lines.push(`// ${doc.description}`);
|
|
84
72
|
const fields = effectiveFields(ir, doc).map(field => ` ${field.name}: ${field.schema},`);
|
|
85
|
-
if (doc.meta)
|
|
86
|
-
fields.push(' _meta_: _Meta_Schema,');
|
|
87
73
|
lines.push(`export const ${doc.name}Schema = z.object({\n${fields.join('\n')}\n})`);
|
|
88
74
|
lines.push(`export type ${doc.name} = z.infer<typeof ${doc.name}Schema>`);
|
|
89
75
|
return lines.join('\n');
|
|
@@ -104,9 +90,6 @@ export const createFirestoreProjectionGenerator = () => withSplitVariant({
|
|
|
104
90
|
return [];
|
|
105
91
|
}
|
|
106
92
|
const blocks = [...headerBlocks(context), "import { z } from 'zod'"];
|
|
107
|
-
if (ir.firestore.some(doc => doc.meta)) {
|
|
108
|
-
blocks.push(META_BLOCK);
|
|
109
|
-
}
|
|
110
93
|
for (const doc of ir.firestore) {
|
|
111
94
|
blocks.push(renderDoc(ir, doc));
|
|
112
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore-split-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/firestore/firestore-split-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"firestore-split-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/firestore/firestore-split-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAoN5E;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAAO,SAiL5C,CAAA"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { findEnum, findModel } from '../../ir/ir.js';
|
|
1
|
+
import { findEnum, findFragment, findModel } from '../../ir/ir.js';
|
|
2
2
|
import { zodConstraints } from '../support/constraints.js';
|
|
3
3
|
import { headerBlocks } from '../support/header.js';
|
|
4
4
|
import { camelCase, constantCase, pluralize, singleQuote } from '../support/naming.js';
|
|
5
5
|
import { isRelation, relationFkName } from '../support/relations.js';
|
|
6
6
|
import { collectDeps, kebabCase, tableNameOf } from '../support/split.js';
|
|
7
7
|
import { outputFile } from '../support/templates.js';
|
|
8
|
+
/** Fields spliced into a projection by its `extends` fragments (in declared order). */
|
|
9
|
+
const fragmentFieldsOf = (ir, doc) => doc.extends.flatMap(name => findFragment(ir, name)?.fields ?? []);
|
|
10
|
+
/** True for a placement-pinned value object (emitted at its own `out`, not co-located). */
|
|
11
|
+
const isPinnedModel = (ir, name) => findModel(ir, name)?.out !== undefined;
|
|
12
|
+
/** Import path (dir barrel) from a `firestore/<name>.ts` doc to a pinned model's `out` dir. */
|
|
13
|
+
const pinnedImportPath = (out) => `./${out.startsWith('firestore/') ? out.slice('firestore/'.length) : out}`;
|
|
8
14
|
// Projection-level scalars: timestamps become dates, ids/relations become
|
|
9
15
|
// resolved (hashids-encoded) string ids.
|
|
10
16
|
const SCALAR_FS = {
|
|
@@ -24,36 +30,6 @@ const SCALAR_EMBEDDED = {
|
|
|
24
30
|
int: 'z.number().int()',
|
|
25
31
|
int64: 'z.number().int()',
|
|
26
32
|
};
|
|
27
|
-
const META_FILE = `import { z } from 'zod'
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Cloud Task 整合性管理用の operation 識別子メタ。
|
|
31
|
-
* 整合性回復 (reconciliation) 処理の最新世代を表す。
|
|
32
|
-
*/
|
|
33
|
-
export const _Meta_OperationSchema = z.object({
|
|
34
|
-
/** opId (operation id) */
|
|
35
|
-
id: z.string(),
|
|
36
|
-
/** 整合性回復処理の識別子 */
|
|
37
|
-
identifierId: z.string(),
|
|
38
|
-
/** unixtime (最終更新) */
|
|
39
|
-
updatedAt: z.number(),
|
|
40
|
-
})
|
|
41
|
-
export type _Meta_Operation = z.infer<typeof _Meta_OperationSchema>
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* 全 Firestore document に付ける整合性管理メタ。
|
|
45
|
-
*
|
|
46
|
-
* - \`scope\`: app hosting 経由で set される unixtime
|
|
47
|
-
* - \`sys\`: cloud functions / cloud task 経由で set される unixtime
|
|
48
|
-
* - \`op\`: cloud task で set される operation メタ
|
|
49
|
-
*/
|
|
50
|
-
export const _Meta_Schema = z.object({
|
|
51
|
-
scope: z.number().nullable(),
|
|
52
|
-
sys: z.number().nullable(),
|
|
53
|
-
op: _Meta_OperationSchema.nullable(),
|
|
54
|
-
})
|
|
55
|
-
export type _Meta_ = z.infer<typeof _Meta_Schema>
|
|
56
|
-
`;
|
|
57
33
|
const lineComments = (description, indent) => description ? description.split('\n').map(line => `${indent}// ${line}`.trimEnd()) : [];
|
|
58
34
|
const jsdoc = (description, indent) => {
|
|
59
35
|
if (!description)
|
|
@@ -216,7 +192,7 @@ const effectiveFields = (ir, doc) => {
|
|
|
216
192
|
entries.set(name, { comments: [], entry: ` ${name}: ${schema},`, name, pickable });
|
|
217
193
|
roots.push(field);
|
|
218
194
|
}
|
|
219
|
-
for (const field of doc.fields) {
|
|
195
|
+
for (const field of [...doc.fields, ...fragmentFieldsOf(ir, doc)]) {
|
|
220
196
|
const { name, schema } = overrideFieldSchema(ir, field);
|
|
221
197
|
const comments = field.jsdoc ? jsdoc(field.description, ' ') : lineComments(field.description, ' ');
|
|
222
198
|
entries.set(name, { comments, entry: ` ${name}: ${schema},`, name, pickable: false });
|
|
@@ -249,7 +225,9 @@ export const createFirestoreSplitLayout = () => ({
|
|
|
249
225
|
const pseudo = { name: `__${doc.name}`, fields: roots, key: [], indexes: [] };
|
|
250
226
|
const collected = collectDeps(ir, [pseudo]);
|
|
251
227
|
const included = (doc.include ?? []).filter(name => !collected.models.includes(name));
|
|
252
|
-
|
|
228
|
+
// Pinned value objects are emitted at their own `out`, never co-located.
|
|
229
|
+
const models = [...included, ...collected.models].filter(name => !isPinnedModel(ir, name));
|
|
230
|
+
const deps = { enums: collected.enums, models };
|
|
253
231
|
docDeps.set(doc.name, deps);
|
|
254
232
|
const moduleName = docModuleName(doc);
|
|
255
233
|
for (const name of deps.enums)
|
|
@@ -285,8 +263,23 @@ export const createFirestoreSplitLayout = () => ({
|
|
|
285
263
|
const importLines = [...external.entries()]
|
|
286
264
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
287
265
|
.map(([home, symbols]) => `import { ${[...symbols].sort().join(', ')} } from './${home}'`);
|
|
288
|
-
|
|
289
|
-
|
|
266
|
+
// Pinned value objects directly referenced by this doc: imported from their out-dir barrel.
|
|
267
|
+
const { roots } = effectiveFields(ir, doc);
|
|
268
|
+
const pinnedImports = new Map();
|
|
269
|
+
for (const field of roots) {
|
|
270
|
+
if (field.type.kind === 'model' && isPinnedModel(ir, field.type.name)) {
|
|
271
|
+
const model = findModel(ir, field.type.name);
|
|
272
|
+
if (!model?.out)
|
|
273
|
+
continue;
|
|
274
|
+
const from = pinnedImportPath(model.out);
|
|
275
|
+
const set = pinnedImports.get(from) ?? new Set();
|
|
276
|
+
set.add(`${fsModelName(ir, field.type.name)}Schema`);
|
|
277
|
+
pinnedImports.set(from, set);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
for (const [from, symbols] of [...pinnedImports.entries()].sort(([a], [b]) => a.localeCompare(b))) {
|
|
281
|
+
importLines.unshift(`import { ${[...symbols].sort().join(', ')} } from '${from}'`);
|
|
282
|
+
}
|
|
290
283
|
// Fields whose Zod chain is identical to the Data Connect schema are
|
|
291
284
|
// picked from it (single definition); only representation changes extend.
|
|
292
285
|
const baseModel = doc.from ? findModel(ir, doc.from) : undefined;
|
|
@@ -330,8 +323,6 @@ export const createFirestoreSplitLayout = () => ({
|
|
|
330
323
|
lines.push(...field.comments);
|
|
331
324
|
lines.push(field.entry);
|
|
332
325
|
}
|
|
333
|
-
if (doc.meta)
|
|
334
|
-
lines.push(' _meta_: _Meta_Schema,');
|
|
335
326
|
lines.push('})');
|
|
336
327
|
}
|
|
337
328
|
else {
|
|
@@ -340,17 +331,48 @@ export const createFirestoreSplitLayout = () => ({
|
|
|
340
331
|
lines.push(...field.comments);
|
|
341
332
|
lines.push(field.entry);
|
|
342
333
|
}
|
|
343
|
-
if (doc.meta)
|
|
344
|
-
lines.push(' _meta_: _Meta_Schema,');
|
|
345
334
|
lines.push('})');
|
|
346
335
|
}
|
|
347
336
|
lines.push(`export type ${doc.name} = z.infer<typeof ${doc.name}Schema>`);
|
|
348
337
|
blocks.push(lines.join('\n'));
|
|
349
338
|
files.push({ path: `firestore/${moduleName}.ts`, content: `${blocks.join('\n\n')}\n` });
|
|
350
339
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
340
|
+
// Pinned value objects: emitted at their own `out` (grouped per out+file),
|
|
341
|
+
// dependencies first, with an index barrel. These replace the former
|
|
342
|
+
// hardcoded `_meta_` envelope — the shape now lives entirely in the contract.
|
|
343
|
+
const pinDirs = [];
|
|
344
|
+
const pinGroups = new Map();
|
|
345
|
+
for (const model of ir.models) {
|
|
346
|
+
if (model.out === undefined)
|
|
347
|
+
continue;
|
|
348
|
+
const file = model.file ?? 'index.ts';
|
|
349
|
+
const key = `${model.out}${file}`;
|
|
350
|
+
const group = pinGroups.get(key) ?? { out: model.out, file, models: [] };
|
|
351
|
+
group.models.push(model);
|
|
352
|
+
pinGroups.set(key, group);
|
|
353
|
+
}
|
|
354
|
+
for (const { out, file, models } of pinGroups.values()) {
|
|
355
|
+
// Order so a referenced value object is declared before its referrer (same file).
|
|
356
|
+
const ordered = [];
|
|
357
|
+
const placed = new Set();
|
|
358
|
+
const place = (m) => {
|
|
359
|
+
if (placed.has(m.name))
|
|
360
|
+
return;
|
|
361
|
+
placed.add(m.name);
|
|
362
|
+
for (const dep of collectDeps(ir, [m]).models) {
|
|
363
|
+
const depModel = models.find(x => x.name === dep);
|
|
364
|
+
if (depModel)
|
|
365
|
+
place(depModel);
|
|
366
|
+
}
|
|
367
|
+
ordered.push(m);
|
|
368
|
+
};
|
|
369
|
+
for (const m of models)
|
|
370
|
+
place(m);
|
|
371
|
+
const body = ['import { z }' + " from 'zod'", ...ordered.map(m => renderEmbeddedModel(ir, m))].join('\n\n');
|
|
372
|
+
const base = file.replace(/\.ts$/, '');
|
|
373
|
+
files.push({ path: `${out}/${file}`, content: `${body}\n` });
|
|
374
|
+
files.push({ path: `${out}/index.ts`, content: `export * from './${base}'\n` });
|
|
375
|
+
pinDirs.push(out);
|
|
354
376
|
}
|
|
355
377
|
// Barrel: database name constants (when the project defines services) + re-exports.
|
|
356
378
|
const barrel = [...headerBlocks(context)];
|
|
@@ -367,8 +389,8 @@ export const createFirestoreSplitLayout = () => ({
|
|
|
367
389
|
].join('\n'));
|
|
368
390
|
}
|
|
369
391
|
const exportLines = ir.firestore.map(doc => `export * from './firestore/${docModuleName(doc)}'`);
|
|
370
|
-
|
|
371
|
-
exportLines.push(`export * from '
|
|
392
|
+
for (const out of pinDirs)
|
|
393
|
+
exportLines.push(`export * from './${out}'`);
|
|
372
394
|
barrel.push(['// Zod schema / TypeScript 型のエクスポート', ...exportLines].join('\n'));
|
|
373
395
|
files.push({ path: outputFile(context, 'firestore.ts'), content: `${barrel.join('\n\n')}\n` });
|
|
374
396
|
return files;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/support/split.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIvD,qEAAqE;AACrE,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,OAAiE,CAAA;AAE1G,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAyD,CAAA;AAEtG,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAA6C,CAAA;AAavF,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,EAAE,EAAE,OAAO,OAAO,EAAE,KAAG,UAuBtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAavE,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,qDAAqD;IACrD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,oDAAoD;IACpD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,EAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/support/split.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIvD,qEAAqE;AACrE,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,OAAiE,CAAA;AAE1G,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAyD,CAAA;AAEtG,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAA6C,CAAA;AAavF,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,EAAE,EAAE,OAAO,OAAO,EAAE,KAAG,UAuBtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAavE,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,qDAAqD;IACrD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,oDAAoD;IACpD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,EAAE,KAAG,WAgBpC,CAAA"}
|
|
@@ -90,7 +90,8 @@ export const splitGroups = (ir) => {
|
|
|
90
90
|
}
|
|
91
91
|
const leftoverEnums = ir.enums.map(e => e.name).filter(name => !enumHome.has(name));
|
|
92
92
|
const leftoverModels = ir.models
|
|
93
|
-
|
|
93
|
+
// Pinned value objects are emitted at their own `out`, never in the default barrels.
|
|
94
|
+
.filter(model => !isTable(model) && model.out === undefined)
|
|
94
95
|
.map(model => model.name)
|
|
95
96
|
.filter(name => !modelHome.has(name));
|
|
96
97
|
return { tables, enumHome, modelHome, leftoverEnums, leftoverModels };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/typescript/typescript-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAO5E,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAS,0BAA+B,KAAG,
|
|
1
|
+
{"version":3,"file":"typescript-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/typescript/typescript-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAO5E,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAS,0BAA+B,KAAG,SA4BpF,CAAA"}
|
|
@@ -17,13 +17,15 @@ export const createTypeScriptGenerator = (options = {}) => {
|
|
|
17
17
|
description: 'TypeScript interfaces and enum const/union types',
|
|
18
18
|
generate(ir, context) {
|
|
19
19
|
const blocks = [...headerBlocks(context)];
|
|
20
|
-
|
|
20
|
+
// Pinned value objects (models with `out`) are firestore-scoped: excluded here.
|
|
21
|
+
const models = ir.models.filter(model => model.out === undefined);
|
|
22
|
+
if (usesJson(models)) {
|
|
21
23
|
blocks.push(JSON_TYPE);
|
|
22
24
|
}
|
|
23
25
|
for (const irEnum of ir.enums) {
|
|
24
26
|
blocks.push(enumStyle === 'const' ? renderEnumConst(irEnum) : renderEnumUnion(irEnum));
|
|
25
27
|
}
|
|
26
|
-
for (const model of
|
|
28
|
+
for (const model of models) {
|
|
27
29
|
blocks.push(renderModel(model, ir));
|
|
28
30
|
}
|
|
29
31
|
return [{ path: outputFile(context, 'types.ts'), content: `${blocks.join('\n\n')}\n` }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/zod/zod-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAO5E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,
|
|
1
|
+
{"version":3,"file":"zod-generator.d.ts","sourceRoot":"","sources":["../../../../../src/lib/_internal/generators/zod/zod-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAO5E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,SAqBnC,CAAA"}
|
|
@@ -16,7 +16,8 @@ export const createZodGenerator = () => withSplitVariant({
|
|
|
16
16
|
for (const irEnum of ir.enums) {
|
|
17
17
|
blocks.push(renderEnum(irEnum));
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
// Pinned value objects (models with `out`) are firestore-scoped: excluded here.
|
|
20
|
+
for (const model of ir.models.filter(model => model.out === undefined)) {
|
|
20
21
|
blocks.push(renderModel(model, ir));
|
|
21
22
|
}
|
|
22
23
|
return [{ path: outputFile(context, 'schemas.ts'), content: `${blocks.join('\n\n')}\n` }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-ir.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/ir/build-ir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAGL,WAAW,EAIZ,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAGL,EAAE,
|
|
1
|
+
{"version":3,"file":"build-ir.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/ir/build-ir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAGL,WAAW,EAIZ,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAGL,EAAE,EAiBH,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,EAAE,CAAA;IACN,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B;AAyPD;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,WAAW,WAAW,EAAE,KAAG,aAkSlD,CAAA"}
|
|
@@ -222,7 +222,7 @@ const buildFirestoreDoc = (name, raw, sourceFile, enumNames, modelNames) => {
|
|
|
222
222
|
pick: raw.pick ?? [],
|
|
223
223
|
omit: raw.omit ?? [],
|
|
224
224
|
fields,
|
|
225
|
-
|
|
225
|
+
extends: raw.extends ?? [],
|
|
226
226
|
sourceFile,
|
|
227
227
|
};
|
|
228
228
|
if (raw.from !== undefined)
|
|
@@ -309,6 +309,10 @@ export const buildIr = (documents) => {
|
|
|
309
309
|
})),
|
|
310
310
|
sourceFile: doc.filePath,
|
|
311
311
|
};
|
|
312
|
+
if (raw.out !== undefined)
|
|
313
|
+
model.out = raw.out;
|
|
314
|
+
if (raw.file !== undefined)
|
|
315
|
+
model.file = raw.file;
|
|
312
316
|
if (raw.description !== undefined)
|
|
313
317
|
model.description = raw.description;
|
|
314
318
|
if (raw.table !== undefined)
|
|
@@ -447,6 +451,31 @@ export const buildIr = (documents) => {
|
|
|
447
451
|
envelope.description = raw.description;
|
|
448
452
|
envelopes.push(envelope);
|
|
449
453
|
}
|
|
454
|
+
const fragmentSources = new Map();
|
|
455
|
+
for (const doc of documents) {
|
|
456
|
+
for (const name of Object.keys(doc.fragments)) {
|
|
457
|
+
if (fragmentSources.has(name)) {
|
|
458
|
+
diagnostics.push(error('DUPLICATE_DEFINITION', `Fragment "${name}" is defined more than once`, {
|
|
459
|
+
file: doc.filePath,
|
|
460
|
+
path: `fragments.${name}`,
|
|
461
|
+
}));
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
464
|
+
fragmentSources.set(name, doc);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
const fragments = [];
|
|
468
|
+
for (const [name, doc] of fragmentSources) {
|
|
469
|
+
const raw = doc.fragments[name];
|
|
470
|
+
const fragment = {
|
|
471
|
+
name,
|
|
472
|
+
fields: Object.entries(raw.fields).map(([fieldName, rawField]) => buildField(fieldName, rawField, enumNames, modelNames)),
|
|
473
|
+
sourceFile: doc.filePath,
|
|
474
|
+
};
|
|
475
|
+
if (raw.description !== undefined)
|
|
476
|
+
fragment.description = raw.description;
|
|
477
|
+
fragments.push(fragment);
|
|
478
|
+
}
|
|
450
479
|
let header;
|
|
451
480
|
for (const doc of documents) {
|
|
452
481
|
if (doc.header !== undefined) {
|
|
@@ -479,6 +508,7 @@ export const buildIr = (documents) => {
|
|
|
479
508
|
firestore,
|
|
480
509
|
unions,
|
|
481
510
|
envelopes,
|
|
511
|
+
fragments,
|
|
482
512
|
...(project ? { project } : {}),
|
|
483
513
|
...(header !== undefined ? { header } : {}),
|
|
484
514
|
},
|
|
@@ -121,6 +121,10 @@ export interface IrModel {
|
|
|
121
121
|
fsName?: string;
|
|
122
122
|
/** Composite unique/index constraints (Data Connect `@unique`/`@index`). */
|
|
123
123
|
indexes: IrIndex[];
|
|
124
|
+
/** Placement-pinned split output dir (relative to the generator `out`); firestore-scoped value object. */
|
|
125
|
+
out?: string;
|
|
126
|
+
/** File name for a placement-pinned value object. */
|
|
127
|
+
file?: string;
|
|
124
128
|
/** Absolute path of the file this model was defined in. */
|
|
125
129
|
sourceFile?: string;
|
|
126
130
|
}
|
|
@@ -322,8 +326,9 @@ export interface IrEnvelope {
|
|
|
322
326
|
* A Firestore projection document. Firestore is a denormalized read model, so a
|
|
323
327
|
* projection *derives* from a Data Connect model (`from`) and then diverges:
|
|
324
328
|
* fields are picked/omitted, relations become resolved string ids, timestamps
|
|
325
|
-
* become dates, a `_meta_` envelope
|
|
326
|
-
* (e.g. flattened DAG edges) are
|
|
329
|
+
* become dates, fragments (e.g. a shared `_meta_` envelope) are spliced in via
|
|
330
|
+
* `extends`, and extra denormalized fields (e.g. flattened DAG edges) are
|
|
331
|
+
* declared inline.
|
|
327
332
|
*/
|
|
328
333
|
export interface IrFirestoreDoc {
|
|
329
334
|
name: string;
|
|
@@ -338,14 +343,21 @@ export interface IrFirestoreDoc {
|
|
|
338
343
|
omit: string[];
|
|
339
344
|
/** Added or overriding projection-specific fields. */
|
|
340
345
|
fields: IrField[];
|
|
341
|
-
/**
|
|
342
|
-
|
|
346
|
+
/** Fragment names whose fields are appended to this projection. */
|
|
347
|
+
extends: string[];
|
|
343
348
|
/** Embedded models to host in this projection file even when unreferenced. */
|
|
344
349
|
include?: string[];
|
|
345
350
|
/** Verbatim TypeScript helpers emitted into the projection file. */
|
|
346
351
|
helpers?: string;
|
|
347
352
|
sourceFile?: string;
|
|
348
353
|
}
|
|
354
|
+
/** A reusable named group of fields, spliced into consumers via `extends`. */
|
|
355
|
+
export interface IrFragment {
|
|
356
|
+
name: string;
|
|
357
|
+
description?: string;
|
|
358
|
+
fields: IrField[];
|
|
359
|
+
sourceFile?: string;
|
|
360
|
+
}
|
|
349
361
|
/** A discriminated union of model variants keyed by a shared discriminant field. */
|
|
350
362
|
export interface IrUnion {
|
|
351
363
|
name: string;
|
|
@@ -383,12 +395,14 @@ export interface Ir {
|
|
|
383
395
|
firestore: IrFirestoreDoc[];
|
|
384
396
|
unions: IrUnion[];
|
|
385
397
|
envelopes: IrEnvelope[];
|
|
398
|
+
fragments: IrFragment[];
|
|
386
399
|
project?: IrProject;
|
|
387
400
|
/** Raw header text from the contract (`default` = built-in banner). */
|
|
388
401
|
header?: string;
|
|
389
402
|
}
|
|
390
403
|
export declare const findModel: (ir: Ir, name: string) => IrModel | undefined;
|
|
391
404
|
export declare const findEnum: (ir: Ir, name: string) => IrEnum | undefined;
|
|
405
|
+
export declare const findFragment: (ir: Ir, name: string) => IrFragment | undefined;
|
|
392
406
|
/** The id field's scalar name of a model, used to type foreign keys. Defaults to `string`. */
|
|
393
407
|
export declare const idTypeOf: (ir: Ir, modelName: string) => ScalarType;
|
|
394
408
|
//# sourceMappingURL=ir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/ir/ir.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/ir/ir.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export const SCALAR_TYPES = ['string', 'int', 'int64', 'float', 'boolean', 'time
|
|
|
11
11
|
export const isScalarType = (name) => SCALAR_TYPES.includes(name);
|
|
12
12
|
export const findModel = (ir, name) => ir.models.find(model => model.name === name);
|
|
13
13
|
export const findEnum = (ir, name) => ir.enums.find(irEnum => irEnum.name === name);
|
|
14
|
+
export const findFragment = (ir, name) => ir.fragments.find(fragment => fragment.name === name);
|
|
14
15
|
/** The id field's scalar name of a model, used to type foreign keys. Defaults to `string`. */
|
|
15
16
|
export const idTypeOf = (ir, modelName) => {
|
|
16
17
|
const model = findModel(ir, modelName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/parser/parse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAS,MAAM,mBAAmB,CAAA;AAEpE,OAAO,EAGL,WAAW,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/parser/parse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,UAAU,EAAS,MAAM,mBAAmB,CAAA;AAEpE,OAAO,EAGL,WAAW,EAcZ,MAAM,mBAAmB,CAAA;AAkoB1B;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,EAAE,cAAc,UAAU,EAAE,KAAG,WAO7F,CAAA"}
|
|
@@ -86,12 +86,16 @@ const normalizeModel = (raw, filePath, name) => {
|
|
|
86
86
|
if (!isObject(fieldsRaw)) {
|
|
87
87
|
return fail(`Model "${name}" is missing a "fields" object`, filePath, `models.${name}.fields`);
|
|
88
88
|
}
|
|
89
|
-
checkKeys(raw, ['fields', 'description', 'key', 'table', 'gqlName', 'directives', 'footer', 'fsName', 'indexes', 'sql'], filePath, `models.${name}`);
|
|
89
|
+
checkKeys(raw, ['fields', 'description', 'key', 'table', 'gqlName', 'directives', 'footer', 'fsName', 'indexes', 'sql', 'out', 'file'], filePath, `models.${name}`);
|
|
90
90
|
const fields = {};
|
|
91
91
|
for (const [fieldName, fieldRaw] of Object.entries(fieldsRaw)) {
|
|
92
92
|
fields[fieldName] = normalizeField(fieldRaw, filePath, `models.${name}.fields.${fieldName}`);
|
|
93
93
|
}
|
|
94
94
|
const model = { fields };
|
|
95
|
+
if (raw.out !== undefined)
|
|
96
|
+
model.out = String(raw.out);
|
|
97
|
+
if (raw.file !== undefined)
|
|
98
|
+
model.file = String(raw.file);
|
|
95
99
|
if (raw.description !== undefined)
|
|
96
100
|
model.description = String(raw.description);
|
|
97
101
|
if (raw.key !== undefined)
|
|
@@ -590,7 +594,7 @@ const normalizeFirestoreDoc = (raw, filePath, name) => {
|
|
|
590
594
|
if (!isObject(raw)) {
|
|
591
595
|
return fail(`Firestore doc "${name}" must be an object`, filePath, `firestore.${name}`);
|
|
592
596
|
}
|
|
593
|
-
checkKeys(raw, ['from', 'collection', 'description', '
|
|
597
|
+
checkKeys(raw, ['from', 'collection', 'description', 'extends', 'helpers', 'include', 'pick', 'omit', 'fields'], filePath, `firestore.${name}`);
|
|
594
598
|
const doc = {};
|
|
595
599
|
if (raw.from !== undefined)
|
|
596
600
|
doc.from = String(raw.from);
|
|
@@ -598,8 +602,8 @@ const normalizeFirestoreDoc = (raw, filePath, name) => {
|
|
|
598
602
|
doc.collection = String(raw.collection);
|
|
599
603
|
if (raw.description !== undefined)
|
|
600
604
|
doc.description = String(raw.description);
|
|
601
|
-
if (raw.
|
|
602
|
-
doc.
|
|
605
|
+
if (raw.extends !== undefined)
|
|
606
|
+
doc.extends = asStringArray(raw.extends, filePath, `firestore.${name}.extends`);
|
|
603
607
|
if (raw.helpers !== undefined)
|
|
604
608
|
doc.helpers = String(raw.helpers);
|
|
605
609
|
if (raw.include !== undefined)
|
|
@@ -618,6 +622,23 @@ const normalizeFirestoreDoc = (raw, filePath, name) => {
|
|
|
618
622
|
}
|
|
619
623
|
return doc;
|
|
620
624
|
};
|
|
625
|
+
const normalizeFragment = (raw, filePath, name) => {
|
|
626
|
+
if (!isObject(raw)) {
|
|
627
|
+
return fail(`Fragment "${name}" must be an object`, filePath, `fragments.${name}`);
|
|
628
|
+
}
|
|
629
|
+
if (!isObject(raw.fields)) {
|
|
630
|
+
return fail(`Fragment "${name}" is missing a "fields" object`, filePath, `fragments.${name}.fields`);
|
|
631
|
+
}
|
|
632
|
+
checkKeys(raw, ['fields', 'description'], filePath, `fragments.${name}`);
|
|
633
|
+
const fields = {};
|
|
634
|
+
for (const [fieldName, fieldRaw] of Object.entries(raw.fields)) {
|
|
635
|
+
fields[fieldName] = normalizeField(fieldRaw, filePath, `fragments.${name}.fields.${fieldName}`);
|
|
636
|
+
}
|
|
637
|
+
const fragment = { fields };
|
|
638
|
+
if (raw.description !== undefined)
|
|
639
|
+
fragment.description = String(raw.description);
|
|
640
|
+
return fragment;
|
|
641
|
+
};
|
|
621
642
|
const normalizeUnion = (raw, filePath, name) => {
|
|
622
643
|
if (!isObject(raw)) {
|
|
623
644
|
return fail(`Union "${name}" must be an object`, filePath, `unions.${name}`);
|
|
@@ -728,12 +749,13 @@ const parseContractInner = (content, filePath) => {
|
|
|
728
749
|
firestore: {},
|
|
729
750
|
unions: {},
|
|
730
751
|
envelopes: {},
|
|
752
|
+
fragments: {},
|
|
731
753
|
};
|
|
732
754
|
}
|
|
733
755
|
if (!isObject(doc)) {
|
|
734
756
|
return fail('Contract root must be a mapping', filePath);
|
|
735
757
|
}
|
|
736
|
-
checkKeys(doc, ['imports', 'defaults', 'header', 'project', 'generators', 'enums', 'models', 'operations', 'apis', 'tasks', 'events', 'firestore', 'unions', 'envelopes'], filePath, '(root)');
|
|
758
|
+
checkKeys(doc, ['imports', 'defaults', 'header', 'project', 'generators', 'enums', 'models', 'operations', 'apis', 'tasks', 'events', 'firestore', 'unions', 'envelopes', 'fragments'], filePath, '(root)');
|
|
737
759
|
const imports = [];
|
|
738
760
|
if (doc.imports !== undefined) {
|
|
739
761
|
if (!Array.isArray(doc.imports)) {
|
|
@@ -866,6 +888,15 @@ const parseContractInner = (content, filePath) => {
|
|
|
866
888
|
envelopes[name] = normalizeEnvelope(raw, filePath, name);
|
|
867
889
|
}
|
|
868
890
|
}
|
|
891
|
+
const fragments = {};
|
|
892
|
+
if (doc.fragments !== undefined) {
|
|
893
|
+
if (!isObject(doc.fragments)) {
|
|
894
|
+
return fail('"fragments" must be a mapping', filePath, 'fragments');
|
|
895
|
+
}
|
|
896
|
+
for (const [name, raw] of Object.entries(doc.fragments)) {
|
|
897
|
+
fragments[name] = normalizeFragment(raw, filePath, name);
|
|
898
|
+
}
|
|
899
|
+
}
|
|
869
900
|
const contract = {
|
|
870
901
|
filePath,
|
|
871
902
|
imports,
|
|
@@ -877,6 +908,7 @@ const parseContractInner = (content, filePath) => {
|
|
|
877
908
|
firestore,
|
|
878
909
|
unions,
|
|
879
910
|
envelopes,
|
|
911
|
+
fragments,
|
|
880
912
|
};
|
|
881
913
|
if (doc.project !== undefined) {
|
|
882
914
|
contract.project = normalizeProject(doc.project, filePath);
|
|
@@ -69,6 +69,16 @@ export interface RawModel {
|
|
|
69
69
|
fsName?: string;
|
|
70
70
|
indexes?: RawIndex[];
|
|
71
71
|
sql?: RawSqlConstraints;
|
|
72
|
+
/**
|
|
73
|
+
* Pin this value-object's split output to a fixed directory (relative to the
|
|
74
|
+
* generator `out`), e.g. `_` → `firestore/_/…`. A model with `out` is a
|
|
75
|
+
* placement-scoped value object: it is emitted only at this location by the
|
|
76
|
+
* owning split generator (firestore) and excluded from the default
|
|
77
|
+
* typescript/zod barrels. Split layouts only.
|
|
78
|
+
*/
|
|
79
|
+
out?: string;
|
|
80
|
+
/** File name for a placement-pinned value object (default: the `out` dir's index style). */
|
|
81
|
+
file?: string;
|
|
72
82
|
}
|
|
73
83
|
export interface RawOperation {
|
|
74
84
|
description?: string;
|
|
@@ -212,12 +222,18 @@ export interface RawFirestoreDoc {
|
|
|
212
222
|
pick?: string[];
|
|
213
223
|
omit?: string[];
|
|
214
224
|
fields?: Record<string, RawField>;
|
|
215
|
-
|
|
225
|
+
/** Fragments to splice into this projection (their fields are appended). */
|
|
226
|
+
extends?: string[];
|
|
216
227
|
/** Embedded models to host in this projection file even when unreferenced. */
|
|
217
228
|
include?: string[];
|
|
218
229
|
/** Verbatim TypeScript helpers emitted into the projection file. */
|
|
219
230
|
helpers?: string;
|
|
220
231
|
}
|
|
232
|
+
/** A reusable named group of fields, spliced into a consumer via `extends`. */
|
|
233
|
+
export interface RawFragment {
|
|
234
|
+
description?: string;
|
|
235
|
+
fields: Record<string, RawField>;
|
|
236
|
+
}
|
|
221
237
|
export interface RawUnion {
|
|
222
238
|
description?: string;
|
|
223
239
|
discriminant: string;
|
|
@@ -264,5 +280,6 @@ export interface RawContract {
|
|
|
264
280
|
firestore: Record<string, RawFirestoreDoc>;
|
|
265
281
|
unions: Record<string, RawUnion>;
|
|
266
282
|
envelopes: Record<string, RawEnvelope>;
|
|
283
|
+
fragments: Record<string, RawFragment>;
|
|
267
284
|
}
|
|
268
285
|
//# sourceMappingURL=raw-document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-document.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/parser/raw-document.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CACnE;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAChC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;IACpB,GAAG,CAAC,EAAE,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"raw-document.d.ts","sourceRoot":"","sources":["../../../../src/lib/_internal/parser/raw-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ export declare const unions: ValidationRule;
|
|
|
40
40
|
* - zod schemas module: logical names and their `…Schema` companions
|
|
41
41
|
* - unions module: union names/schemas plus the variant schemas it imports
|
|
42
42
|
* - firestore module: doc names, co-located enums/embedded models under
|
|
43
|
-
* `fsName ?? name`, plus the `
|
|
43
|
+
* `fsName ?? name`, plus the `FIRESTORE_DATABASES` runtime
|
|
44
44
|
*
|
|
45
45
|
* GraphQL names are checked separately ({@link graphqlNameCollisions}) because
|
|
46
46
|
* that namespace is scoped per data-connect-graphql declaration, not global.
|
|
@@ -282,7 +282,7 @@ const RESERVED_OWNER = 'the generated runtime';
|
|
|
282
282
|
* - zod schemas module: logical names and their `…Schema` companions
|
|
283
283
|
* - unions module: union names/schemas plus the variant schemas it imports
|
|
284
284
|
* - firestore module: doc names, co-located enums/embedded models under
|
|
285
|
-
* `fsName ?? name`, plus the `
|
|
285
|
+
* `fsName ?? name`, plus the `FIRESTORE_DATABASES` runtime
|
|
286
286
|
*
|
|
287
287
|
* GraphQL names are checked separately ({@link graphqlNameCollisions}) because
|
|
288
288
|
* that namespace is scoped per data-connect-graphql declaration, not global.
|
|
@@ -342,7 +342,7 @@ export const nameCollisions = ir => {
|
|
|
342
342
|
// firestore module: doc schemas + co-located enums/embedded models under fsName-effective names.
|
|
343
343
|
// Tables are imported as `Dc…Schema` aliases, so they don't claim names here.
|
|
344
344
|
check('firestore', [
|
|
345
|
-
...['
|
|
345
|
+
...['FIRESTORE_DATABASES', 'FirestoreDatabaseKey', 'FirestoreDatabaseId'].map(identifier => ({ owner: RESERVED_OWNER, identifier, path: '(generated)' })),
|
|
346
346
|
...ir.firestore.flatMap(d => claim(`firestore doc "${d.name}"`, d.sourceFile, `firestore.${d.name}`, [d.name, `${d.name}Schema`])),
|
|
347
347
|
...ir.enums.flatMap(e => {
|
|
348
348
|
const fs = e.fsName ?? e.name;
|