@palantir/pack.document-schema.type-gen 0.31.0 → 0.32.0
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/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
- package/build/esm/utils/ir/generateModelsFromIr.js +1 -1
- package/build/esm/utils/ir/generateModelsFromIr.js.map +1 -1
- package/build/esm/utils/ir/generateZodSchemasFromIr.js +1 -1
- package/build/esm/utils/ir/generateZodSchemasFromIr.js.map +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js.map +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateIndexFromSchema.test.js +2 -1
- package/build/esm/utils/schema/__tests__/generateIndexFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +8 -0
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +8 -0
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/generateIndexFromSchema.js +8 -5
- package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js +11 -5
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateTypesFromSchema.js +1 -2
- package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +27 -5
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js +11 -2
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -1
- package/build/esm/utils/schema/runtimeSchema.js +10 -0
- package/build/esm/utils/schema/runtimeSchema.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
- package/build/esm/utils/{formatVariantName.js → unknownVariantSuffix.js} +7 -6
- package/build/esm/utils/unknownVariantSuffix.js.map +1 -0
- package/build/types/utils/ir/generateModelsFromIr.d.ts.map +1 -1
- package/build/types/utils/ir/generateZodSchemasFromIr.d.ts.map +1 -1
- package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/runtimeSchema.d.ts +4 -0
- package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -1
- package/build/types/utils/unknownVariantSuffix.d.ts +3 -0
- package/build/types/utils/unknownVariantSuffix.d.ts.map +1 -0
- package/package.json +4 -4
- package/build/esm/utils/formatVariantName.js.map +0 -1
- package/build/types/utils/formatVariantName.d.ts +0 -2
- package/build/types/utils/formatVariantName.d.ts.map +0 -1
package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */
|
|
2
2
|
|
|
3
3
|
import { Metadata } from '@palantir/pack.document-schema.model-types';
|
|
4
4
|
import { AnimalCatSchema, AnimalDogSchema, AnimalSchema, CatSchema, DogSchema } from './schema.js';
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-discriminant.js","names":["Metadata","AnimalCatSchema","AnimalDogSchema","AnimalSchema","CatSchema","DogSchema","CatModel","__type","zodSchema","name","DogModel","AnimalModel","discriminant","AnimalCatModel","AnimalDogModel","DocumentModel","Cat","Dog","Animal","AnimalCat","AnimalDog","version"],"sources":["custom-discriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"custom-discriminant.js","names":["Metadata","AnimalCatSchema","AnimalDogSchema","AnimalSchema","CatSchema","DogSchema","CatModel","__type","zodSchema","name","DogModel","AnimalModel","discriminant","AnimalCatModel","AnimalDogModel","DocumentModel","Cat","Dog","Animal","AnimalCat","AnimalDog","version"],"sources":["custom-discriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport type {\n DocumentSchema,\n RecordModel,\n UnionModel,\n} from '@palantir/pack.document-schema.model-types';\nimport { Metadata } from '@palantir/pack.document-schema.model-types';\nimport type { Animal, AnimalCat, AnimalDog, Cat, Dog } from './types.js';\nimport {\n AnimalCatSchema,\n AnimalDogSchema,\n AnimalSchema,\n CatSchema,\n DogSchema,\n} from './schema.js';\n\nexport interface CatModel extends RecordModel<Cat, typeof CatSchema> {}\nexport const CatModel: CatModel = {\n __type: {} as Cat,\n zodSchema: CatSchema,\n [Metadata]: {\n name: 'Cat',\n },\n};\n\nexport interface DogModel extends RecordModel<Dog, typeof DogSchema> {}\nexport const DogModel: DogModel = {\n __type: {} as Dog,\n zodSchema: DogSchema,\n [Metadata]: {\n name: 'Dog',\n },\n};\n\nexport interface AnimalModel extends UnionModel<Animal, typeof AnimalSchema> {}\nexport const AnimalModel: AnimalModel = {\n __type: {} as Animal,\n zodSchema: AnimalSchema,\n [Metadata]: {\n discriminant: 'kind',\n name: 'Animal',\n },\n};\n\nexport interface AnimalCatModel extends UnionModel<\n AnimalCat,\n typeof AnimalCatSchema\n> {}\nexport const AnimalCatModel: AnimalCatModel = {\n __type: {} as AnimalCat,\n zodSchema: AnimalCatSchema,\n [Metadata]: {\n discriminant: 'kind',\n name: 'AnimalCat',\n },\n};\n\nexport interface AnimalDogModel extends UnionModel<\n AnimalDog,\n typeof AnimalDogSchema\n> {}\nexport const AnimalDogModel: AnimalDogModel = {\n __type: {} as AnimalDog,\n zodSchema: AnimalDogSchema,\n [Metadata]: {\n discriminant: 'kind',\n name: 'AnimalDog',\n },\n};\n\nexport const DocumentModel = {\n Cat: CatModel,\n Dog: DogModel,\n Animal: AnimalModel,\n AnimalCat: AnimalCatModel,\n AnimalDog: AnimalDogModel,\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\n\nexport type DocumentModel = typeof DocumentModel;\n"],"mappings":"AAAA;;AAOA,SAASA,QAAQ,QAAQ,4CAA4C;AAErE,SACEC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,SAAS,EACTC,SAAS,QACJ,aAAa;AAGpB,OAAO,MAAMC,QAAkB,GAAG;EAChCC,MAAM,EAAE,CAAC,CAAQ;EACjBC,SAAS,EAAEJ,SAAS;EACpB,CAACJ,QAAQ,GAAG;IACVS,IAAI,EAAE;EACR;AACF,CAAC;AAGD,OAAO,MAAMC,QAAkB,GAAG;EAChCH,MAAM,EAAE,CAAC,CAAQ;EACjBC,SAAS,EAAEH,SAAS;EACpB,CAACL,QAAQ,GAAG;IACVS,IAAI,EAAE;EACR;AACF,CAAC;AAGD,OAAO,MAAME,WAAwB,GAAG;EACtCJ,MAAM,EAAE,CAAC,CAAW;EACpBC,SAAS,EAAEL,YAAY;EACvB,CAACH,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAMD,OAAO,MAAMI,cAA8B,GAAG;EAC5CN,MAAM,EAAE,CAAC,CAAc;EACvBC,SAAS,EAAEP,eAAe;EAC1B,CAACD,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAMD,OAAO,MAAMK,cAA8B,GAAG;EAC5CP,MAAM,EAAE,CAAC,CAAc;EACvBC,SAAS,EAAEN,eAAe;EAC1B,CAACF,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAED,OAAO,MAAMM,aAAa,GAAG;EAC3BC,GAAG,EAAEV,QAAQ;EACbW,GAAG,EAAEP,QAAQ;EACbQ,MAAM,EAAEP,WAAW;EACnBQ,SAAS,EAAEN,cAAc;EACzBO,SAAS,EAAEN,cAAc;EACzB,CAACd,QAAQ,GAAG;IACVqB,OAAO,EAAE;EACX;AACF,CAAmC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-refs.js","names":["Metadata","EventSchema","EventModel","__type","zodSchema","externalRefFieldTypes","documentRef","userRef","resourceRef","name","DocumentModel","Event","version"],"sources":["external-refs.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"external-refs.js","names":["Metadata","EventSchema","EventModel","__type","zodSchema","externalRefFieldTypes","documentRef","userRef","resourceRef","name","DocumentModel","Event","version"],"sources":["external-refs.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport type {\n DocumentSchema,\n RecordModel,\n UnionModel,\n} from '@palantir/pack.document-schema.model-types';\nimport { Metadata } from '@palantir/pack.document-schema.model-types';\nimport type { Event } from './types.js';\nimport { EventSchema } from './schema.js';\n\nexport interface EventModel extends RecordModel<Event, typeof EventSchema> {}\nexport const EventModel: EventModel = {\n __type: {} as Event,\n zodSchema: EventSchema,\n [Metadata]: {\n externalRefFieldTypes: {\n documentRef: 'docRef',\n userRef: 'userRef',\n resourceRef: 'resourceRef',\n },\n name: 'Event',\n },\n};\n\nexport const DocumentModel = {\n Event: EventModel,\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\n\nexport type DocumentModel = typeof DocumentModel;\n"],"mappings":"AAAA;;AAOA,SAASA,QAAQ,QAAQ,4CAA4C;AAErE,SAASC,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,UAAsB,GAAG;EACpCC,MAAM,EAAE,CAAC,CAAU;EACnBC,SAAS,EAAEH,WAAW;EACtB,CAACD,QAAQ,GAAG;IACVK,qBAAqB,EAAE;MACrBC,WAAW,EAAE,QAAQ;MACrBC,OAAO,EAAE,SAAS;MAClBC,WAAW,EAAE;IACf,CAAC;IACDC,IAAI,EAAE;EACR;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EAC3BC,KAAK,EAAET,UAAU;EACjB,CAACF,QAAQ,GAAG;IACVY,OAAO,EAAE;EACX;AACF,CAAmC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-record.js","names":["Metadata","PersonSchema","PersonModel","__type","zodSchema","name","DocumentModel","Person","version"],"sources":["simple-record.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"simple-record.js","names":["Metadata","PersonSchema","PersonModel","__type","zodSchema","name","DocumentModel","Person","version"],"sources":["simple-record.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport type {\n DocumentSchema,\n RecordModel,\n UnionModel,\n} from '@palantir/pack.document-schema.model-types';\nimport { Metadata } from '@palantir/pack.document-schema.model-types';\nimport type { Person } from './types.js';\nimport { PersonSchema } from './schema.js';\n\nexport interface PersonModel extends RecordModel<Person, typeof PersonSchema> {}\nexport const PersonModel: PersonModel = {\n __type: {} as Person,\n zodSchema: PersonSchema,\n [Metadata]: {\n name: 'Person',\n },\n};\n\nexport const DocumentModel = {\n Person: PersonModel,\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\n\nexport type DocumentModel = typeof DocumentModel;\n"],"mappings":"AAAA;;AAOA,SAASA,QAAQ,QAAQ,4CAA4C;AAErE,SAASC,YAAY,QAAQ,aAAa;AAG1C,OAAO,MAAMC,WAAwB,GAAG;EACtCC,MAAM,EAAE,CAAC,CAAW;EACpBC,SAAS,EAAEH,YAAY;EACvB,CAACD,QAAQ,GAAG;IACVK,IAAI,EAAE;EACR;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EAC3BC,MAAM,EAAEL,WAAW;EACnB,CAACF,QAAQ,GAAG;IACVQ,OAAO,EAAE;EACX;AACF,CAAmC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */
|
|
2
2
|
|
|
3
3
|
import { Metadata } from '@palantir/pack.document-schema.model-types';
|
|
4
4
|
import { NodeObjectSchema, NodeSchema, NodeTextBoxSchema, ObjectNodeSchema, TextBoxSchema } from './schema.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union-types.js","names":["Metadata","NodeObjectSchema","NodeSchema","NodeTextBoxSchema","ObjectNodeSchema","TextBoxSchema","ObjectNodeModel","__type","zodSchema","name","TextBoxModel","NodeModel","discriminant","NodeObjectModel","NodeTextBoxModel","DocumentModel","ObjectNode","TextBox","Node","NodeObject","NodeTextBox","version"],"sources":["union-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"union-types.js","names":["Metadata","NodeObjectSchema","NodeSchema","NodeTextBoxSchema","ObjectNodeSchema","TextBoxSchema","ObjectNodeModel","__type","zodSchema","name","TextBoxModel","NodeModel","discriminant","NodeObjectModel","NodeTextBoxModel","DocumentModel","ObjectNode","TextBox","Node","NodeObject","NodeTextBox","version"],"sources":["union-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport type {\n DocumentSchema,\n RecordModel,\n UnionModel,\n} from '@palantir/pack.document-schema.model-types';\nimport { Metadata } from '@palantir/pack.document-schema.model-types';\nimport type {\n Node,\n NodeObject,\n NodeTextBox,\n ObjectNode,\n TextBox,\n} from './types.js';\nimport {\n NodeObjectSchema,\n NodeSchema,\n NodeTextBoxSchema,\n ObjectNodeSchema,\n TextBoxSchema,\n} from './schema.js';\n\nexport interface ObjectNodeModel extends RecordModel<\n ObjectNode,\n typeof ObjectNodeSchema\n> {}\nexport const ObjectNodeModel: ObjectNodeModel = {\n __type: {} as ObjectNode,\n zodSchema: ObjectNodeSchema,\n [Metadata]: {\n name: 'ObjectNode',\n },\n};\n\nexport interface TextBoxModel extends RecordModel<\n TextBox,\n typeof TextBoxSchema\n> {}\nexport const TextBoxModel: TextBoxModel = {\n __type: {} as TextBox,\n zodSchema: TextBoxSchema,\n [Metadata]: {\n name: 'TextBox',\n },\n};\n\nexport interface NodeModel extends UnionModel<Node, typeof NodeSchema> {}\nexport const NodeModel: NodeModel = {\n __type: {} as Node,\n zodSchema: NodeSchema,\n [Metadata]: {\n discriminant: 'type',\n name: 'Node',\n },\n};\n\nexport interface NodeObjectModel extends UnionModel<\n NodeObject,\n typeof NodeObjectSchema\n> {}\nexport const NodeObjectModel: NodeObjectModel = {\n __type: {} as NodeObject,\n zodSchema: NodeObjectSchema,\n [Metadata]: {\n discriminant: 'type',\n name: 'NodeObject',\n },\n};\n\nexport interface NodeTextBoxModel extends UnionModel<\n NodeTextBox,\n typeof NodeTextBoxSchema\n> {}\nexport const NodeTextBoxModel: NodeTextBoxModel = {\n __type: {} as NodeTextBox,\n zodSchema: NodeTextBoxSchema,\n [Metadata]: {\n discriminant: 'type',\n name: 'NodeTextBox',\n },\n};\n\nexport const DocumentModel = {\n ObjectNode: ObjectNodeModel,\n TextBox: TextBoxModel,\n Node: NodeModel,\n NodeObject: NodeObjectModel,\n NodeTextBox: NodeTextBoxModel,\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\n\nexport type DocumentModel = typeof DocumentModel;\n"],"mappings":"AAAA;;AAOA,SAASA,QAAQ,QAAQ,4CAA4C;AAQrE,SACEC,gBAAgB,EAChBC,UAAU,EACVC,iBAAiB,EACjBC,gBAAgB,EAChBC,aAAa,QACR,aAAa;AAMpB,OAAO,MAAMC,eAAgC,GAAG;EAC9CC,MAAM,EAAE,CAAC,CAAe;EACxBC,SAAS,EAAEJ,gBAAgB;EAC3B,CAACJ,QAAQ,GAAG;IACVS,IAAI,EAAE;EACR;AACF,CAAC;AAMD,OAAO,MAAMC,YAA0B,GAAG;EACxCH,MAAM,EAAE,CAAC,CAAY;EACrBC,SAAS,EAAEH,aAAa;EACxB,CAACL,QAAQ,GAAG;IACVS,IAAI,EAAE;EACR;AACF,CAAC;AAGD,OAAO,MAAME,SAAoB,GAAG;EAClCJ,MAAM,EAAE,CAAC,CAAS;EAClBC,SAAS,EAAEN,UAAU;EACrB,CAACF,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAMD,OAAO,MAAMI,eAAgC,GAAG;EAC9CN,MAAM,EAAE,CAAC,CAAe;EACxBC,SAAS,EAAEP,gBAAgB;EAC3B,CAACD,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAMD,OAAO,MAAMK,gBAAkC,GAAG;EAChDP,MAAM,EAAE,CAAC,CAAgB;EACzBC,SAAS,EAAEL,iBAAiB;EAC5B,CAACH,QAAQ,GAAG;IACVY,YAAY,EAAE,MAAM;IACpBH,IAAI,EAAE;EACR;AACF,CAAC;AAED,OAAO,MAAMM,aAAa,GAAG;EAC3BC,UAAU,EAAEV,eAAe;EAC3BW,OAAO,EAAEP,YAAY;EACrBQ,IAAI,EAAEP,SAAS;EACfQ,UAAU,EAAEN,eAAe;EAC3BO,WAAW,EAAEN,gBAAgB;EAC7B,CAACd,QAAQ,GAAG;IACVqB,OAAO,EAAE;EACX;AACF,CAAmC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-and-map-types.js","names":["z","ContainerSchema","object","tags","array","string","metadata","record","unknown"],"sources":["array-and-map-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"array-and-map-types.js","names":["z","ContainerSchema","object","tags","array","string","metadata","record","unknown"],"sources":["array-and-map-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const ContainerSchema = z.object({\n tags: z.array(z.string()),\n metadata: z.record(z.string(), z.unknown()),\n});\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,eAAe,GAAGD,CAAC,CAACE,MAAM,CAAC;EACtCC,IAAI,EAAEH,CAAC,CAACI,KAAK,CAACJ,CAAC,CAACK,MAAM,CAAC,CAAC,CAAC;EACzBC,QAAQ,EAAEN,CAAC,CAACO,MAAM,CAACP,CAAC,CAACK,MAAM,CAAC,CAAC,EAAEL,CAAC,CAACQ,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-fields.js","names":["z","FeatureSchema","object","enabled","boolean","isPublic","optional","flags","array"],"sources":["boolean-fields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"boolean-fields.js","names":["z","FeatureSchema","object","enabled","boolean","isPublic","optional","flags","array"],"sources":["boolean-fields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const FeatureSchema = z.object({\n enabled: z.boolean(),\n isPublic: z.boolean().optional(),\n flags: z.array(z.boolean()),\n});\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,aAAa,GAAGD,CAAC,CAACE,MAAM,CAAC;EACpCC,OAAO,EAAEH,CAAC,CAACI,OAAO,CAAC,CAAC;EACpBC,QAAQ,EAAEL,CAAC,CAACI,OAAO,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EAChCC,KAAK,EAAEP,CAAC,CAACQ,KAAK,CAACR,CAAC,CAACI,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-discriminant.js","names":["z","CatSchema","object","meow","string","DogSchema","bark","AnimalCatSchema","extend","kind","literal","AnimalDogSchema","AnimalSchema","discriminatedUnion"],"sources":["custom-discriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"custom-discriminant.js","names":["z","CatSchema","object","meow","string","DogSchema","bark","AnimalCatSchema","extend","kind","literal","AnimalDogSchema","AnimalSchema","discriminatedUnion"],"sources":["custom-discriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const CatSchema = z.object({\n meow: z.string(),\n});\n\nexport const DogSchema = z.object({\n bark: z.string(),\n});\n\nexport const AnimalCatSchema = CatSchema.extend({\n kind: z.literal('cat'),\n});\n\nexport const AnimalDogSchema = DogSchema.extend({\n kind: z.literal('dog'),\n});\n\nexport const AnimalSchema = z.discriminatedUnion('kind', [\n AnimalCatSchema,\n AnimalDogSchema,\n]);\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,SAAS,GAAGD,CAAC,CAACE,MAAM,CAAC;EAChCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMC,SAAS,GAAGL,CAAC,CAACE,MAAM,CAAC;EAChCI,IAAI,EAAEN,CAAC,CAACI,MAAM,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMG,eAAe,GAAGN,SAAS,CAACO,MAAM,CAAC;EAC9CC,IAAI,EAAET,CAAC,CAACU,OAAO,CAAC,KAAK;AACvB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAe,GAAGN,SAAS,CAACG,MAAM,CAAC;EAC9CC,IAAI,EAAET,CAAC,CAACU,OAAO,CAAC,KAAK;AACvB,CAAC,CAAC;AAEF,OAAO,MAAME,YAAY,GAAGZ,CAAC,CAACa,kBAAkB,CAAC,MAAM,EAAE,CACvDN,eAAe,EACfI,eAAe,CAChB,CAAC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datetime-fields.js","names":["z","EventSchema","object","timestamp","string","datetime"],"sources":["datetime-fields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"datetime-fields.js","names":["z","EventSchema","object","timestamp","string","datetime"],"sources":["datetime-fields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const EventSchema = z.object({\n timestamp: z.string().datetime(),\n});\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,WAAW,GAAGD,CAAC,CAACE,MAAM,CAAC;EAClCC,SAAS,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC;AACjC,CAAC,CAAC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-records.js","names":["z","PersonSchema","object","name","string","min","max","age","number","int","email","optional"],"sources":["simple-records.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"simple-records.js","names":["z","PersonSchema","object","name","string","min","max","age","number","int","email","optional"],"sources":["simple-records.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const PersonSchema = z.object({\n name: z.string().min(2).max(50),\n age: z.number().int().min(0).max(150),\n email: z.string().optional(),\n});\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,YAAY,GAAGD,CAAC,CAACE,MAAM,CAAC;EACnCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,EAAE,CAAC;EAC/BC,GAAG,EAAEP,CAAC,CAACQ,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAACJ,GAAG,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,GAAG,CAAC;EACrCI,KAAK,EAAEV,CAAC,CAACI,MAAM,CAAC,CAAC,CAACO,QAAQ,CAAC;AAC7B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union-before-records.js","names":["z","FooSchema","object","value","string","BarSchema","count","number","int","FooBarFooSchema","extend","type","literal","FooBarBarSchema","FooBarSchema","discriminatedUnion"],"sources":["union-before-records.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"union-before-records.js","names":["z","FooSchema","object","value","string","BarSchema","count","number","int","FooBarFooSchema","extend","type","literal","FooBarBarSchema","FooBarSchema","discriminatedUnion"],"sources":["union-before-records.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const FooSchema = z.object({\n value: z.string(),\n});\n\nexport const BarSchema = z.object({\n count: z.number().int(),\n});\n\nexport const FooBarFooSchema = FooSchema.extend({\n type: z.literal('foo'),\n});\n\nexport const FooBarBarSchema = BarSchema.extend({\n type: z.literal('bar'),\n});\n\nexport const FooBarSchema = z.discriminatedUnion('type', [\n FooBarFooSchema,\n FooBarBarSchema,\n]);\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,SAAS,GAAGD,CAAC,CAACE,MAAM,CAAC;EAChCC,KAAK,EAAEH,CAAC,CAACI,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,MAAMC,SAAS,GAAGL,CAAC,CAACE,MAAM,CAAC;EAChCI,KAAK,EAAEN,CAAC,CAACO,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAe,GAAGR,SAAS,CAACS,MAAM,CAAC;EAC9CC,IAAI,EAAEX,CAAC,CAACY,OAAO,CAAC,KAAK;AACvB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAe,GAAGR,SAAS,CAACK,MAAM,CAAC;EAC9CC,IAAI,EAAEX,CAAC,CAACY,OAAO,CAAC,KAAK;AACvB,CAAC,CAAC;AAEF,OAAO,MAAME,YAAY,GAAGd,CAAC,CAACe,kBAAkB,CAAC,MAAM,EAAE,CACvDN,eAAe,EACfI,eAAe,CAChB,CAAC","ignoreList":[]}
|
package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union-types.js","names":["z","ObjectNodeSchema","object","x","number","y","label","string","optional","TextBoxSchema","text","NodeObjectSchema","extend","type","literal","NodeTextBoxSchema","NodeSchema","discriminatedUnion"],"sources":["union-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"union-types.js","names":["z","ObjectNodeSchema","object","x","number","y","label","string","optional","TextBoxSchema","text","NodeObjectSchema","extend","type","literal","NodeTextBoxSchema","NodeSchema","discriminatedUnion"],"sources":["union-types.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nimport { z } from 'zod';\n\nexport const ObjectNodeSchema = z.object({\n x: z.number(),\n y: z.number(),\n label: z.string().optional(),\n});\n\nexport const TextBoxSchema = z.object({\n x: z.number(),\n y: z.number(),\n text: z.string(),\n});\n\nexport const NodeObjectSchema = ObjectNodeSchema.extend({\n type: z.literal('object'),\n});\n\nexport const NodeTextBoxSchema = TextBoxSchema.extend({\n type: z.literal('text-box'),\n});\n\nexport const NodeSchema = z.discriminatedUnion('type', [\n NodeObjectSchema,\n NodeTextBoxSchema,\n]);\n"],"mappings":"AAAA;;AAEA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,gBAAgB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACvCC,CAAC,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC;EACbC,CAAC,EAAEL,CAAC,CAACI,MAAM,CAAC,CAAC;EACbE,KAAK,EAAEN,CAAC,CAACO,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAEF,OAAO,MAAMC,aAAa,GAAGT,CAAC,CAACE,MAAM,CAAC;EACpCC,CAAC,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC;EACbC,CAAC,EAAEL,CAAC,CAACI,MAAM,CAAC,CAAC;EACbM,IAAI,EAAEV,CAAC,CAACO,MAAM,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMI,gBAAgB,GAAGV,gBAAgB,CAACW,MAAM,CAAC;EACtDC,IAAI,EAAEb,CAAC,CAACc,OAAO,CAAC,QAAQ;AAC1B,CAAC,CAAC;AAEF,OAAO,MAAMC,iBAAiB,GAAGN,aAAa,CAACG,MAAM,CAAC;EACpDC,IAAI,EAAEb,CAAC,CAACc,OAAO,CAAC,UAAU;AAC5B,CAAC,CAAC;AAEF,OAAO,MAAME,UAAU,GAAGhB,CAAC,CAACiB,kBAAkB,CAAC,MAAM,EAAE,CACrDN,gBAAgB,EAChBI,iBAAiB,CAClB,CAAC","ignoreList":[]}
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { formatVariantName } from "@palantir/pack.schema";
|
|
17
18
|
import invariant from "tiny-invariant";
|
|
18
|
-
import { formatVariantName } from "../formatVariantName.js";
|
|
19
19
|
import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
|
|
20
20
|
export class ModelGenerator {
|
|
21
21
|
constructor(schema, options = undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateModelsFromIr.js","names":["invariant","formatVariantName","GENERATED_FILE_HEADER","ModelGenerator","constructor","schema","options","undefined","generateModels","typeImportPath","schemaImportPath","modelTypesPackage","imports","typeNames","Set","primaryModelKeys","modelKey","model","models","type","variantName","Object","keys","union","variants","formattedVariantName","variantTypeName","key","add","typeImports","Array","from","sort","join","schemaNames","variantSchemaName","schemaImports","modelConstants","generateModelConstants","documentSchema","generateDocumentSchema","Promise","resolve","constants","processedModels","process","env","NODE_ENV","has","discriminant","modelConstant","generateModelConstant","push","typeName","modelName","schemaName","externalRefFields","extractExternalRefFieldTypes","metadataFields","modelType","length","entries","map","field","metadataCode","record","fields","fieldType","valueType","value","modelEntries","generateModelsFromIr","generator"],"sources":["generateModelsFromIr.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nexport interface ModelGeneratorOptions {\n typeImportPath?: string;\n schemaImportPath?: string;\n}\n\nexport class ModelGenerator {\n constructor(\n private readonly schema: IRealTimeDocumentSchema,\n private readonly options: ModelGeneratorOptions | undefined = undefined,\n ) {}\n\n public generateModels(): Promise<string> {\n const typeImportPath = this.options?.typeImportPath ?? \"./types.js\";\n const schemaImportPath = this.options?.schemaImportPath ?? \"./schema.js\";\n const modelTypesPackage = \"@palantir/pack.document-schema.model-types\";\n\n // Generate imports\n let imports =\n `import type { DocumentSchema, RecordModel, UnionModel } from \"${modelTypesPackage}\";\\n`;\n imports += `import { Metadata } from \"${modelTypesPackage}\";\\n`;\n\n // Collect all type names (primary models + union variants)\n const typeNames = new Set(this.schema.primaryModelKeys);\n\n // Add union variant type names\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n typeNames.add(variantTypeName);\n }\n }\n }\n\n const typeImports = Array.from(typeNames).sort().join(\", \");\n imports += `import type { ${typeImports} } from \"${typeImportPath}\";\\n`;\n\n // Collect all schema names (primary models + union variants)\n const schemaNames = new Set<string>();\n for (const modelKey of this.schema.primaryModelKeys) {\n schemaNames.add(`${modelKey}Schema`);\n\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantSchemaName = `${model.union.key}${formattedVariantName}Schema`;\n schemaNames.add(variantSchemaName);\n }\n }\n }\n\n const schemaImports = Array.from(schemaNames).sort().join(\", \");\n imports += `import { ${schemaImports} } from \"${schemaImportPath}\";\\n\\n`;\n\n // Generate model constants\n const modelConstants = this.generateModelConstants();\n\n // Generate DocumentSchema\n const documentSchema = this.generateDocumentSchema();\n\n return Promise.resolve(\n GENERATED_FILE_HEADER + imports + modelConstants + \"\\n\\n\" + documentSchema + \"\\n\",\n );\n }\n\n private generateModelConstants(): string {\n const constants: string[] = [];\n const processedModels = new Set<string>();\n\n // Generate models for primary keys and their union variants\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n invariant(model != null, `Model not found: ${modelKey}`);\n\n // Generate primary model constant\n if (!processedModels.has(modelKey)) {\n const discriminant = model.type === \"union\" ? model.union.discriminant : undefined;\n const modelConstant = this.generateModelConstant(modelKey, modelKey, discriminant);\n constants.push(modelConstant);\n processedModels.add(modelKey);\n }\n\n // Generate union variant constants\n if (model.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n\n if (!processedModels.has(variantTypeName)) {\n const modelConstant = this.generateModelConstant(\n variantTypeName,\n variantTypeName,\n model.union.discriminant,\n );\n constants.push(modelConstant);\n processedModels.add(variantTypeName);\n }\n }\n }\n }\n\n return constants.join(\"\\n\\n\");\n }\n\n private generateModelConstant(\n typeName: string,\n modelName: string,\n discriminant?: string,\n ): string {\n const schemaName = `${typeName}Schema`;\n const externalRefFields = this.extractExternalRefFieldTypes(modelName);\n\n const metadataFields: string[] = [];\n const modelType = discriminant != null ? \"UnionModel\" : \"RecordModel\";\n\n if (discriminant != null) {\n metadataFields.push(` discriminant: \"${discriminant}\",`);\n }\n\n if (externalRefFields.length > 0) {\n const entries = externalRefFields.map(([field, type]) => ` ${field}: \"${type}\",`).join(\n \"\\n\",\n );\n metadataFields.push(` externalRefFieldTypes: {\\n${entries}\\n },`);\n }\n\n metadataFields.push(` name: \"${modelName}\",`);\n\n const metadataCode = metadataFields.length > 0 ? `\\n${metadataFields.join(\"\\n\")}\\n ` : \"\";\n\n return `export interface ${modelName}Model extends ${modelType}<${typeName}, typeof ${schemaName}> {}\nexport const ${modelName}Model: ${modelName}Model = {\n __type: {} as ${typeName},\n zodSchema: ${schemaName},\n [Metadata]: {${metadataCode}},\n};`;\n }\n\n private extractExternalRefFieldTypes(modelName: string): Array<[string, string]> {\n const model = this.schema.models[modelName];\n if (model?.type !== \"record\") {\n return [];\n }\n\n const externalRefFields: Array<[string, string]> = [];\n for (const field of model.record.fields) {\n if (field.fieldType.type === \"value\") {\n const valueType = field.fieldType.value.type;\n if (valueType === \"resourceRef\") {\n externalRefFields.push([field.key, \"resourceRef\"]);\n } else if (valueType === \"docRef\") {\n externalRefFields.push([field.key, \"docRef\"]);\n } else if (valueType === \"mediaRef\") {\n externalRefFields.push([field.key, \"mediaRef\"]);\n } else if (valueType === \"object\") {\n externalRefFields.push([field.key, \"objectRef\"]);\n } else if (valueType === \"userRef\") {\n externalRefFields.push([field.key, \"userRef\"]);\n }\n }\n }\n\n return externalRefFields;\n }\n\n private generateDocumentSchema(): string {\n const modelEntries: string[] = [];\n const processedModels = new Set<string>();\n\n // Collect all model names that will be generated\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n invariant(model != null, `Model not found: ${modelKey}`);\n\n // Add primary model\n if (!processedModels.has(modelKey)) {\n modelEntries.push(` ${modelKey}: ${modelKey}Model`);\n processedModels.add(modelKey);\n }\n\n // Add union variant models\n if (model.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n\n if (!processedModels.has(variantTypeName)) {\n modelEntries.push(` ${variantTypeName}: ${variantTypeName}Model`);\n processedModels.add(variantTypeName);\n }\n }\n }\n }\n\n return `export const DocumentModel = {\n${modelEntries.join(\",\\n\")},\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\\n\n export type DocumentModel = typeof DocumentModel;`;\n }\n}\n\nexport async function generateModelsFromIr(\n schema: IRealTimeDocumentSchema,\n options?: ModelGeneratorOptions,\n): Promise<string> {\n const generator = new ModelGenerator(schema, options);\n return generator.generateModels();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateModelsFromIr.js","names":["formatVariantName","invariant","GENERATED_FILE_HEADER","ModelGenerator","constructor","schema","options","undefined","generateModels","typeImportPath","schemaImportPath","modelTypesPackage","imports","typeNames","Set","primaryModelKeys","modelKey","model","models","type","variantName","Object","keys","union","variants","formattedVariantName","variantTypeName","key","add","typeImports","Array","from","sort","join","schemaNames","variantSchemaName","schemaImports","modelConstants","generateModelConstants","documentSchema","generateDocumentSchema","Promise","resolve","constants","processedModels","process","env","NODE_ENV","has","discriminant","modelConstant","generateModelConstant","push","typeName","modelName","schemaName","externalRefFields","extractExternalRefFieldTypes","metadataFields","modelType","length","entries","map","field","metadataCode","record","fields","fieldType","valueType","value","modelEntries","generateModelsFromIr","generator"],"sources":["generateModelsFromIr.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatVariantName } from \"@palantir/pack.schema\";\nimport invariant from \"tiny-invariant\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nexport interface ModelGeneratorOptions {\n typeImportPath?: string;\n schemaImportPath?: string;\n}\n\nexport class ModelGenerator {\n constructor(\n private readonly schema: IRealTimeDocumentSchema,\n private readonly options: ModelGeneratorOptions | undefined = undefined,\n ) {}\n\n public generateModels(): Promise<string> {\n const typeImportPath = this.options?.typeImportPath ?? \"./types.js\";\n const schemaImportPath = this.options?.schemaImportPath ?? \"./schema.js\";\n const modelTypesPackage = \"@palantir/pack.document-schema.model-types\";\n\n // Generate imports\n let imports =\n `import type { DocumentSchema, RecordModel, UnionModel } from \"${modelTypesPackage}\";\\n`;\n imports += `import { Metadata } from \"${modelTypesPackage}\";\\n`;\n\n // Collect all type names (primary models + union variants)\n const typeNames = new Set(this.schema.primaryModelKeys);\n\n // Add union variant type names\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n typeNames.add(variantTypeName);\n }\n }\n }\n\n const typeImports = Array.from(typeNames).sort().join(\", \");\n imports += `import type { ${typeImports} } from \"${typeImportPath}\";\\n`;\n\n // Collect all schema names (primary models + union variants)\n const schemaNames = new Set<string>();\n for (const modelKey of this.schema.primaryModelKeys) {\n schemaNames.add(`${modelKey}Schema`);\n\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantSchemaName = `${model.union.key}${formattedVariantName}Schema`;\n schemaNames.add(variantSchemaName);\n }\n }\n }\n\n const schemaImports = Array.from(schemaNames).sort().join(\", \");\n imports += `import { ${schemaImports} } from \"${schemaImportPath}\";\\n\\n`;\n\n // Generate model constants\n const modelConstants = this.generateModelConstants();\n\n // Generate DocumentSchema\n const documentSchema = this.generateDocumentSchema();\n\n return Promise.resolve(\n GENERATED_FILE_HEADER + imports + modelConstants + \"\\n\\n\" + documentSchema + \"\\n\",\n );\n }\n\n private generateModelConstants(): string {\n const constants: string[] = [];\n const processedModels = new Set<string>();\n\n // Generate models for primary keys and their union variants\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n invariant(model != null, `Model not found: ${modelKey}`);\n\n // Generate primary model constant\n if (!processedModels.has(modelKey)) {\n const discriminant = model.type === \"union\" ? model.union.discriminant : undefined;\n const modelConstant = this.generateModelConstant(modelKey, modelKey, discriminant);\n constants.push(modelConstant);\n processedModels.add(modelKey);\n }\n\n // Generate union variant constants\n if (model.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n\n if (!processedModels.has(variantTypeName)) {\n const modelConstant = this.generateModelConstant(\n variantTypeName,\n variantTypeName,\n model.union.discriminant,\n );\n constants.push(modelConstant);\n processedModels.add(variantTypeName);\n }\n }\n }\n }\n\n return constants.join(\"\\n\\n\");\n }\n\n private generateModelConstant(\n typeName: string,\n modelName: string,\n discriminant?: string,\n ): string {\n const schemaName = `${typeName}Schema`;\n const externalRefFields = this.extractExternalRefFieldTypes(modelName);\n\n const metadataFields: string[] = [];\n const modelType = discriminant != null ? \"UnionModel\" : \"RecordModel\";\n\n if (discriminant != null) {\n metadataFields.push(` discriminant: \"${discriminant}\",`);\n }\n\n if (externalRefFields.length > 0) {\n const entries = externalRefFields.map(([field, type]) => ` ${field}: \"${type}\",`).join(\n \"\\n\",\n );\n metadataFields.push(` externalRefFieldTypes: {\\n${entries}\\n },`);\n }\n\n metadataFields.push(` name: \"${modelName}\",`);\n\n const metadataCode = metadataFields.length > 0 ? `\\n${metadataFields.join(\"\\n\")}\\n ` : \"\";\n\n return `export interface ${modelName}Model extends ${modelType}<${typeName}, typeof ${schemaName}> {}\nexport const ${modelName}Model: ${modelName}Model = {\n __type: {} as ${typeName},\n zodSchema: ${schemaName},\n [Metadata]: {${metadataCode}},\n};`;\n }\n\n private extractExternalRefFieldTypes(modelName: string): Array<[string, string]> {\n const model = this.schema.models[modelName];\n if (model?.type !== \"record\") {\n return [];\n }\n\n const externalRefFields: Array<[string, string]> = [];\n for (const field of model.record.fields) {\n if (field.fieldType.type === \"value\") {\n const valueType = field.fieldType.value.type;\n if (valueType === \"resourceRef\") {\n externalRefFields.push([field.key, \"resourceRef\"]);\n } else if (valueType === \"docRef\") {\n externalRefFields.push([field.key, \"docRef\"]);\n } else if (valueType === \"mediaRef\") {\n externalRefFields.push([field.key, \"mediaRef\"]);\n } else if (valueType === \"object\") {\n externalRefFields.push([field.key, \"objectRef\"]);\n } else if (valueType === \"userRef\") {\n externalRefFields.push([field.key, \"userRef\"]);\n }\n }\n }\n\n return externalRefFields;\n }\n\n private generateDocumentSchema(): string {\n const modelEntries: string[] = [];\n const processedModels = new Set<string>();\n\n // Collect all model names that will be generated\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n invariant(model != null, `Model not found: ${modelKey}`);\n\n // Add primary model\n if (!processedModels.has(modelKey)) {\n modelEntries.push(` ${modelKey}: ${modelKey}Model`);\n processedModels.add(modelKey);\n }\n\n // Add union variant models\n if (model.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n\n if (!processedModels.has(variantTypeName)) {\n modelEntries.push(` ${variantTypeName}: ${variantTypeName}Model`);\n processedModels.add(variantTypeName);\n }\n }\n }\n }\n\n return `export const DocumentModel = {\n${modelEntries.join(\",\\n\")},\n [Metadata]: {\n version: 1,\n },\n} as const satisfies DocumentSchema;\\n\n export type DocumentModel = typeof DocumentModel;`;\n }\n}\n\nexport async function generateModelsFromIr(\n schema: IRealTimeDocumentSchema,\n options?: ModelGeneratorOptions,\n): Promise<string> {\n const generator = new ModelGenerator(schema, options);\n return generator.generateModels();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { formatVariantName } from "@palantir/pack.schema";
|
|
17
18
|
import consola from "consola";
|
|
18
19
|
import invariant from "tiny-invariant";
|
|
19
20
|
import { assertNever } from "../assertNever.js";
|
|
20
|
-
import { formatVariantName } from "../formatVariantName.js";
|
|
21
21
|
import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
|
|
22
22
|
class ZodSchemaGenerator {
|
|
23
23
|
constructor(schema, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateZodSchemasFromIr.js","names":["consola","invariant","assertNever","formatVariantName","GENERATED_FILE_HEADER","ZodSchemaGenerator","constructor","schema","options","generateSDK","Error","generateTypes","imports","typeImportPath","typeNames","Set","primaryModelKeys","modelKey","model","models","type","variantName","Object","keys","union","variants","formattedVariantName","variantTypeName","key","add","typeImports","Array","from","sort","join","schemasCode","generateZodSchemas","schemaLines","emittedModels","recordSchemas","Map","unionDefinitions","modelTypeKey","process","env","NODE_ENV","schemaCode","generateRecordSchema","record","satisfiesClause","set","push","remainingUnions","madeProgress","size","allDependenciesEmitted","values","every","variantModelKey","has","unionSchemas","generateUnionWithVariants","delete","warn","generateModel","generateUnionSchema","fieldEntryLines","field","fields","fieldSchema","generateFieldSchema","variantSchemaNames","entries","discriminatorField","discriminant","variantSchemas","variantSchemaName","variantModel","variantSchemaCode","recordKey","unionKey","unionSchema","unionSatisfiesClause","fieldValueSchemaStr","generateFieldTypeSchema","fieldType","isOptional","arrayElementSchema","generateFieldValueSchema","array","value","keySchema","map","valueSchema","setElementSchema","fieldValue","doubleSchema","double","minValue","maxValue","intSchema","integer","refVariantsLines","modelType","modelRef","modelTypes","includes","length","stringSchema","string","minLength","maxLength","generateZodSchemasFromIr","generator"],"sources":["generateZodSchemasFromIr.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport consola from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport type {\n IFieldDef,\n IFieldTypeUnion,\n IFieldValueUnion,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { assertNever } from \"../assertNever.js\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nexport interface ZodGeneratorOptions {\n namespace?: string;\n includeTypes?: boolean;\n includeCRDT?: boolean;\n typeImportPath?: string;\n}\n\nclass ZodSchemaGenerator {\n constructor(\n private readonly schema: IRealTimeDocumentSchema,\n private readonly options?: ZodGeneratorOptions,\n ) {}\n\n public generateSDK(_options: ZodGeneratorOptions): string {\n throw new Error(\n \"SDK generation not yet implemented - placeholder for future development\",\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async generateTypes(): Promise<string> {\n let imports = \"import { z } from 'zod';\\n\";\n\n if (this.options?.typeImportPath) {\n imports = \"import type { ZodType } from \\\"zod\\\";\\n\" + imports;\n\n // Collect all type names from the schema (primary models + union variants)\n const typeNames = new Set(this.schema.primaryModelKeys);\n\n // Add union variant type names\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n typeNames.add(variantTypeName);\n }\n }\n }\n\n const typeImports = Array.from(typeNames).sort().join(\", \");\n imports += `import type { ${typeImports} } from \"${this.options.typeImportPath}\";\\n`;\n }\n\n imports += \"\\n\";\n const schemasCode = this.generateZodSchemas();\n return GENERATED_FILE_HEADER + imports + schemasCode + \"\\n\";\n }\n\n private generateZodSchemas(): string {\n const schemaLines: string[] = [];\n const emittedModels = new Set<string>();\n const recordSchemas = new Map<string, string>();\n const unionDefinitions = new Map<string, IUnionDef>();\n\n // First, categorize all models and generate record schemas\n for (const modelTypeKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelTypeKey];\n invariant(model != null, `Model not found: ${modelTypeKey}`);\n\n switch (model.type) {\n case \"record\": {\n const schemaCode = this.generateRecordSchema(model.record);\n const satisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${modelTypeKey}>`\n : \"\";\n recordSchemas.set(\n modelTypeKey,\n `export const ${modelTypeKey}Schema = ${schemaCode}${satisfiesClause};`,\n );\n break;\n }\n case \"union\": {\n unionDefinitions.set(modelTypeKey, model.union);\n break;\n }\n }\n }\n\n // Emit all record schemas first\n for (const [modelTypeKey, schemaCode] of recordSchemas) {\n schemaLines.push(schemaCode);\n emittedModels.add(modelTypeKey);\n }\n\n // Now handle unions with proper dependency ordering\n const remainingUnions = new Map(unionDefinitions);\n let madeProgress = true;\n\n while (remainingUnions.size > 0 && madeProgress) {\n madeProgress = false;\n\n for (const [modelTypeKey, union] of remainingUnions) {\n // Check if all dependencies are already emitted\n const allDependenciesEmitted = Object.values(union.variants).every(\n variantModelKey => emittedModels.has(variantModelKey),\n );\n\n if (allDependenciesEmitted) {\n // Generate the union with its variant schemas\n const unionSchemas = this.generateUnionWithVariants(union);\n schemaLines.push(unionSchemas);\n emittedModels.add(modelTypeKey);\n remainingUnions.delete(modelTypeKey);\n madeProgress = true;\n }\n }\n }\n\n // If there are still remaining unions, we have circular dependencies or missing models\n if (remainingUnions.size > 0) {\n consola.warn(\n `Warning: Could not generate schemas for unions due to circular or missing dependencies: ${\n Array.from(remainingUnions.keys()).join(\", \")\n }`,\n );\n // Emit them anyway with a comment\n for (const [modelTypeKey, union] of remainingUnions) {\n schemaLines.push(`// Warning: Union ${modelTypeKey} may have unresolved dependencies`);\n const unionSchemas = this.generateUnionWithVariants(union);\n schemaLines.push(unionSchemas);\n }\n }\n\n return schemaLines.join(\"\\n\\n\");\n }\n\n private generateModel(\n model: IModelDef,\n ): string {\n switch (model.type) {\n case \"record\":\n return this.generateRecordSchema(model.record);\n case \"union\":\n return this.generateUnionSchema(model.union);\n default:\n assertNever(model);\n }\n }\n\n private generateRecordSchema(\n record: IRecordDef,\n ): string {\n const fieldEntryLines: string[] = [];\n for (const field of record.fields) {\n const fieldSchema = this.generateFieldSchema(field);\n fieldEntryLines.push(` ${field.key}: ${fieldSchema}`);\n }\n return `z.object({\\n${fieldEntryLines.join(\",\\n\")}\\n})`;\n }\n\n private generateUnionSchema(\n union: IUnionDef,\n ): string {\n // Just return the discriminated union without variant schemas\n const variantSchemaNames: string[] = [];\n\n for (const [variantName] of Object.entries(union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n variantSchemaNames.push(`${union.key}${formattedVariantName}Schema`);\n }\n\n const discriminatorField = union.discriminant ?? \"type\";\n return `z.discriminatedUnion(\"${discriminatorField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n])`;\n }\n\n private generateUnionWithVariants(\n union: IUnionDef,\n ): string {\n const variantSchemas: string[] = [];\n const variantSchemaNames: string[] = [];\n\n // Generate variant schemas\n for (const [variantName, variantModelKey] of Object.entries(union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantSchemaName = `${union.key}${formattedVariantName}Schema`;\n variantSchemaNames.push(variantSchemaName);\n\n // Look up the model from the schema\n const variantModel = this.schema.models[variantModelKey];\n invariant(variantModel != null, `Model not found: ${variantModelKey}`);\n\n let variantSchemaCode: string;\n switch (variantModel.type) {\n case \"record\": {\n // For record variants, reference the existing record schema and extend with discriminator\n const recordKey = variantModel.record.key;\n const discriminatorField = ` ${union.discriminant}: z.literal(\"${variantName}\")`;\n\n // Extend the existing record schema with the discriminator field\n // Note: We assume records are defined before unions, so we can directly reference them\n variantSchemaCode = `${recordKey}Schema.extend({\\n${discriminatorField}\\n})`;\n break;\n }\n case \"union\": {\n // For union variants (nested unions), wrap with discriminator and value\n const unionKey = variantModel.union.key;\n variantSchemaCode =\n `z.object({\\n ${union.discriminant}: z.literal(\"${variantName}\"),\\n value: z.lazy(() => ${unionKey}Schema)\\n})`;\n break;\n }\n default:\n assertNever(variantModel);\n }\n\n // Generate satisfies clause for variant schemas if typeImportPath is provided\n const variantTypeName = `${union.key}${formattedVariantName}`;\n const satisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${variantTypeName}>`\n : \"\";\n variantSchemas.push(\n `export const ${variantSchemaName} = ${variantSchemaCode}${satisfiesClause};`,\n );\n }\n\n // Generate the discriminated union\n const discriminatorField = union.discriminant || \"type\";\n const unionSchema = `z.discriminatedUnion(\"${discriminatorField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n])`;\n\n // Generate satisfies clause for the main union schema if typeImportPath is provided\n const unionSatisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${union.key}>`\n : \"\";\n\n // Return the variant schemas and the union schema\n return variantSchemas.join(\"\\n\\n\")\n + `\\n\\nexport const ${union.key}Schema = ${unionSchema}${unionSatisfiesClause};`;\n }\n\n private generateFieldSchema(\n field: IFieldDef,\n ): string {\n const fieldValueSchemaStr = this.generateFieldTypeSchema(field.fieldType);\n\n if (field.isOptional) {\n return `${fieldValueSchemaStr}.optional()`;\n }\n\n return fieldValueSchemaStr;\n }\n\n private generateFieldTypeSchema(\n fieldType: IFieldTypeUnion,\n ): string {\n switch (fieldType.type) {\n case \"array\": {\n const arrayElementSchema = this.generateFieldValueSchema(\n fieldType.array.value,\n );\n return `z.array(${arrayElementSchema})`;\n }\n\n case \"map\": {\n const keySchema = this.generateFieldValueSchema(\n fieldType.map.key,\n );\n const valueSchema = this.generateFieldValueSchema(\n fieldType.map.value,\n );\n return `z.record(${keySchema}, ${valueSchema})`;\n }\n case \"set\": {\n const setElementSchema = this.generateFieldValueSchema(\n fieldType.set.value,\n );\n return `z.array(${setElementSchema})`;\n } // Zod doesn't have Set, use array\n\n case \"value\":\n return this.generateFieldValueSchema(fieldType.value);\n\n default:\n assertNever(fieldType);\n }\n }\n\n private generateFieldValueSchema(\n fieldValue: IFieldValueUnion,\n ): string {\n switch (fieldValue.type) {\n case \"boolean\":\n return \"z.boolean()\";\n\n case \"datetime\":\n return \"z.string().datetime()\";\n\n case \"double\": {\n let doubleSchema = \"z.number()\";\n if (fieldValue.double.minValue != null) {\n doubleSchema += `.min(${fieldValue.double.minValue})`;\n }\n if (fieldValue.double.maxValue != null) {\n doubleSchema += `.max(${fieldValue.double.maxValue})`;\n }\n return doubleSchema;\n }\n\n case \"integer\": {\n let intSchema = \"z.number().int()\";\n if (fieldValue.integer.minValue != null) {\n intSchema += `.min(${fieldValue.integer.minValue})`;\n }\n if (fieldValue.integer.maxValue != null) {\n intSchema += `.max(${fieldValue.integer.maxValue})`;\n }\n return intSchema;\n }\n\n case \"modelRef\": {\n const refVariantsLines: string[] = [];\n\n for (const modelType of fieldValue.modelRef.modelTypes) {\n const model = this.schema.models[modelType];\n invariant(model != null, `Model not found: ${modelType}`);\n\n // Referent the model directly\n if (this.schema.primaryModelKeys.includes(modelType)) {\n return `z.lazy(() => ${modelType}Schema)`;\n }\n\n // Generate inline model\n // TODO: should not be possible to have recursive nested models but we should guard against it\n return this.generateModel(model);\n }\n\n if (refVariantsLines.length === 0) {\n return \"z.unknown()\";\n }\n\n if (refVariantsLines.length === 1) {\n return refVariantsLines[0]!;\n }\n\n return `z.union([${refVariantsLines.join(\", \")}])`;\n }\n\n case \"string\": {\n let stringSchema = \"z.string()\";\n if (fieldValue.string.minLength != null) {\n stringSchema += `.min(${fieldValue.string.minLength})`;\n }\n if (fieldValue.string.maxLength != null) {\n stringSchema += `.max(${fieldValue.string.maxLength})`;\n }\n return stringSchema;\n }\n\n case \"text\":\n return \"z.unknown()\";\n\n case \"unmanagedJson\":\n return \"z.unknown()\";\n\n case \"resourceRef\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"userRef\":\n return \"z.string()\"; // Assume these are string IDs\n\n default:\n assertNever(fieldValue);\n }\n }\n}\n\nexport async function generateZodSchemasFromIr(\n schema: IRealTimeDocumentSchema,\n options?: ZodGeneratorOptions,\n): Promise<string> {\n const generator = new ZodSchemaGenerator(schema, options);\n return generator.generateTypes();\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,OAAO,MAAM,SAAS;AAC7B,OAAOC,SAAS,MAAM,gBAAgB;AAUtC,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,qBAAqB,QAAQ,2BAA2B;AASjE,MAAMC,kBAAkB,CAAC;EACvBC,WAAWA,CACQC,MAA+B,EAC/BC,OAA6B,EAC9C;IAAA,KAFiBD,MAA+B,GAA/BA,MAA+B;IAAA,KAC/BC,OAA6B,GAA7BA,OAA6B;EAC7C;EAEIC,WAAWA,CAAA,EAAwC;IACxD,MAAM,IAAIC,KAAK,CACb,yEACF,CAAC;EACH;;EAEA;EACA,MAAaC,aAAaA,CAAA,EAAoB;IAC5C,IAAIC,OAAO,GAAG,4BAA4B;IAE1C,IAAI,IAAI,CAACJ,OAAO,EAAEK,cAAc,EAAE;MAChCD,OAAO,GAAG,yCAAyC,GAAGA,OAAO;;MAE7D;MACA,MAAME,SAAS,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACR,MAAM,CAACS,gBAAgB,CAAC;;MAEvD;MACA,KAAK,MAAMC,QAAQ,IAAI,IAAI,CAACV,MAAM,CAACS,gBAAgB,EAAE;QACnD,MAAME,KAAK,GAAG,IAAI,CAACX,MAAM,CAACY,MAAM,CAACF,QAAQ,CAAC;QAC1C,IAAIC,KAAK,EAAEE,IAAI,KAAK,OAAO,EAAE;UAC3B,KAAK,MAAMC,WAAW,IAAIC,MAAM,CAACC,IAAI,CAACL,KAAK,CAACM,KAAK,CAACC,QAAQ,CAAC,EAAE;YAC3D,MAAMC,oBAAoB,GAAGvB,iBAAiB,CAACkB,WAAW,CAAC;YAC3D,MAAMM,eAAe,GAAG,GAAGT,KAAK,CAACM,KAAK,CAACI,GAAG,GAAGF,oBAAoB,EAAE;YACnEZ,SAAS,CAACe,GAAG,CAACF,eAAe,CAAC;UAChC;QACF;MACF;MAEA,MAAMG,WAAW,GAAGC,KAAK,CAACC,IAAI,CAAClB,SAAS,CAAC,CAACmB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;MAC3DtB,OAAO,IAAI,iBAAiBkB,WAAW,YAAY,IAAI,CAACtB,OAAO,CAACK,cAAc,MAAM;IACtF;IAEAD,OAAO,IAAI,IAAI;IACf,MAAMuB,WAAW,GAAG,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC7C,OAAOhC,qBAAqB,GAAGQ,OAAO,GAAGuB,WAAW,GAAG,IAAI;EAC7D;EAEQC,kBAAkBA,CAAA,EAAW;IACnC,MAAMC,WAAqB,GAAG,EAAE;IAChC,MAAMC,aAAa,GAAG,IAAIvB,GAAG,CAAS,CAAC;IACvC,MAAMwB,aAAa,GAAG,IAAIC,GAAG,CAAiB,CAAC;IAC/C,MAAMC,gBAAgB,GAAG,IAAID,GAAG,CAAoB,CAAC;;IAErD;IACA,KAAK,MAAME,YAAY,IAAI,IAAI,CAACnC,MAAM,CAACS,gBAAgB,EAAE;MACvD,MAAME,KAAK,GAAG,IAAI,CAACX,MAAM,CAACY,MAAM,CAACuB,YAAY,CAAC;MAC9C,EAAUxB,KAAK,IAAI,IAAI,IAAAyB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAvB5C,SAAS,QAAgB,oBAAoByC,YAAY,EAAE,IAA3DzC,SAAS;MAET,QAAQiB,KAAK,CAACE,IAAI;QAChB,KAAK,QAAQ;UAAE;YACb,MAAM0B,UAAU,GAAG,IAAI,CAACC,oBAAoB,CAAC7B,KAAK,CAAC8B,MAAM,CAAC;YAC1D,MAAMC,eAAe,GAAG,IAAI,CAACzC,OAAO,EAAEK,cAAc,GAChD,sBAAsB6B,YAAY,GAAG,GACrC,EAAE;YACNH,aAAa,CAACW,GAAG,CACfR,YAAY,EACZ,gBAAgBA,YAAY,YAAYI,UAAU,GAAGG,eAAe,GACtE,CAAC;YACD;UACF;QACA,KAAK,OAAO;UAAE;YACZR,gBAAgB,CAACS,GAAG,CAACR,YAAY,EAAExB,KAAK,CAACM,KAAK,CAAC;YAC/C;UACF;MACF;IACF;;IAEA;IACA,KAAK,MAAM,CAACkB,YAAY,EAAEI,UAAU,CAAC,IAAIP,aAAa,EAAE;MACtDF,WAAW,CAACc,IAAI,CAACL,UAAU,CAAC;MAC5BR,aAAa,CAACT,GAAG,CAACa,YAAY,CAAC;IACjC;;IAEA;IACA,MAAMU,eAAe,GAAG,IAAIZ,GAAG,CAACC,gBAAgB,CAAC;IACjD,IAAIY,YAAY,GAAG,IAAI;IAEvB,OAAOD,eAAe,CAACE,IAAI,GAAG,CAAC,IAAID,YAAY,EAAE;MAC/CA,YAAY,GAAG,KAAK;MAEpB,KAAK,MAAM,CAACX,YAAY,EAAElB,KAAK,CAAC,IAAI4B,eAAe,EAAE;QACnD;QACA,MAAMG,sBAAsB,GAAGjC,MAAM,CAACkC,MAAM,CAAChC,KAAK,CAACC,QAAQ,CAAC,CAACgC,KAAK,CAChEC,eAAe,IAAIpB,aAAa,CAACqB,GAAG,CAACD,eAAe,CACtD,CAAC;QAED,IAAIH,sBAAsB,EAAE;UAC1B;UACA,MAAMK,YAAY,GAAG,IAAI,CAACC,yBAAyB,CAACrC,KAAK,CAAC;UAC1Da,WAAW,CAACc,IAAI,CAACS,YAAY,CAAC;UAC9BtB,aAAa,CAACT,GAAG,CAACa,YAAY,CAAC;UAC/BU,eAAe,CAACU,MAAM,CAACpB,YAAY,CAAC;UACpCW,YAAY,GAAG,IAAI;QACrB;MACF;IACF;;IAEA;IACA,IAAID,eAAe,CAACE,IAAI,GAAG,CAAC,EAAE;MAC5BtD,OAAO,CAAC+D,IAAI,CACV,2FACEhC,KAAK,CAACC,IAAI,CAACoB,eAAe,CAAC7B,IAAI,CAAC,CAAC,CAAC,CAACW,IAAI,CAAC,IAAI,CAAC,EAEjD,CAAC;MACD;MACA,KAAK,MAAM,CAACQ,YAAY,EAAElB,KAAK,CAAC,IAAI4B,eAAe,EAAE;QACnDf,WAAW,CAACc,IAAI,CAAC,qBAAqBT,YAAY,mCAAmC,CAAC;QACtF,MAAMkB,YAAY,GAAG,IAAI,CAACC,yBAAyB,CAACrC,KAAK,CAAC;QAC1Da,WAAW,CAACc,IAAI,CAACS,YAAY,CAAC;MAChC;IACF;IAEA,OAAOvB,WAAW,CAACH,IAAI,CAAC,MAAM,CAAC;EACjC;EAEQ8B,aAAaA,CACnB9C,KAAgB,EACR;IACR,QAAQA,KAAK,CAACE,IAAI;MAChB,KAAK,QAAQ;QACX,OAAO,IAAI,CAAC2B,oBAAoB,CAAC7B,KAAK,CAAC8B,MAAM,CAAC;MAChD,KAAK,OAAO;QACV,OAAO,IAAI,CAACiB,mBAAmB,CAAC/C,KAAK,CAACM,KAAK,CAAC;MAC9C;QACEtB,WAAW,CAACgB,KAAK,CAAC;IACtB;EACF;EAEQ6B,oBAAoBA,CAC1BC,MAAkB,EACV;IACR,MAAMkB,eAAyB,GAAG,EAAE;IACpC,KAAK,MAAMC,KAAK,IAAInB,MAAM,CAACoB,MAAM,EAAE;MACjC,MAAMC,WAAW,GAAG,IAAI,CAACC,mBAAmB,CAACH,KAAK,CAAC;MACnDD,eAAe,CAACf,IAAI,CAAC,KAAKgB,KAAK,CAACvC,GAAG,KAAKyC,WAAW,EAAE,CAAC;IACxD;IACA,OAAO,eAAeH,eAAe,CAAChC,IAAI,CAAC,KAAK,CAAC,MAAM;EACzD;EAEQ+B,mBAAmBA,CACzBzC,KAAgB,EACR;IACR;IACA,MAAM+C,kBAA4B,GAAG,EAAE;IAEvC,KAAK,MAAM,CAAClD,WAAW,CAAC,IAAIC,MAAM,CAACkD,OAAO,CAAChD,KAAK,CAACC,QAAQ,CAAC,EAAE;MAC1D,MAAMC,oBAAoB,GAAGvB,iBAAiB,CAACkB,WAAW,CAAC;MAC3DkD,kBAAkB,CAACpB,IAAI,CAAC,GAAG3B,KAAK,CAACI,GAAG,GAAGF,oBAAoB,QAAQ,CAAC;IACtE;IAEA,MAAM+C,kBAAkB,GAAGjD,KAAK,CAACkD,YAAY,IAAI,MAAM;IACvD,OAAO,yBAAyBD,kBAAkB,WAChDF,kBAAkB,CAACrC,IAAI,CAAC,OAAO,CAAC,MAC5B;EACR;EAEQ2B,yBAAyBA,CAC/BrC,KAAgB,EACR;IACR,MAAMmD,cAAwB,GAAG,EAAE;IACnC,MAAMJ,kBAA4B,GAAG,EAAE;;IAEvC;IACA,KAAK,MAAM,CAAClD,WAAW,EAAEqC,eAAe,CAAC,IAAIpC,MAAM,CAACkD,OAAO,CAAChD,KAAK,CAACC,QAAQ,CAAC,EAAE;MAC3E,MAAMC,oBAAoB,GAAGvB,iBAAiB,CAACkB,WAAW,CAAC;MAC3D,MAAMuD,iBAAiB,GAAG,GAAGpD,KAAK,CAACI,GAAG,GAAGF,oBAAoB,QAAQ;MACrE6C,kBAAkB,CAACpB,IAAI,CAACyB,iBAAiB,CAAC;;MAE1C;MACA,MAAMC,YAAY,GAAG,IAAI,CAACtE,MAAM,CAACY,MAAM,CAACuC,eAAe,CAAC;MACxD,EAAUmB,YAAY,IAAI,IAAI,IAAAlC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAA9B5C,SAAS,QAAuB,oBAAoByD,eAAe,EAAE,IAArEzD,SAAS;MAET,IAAI6E,iBAAyB;MAC7B,QAAQD,YAAY,CAACzD,IAAI;QACvB,KAAK,QAAQ;UAAE;YACb;YACA,MAAM2D,SAAS,GAAGF,YAAY,CAAC7B,MAAM,CAACpB,GAAG;YACzC,MAAM6C,kBAAkB,GAAG,KAAKjD,KAAK,CAACkD,YAAY,gBAAgBrD,WAAW,IAAI;;YAEjF;YACA;YACAyD,iBAAiB,GAAG,GAAGC,SAAS,oBAAoBN,kBAAkB,MAAM;YAC5E;UACF;QACA,KAAK,OAAO;UAAE;YACZ;YACA,MAAMO,QAAQ,GAAGH,YAAY,CAACrD,KAAK,CAACI,GAAG;YACvCkD,iBAAiB,GACf,iBAAiBtD,KAAK,CAACkD,YAAY,gBAAgBrD,WAAW,8BAA8B2D,QAAQ,aAAa;YACnH;UACF;QACA;UACE9E,WAAW,CAAC2E,YAAY,CAAC;MAC7B;;MAEA;MACA,MAAMlD,eAAe,GAAG,GAAGH,KAAK,CAACI,GAAG,GAAGF,oBAAoB,EAAE;MAC7D,MAAMuB,eAAe,GAAG,IAAI,CAACzC,OAAO,EAAEK,cAAc,GAChD,sBAAsBc,eAAe,GAAG,GACxC,EAAE;MACNgD,cAAc,CAACxB,IAAI,CACjB,gBAAgByB,iBAAiB,MAAME,iBAAiB,GAAG7B,eAAe,GAC5E,CAAC;IACH;;IAEA;IACA,MAAMwB,kBAAkB,GAAGjD,KAAK,CAACkD,YAAY,IAAI,MAAM;IACvD,MAAMO,WAAW,GAAG,yBAAyBR,kBAAkB,WAC7DF,kBAAkB,CAACrC,IAAI,CAAC,OAAO,CAAC,MAC5B;;IAEN;IACA,MAAMgD,oBAAoB,GAAG,IAAI,CAAC1E,OAAO,EAAEK,cAAc,GACrD,sBAAsBW,KAAK,CAACI,GAAG,GAAG,GAClC,EAAE;;IAEN;IACA,OAAO+C,cAAc,CAACzC,IAAI,CAAC,MAAM,CAAC,GAC9B,oBAAoBV,KAAK,CAACI,GAAG,YAAYqD,WAAW,GAAGC,oBAAoB,GAAG;EACpF;EAEQZ,mBAAmBA,CACzBH,KAAgB,EACR;IACR,MAAMgB,mBAAmB,GAAG,IAAI,CAACC,uBAAuB,CAACjB,KAAK,CAACkB,SAAS,CAAC;IAEzE,IAAIlB,KAAK,CAACmB,UAAU,EAAE;MACpB,OAAO,GAAGH,mBAAmB,aAAa;IAC5C;IAEA,OAAOA,mBAAmB;EAC5B;EAEQC,uBAAuBA,CAC7BC,SAA0B,EAClB;IACR,QAAQA,SAAS,CAACjE,IAAI;MACpB,KAAK,OAAO;QAAE;UACZ,MAAMmE,kBAAkB,GAAG,IAAI,CAACC,wBAAwB,CACtDH,SAAS,CAACI,KAAK,CAACC,KAClB,CAAC;UACD,OAAO,WAAWH,kBAAkB,GAAG;QACzC;MAEA,KAAK,KAAK;QAAE;UACV,MAAMI,SAAS,GAAG,IAAI,CAACH,wBAAwB,CAC7CH,SAAS,CAACO,GAAG,CAAChE,GAChB,CAAC;UACD,MAAMiE,WAAW,GAAG,IAAI,CAACL,wBAAwB,CAC/CH,SAAS,CAACO,GAAG,CAACF,KAChB,CAAC;UACD,OAAO,YAAYC,SAAS,KAAKE,WAAW,GAAG;QACjD;MACA,KAAK,KAAK;QAAE;UACV,MAAMC,gBAAgB,GAAG,IAAI,CAACN,wBAAwB,CACpDH,SAAS,CAACnC,GAAG,CAACwC,KAChB,CAAC;UACD,OAAO,WAAWI,gBAAgB,GAAG;QACvC;MAAE;;MAEF,KAAK,OAAO;QACV,OAAO,IAAI,CAACN,wBAAwB,CAACH,SAAS,CAACK,KAAK,CAAC;MAEvD;QACExF,WAAW,CAACmF,SAAS,CAAC;IAC1B;EACF;EAEQG,wBAAwBA,CAC9BO,UAA4B,EACpB;IACR,QAAQA,UAAU,CAAC3E,IAAI;MACrB,KAAK,SAAS;QACZ,OAAO,aAAa;MAEtB,KAAK,UAAU;QACb,OAAO,uBAAuB;MAEhC,KAAK,QAAQ;QAAE;UACb,IAAI4E,YAAY,GAAG,YAAY;UAC/B,IAAID,UAAU,CAACE,MAAM,CAACC,QAAQ,IAAI,IAAI,EAAE;YACtCF,YAAY,IAAI,QAAQD,UAAU,CAACE,MAAM,CAACC,QAAQ,GAAG;UACvD;UACA,IAAIH,UAAU,CAACE,MAAM,CAACE,QAAQ,IAAI,IAAI,EAAE;YACtCH,YAAY,IAAI,QAAQD,UAAU,CAACE,MAAM,CAACE,QAAQ,GAAG;UACvD;UACA,OAAOH,YAAY;QACrB;MAEA,KAAK,SAAS;QAAE;UACd,IAAII,SAAS,GAAG,kBAAkB;UAClC,IAAIL,UAAU,CAACM,OAAO,CAACH,QAAQ,IAAI,IAAI,EAAE;YACvCE,SAAS,IAAI,QAAQL,UAAU,CAACM,OAAO,CAACH,QAAQ,GAAG;UACrD;UACA,IAAIH,UAAU,CAACM,OAAO,CAACF,QAAQ,IAAI,IAAI,EAAE;YACvCC,SAAS,IAAI,QAAQL,UAAU,CAACM,OAAO,CAACF,QAAQ,GAAG;UACrD;UACA,OAAOC,SAAS;QAClB;MAEA,KAAK,UAAU;QAAE;UACf,MAAME,gBAA0B,GAAG,EAAE;UAErC,KAAK,MAAMC,SAAS,IAAIR,UAAU,CAACS,QAAQ,CAACC,UAAU,EAAE;YACtD,MAAMvF,KAAK,GAAG,IAAI,CAACX,MAAM,CAACY,MAAM,CAACoF,SAAS,CAAC;YAC3C,EAAUrF,KAAK,IAAI,IAAI,IAAAyB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAvB5C,SAAS,QAAgB,oBAAoBsG,SAAS,EAAE,IAAxDtG,SAAS;;YAET;YACA,IAAI,IAAI,CAACM,MAAM,CAACS,gBAAgB,CAAC0F,QAAQ,CAACH,SAAS,CAAC,EAAE;cACpD,OAAO,gBAAgBA,SAAS,SAAS;YAC3C;;YAEA;YACA;YACA,OAAO,IAAI,CAACvC,aAAa,CAAC9C,KAAK,CAAC;UAClC;UAEA,IAAIoF,gBAAgB,CAACK,MAAM,KAAK,CAAC,EAAE;YACjC,OAAO,aAAa;UACtB;UAEA,IAAIL,gBAAgB,CAACK,MAAM,KAAK,CAAC,EAAE;YACjC,OAAOL,gBAAgB,CAAC,CAAC,CAAC;UAC5B;UAEA,OAAO,YAAYA,gBAAgB,CAACpE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpD;MAEA,KAAK,QAAQ;QAAE;UACb,IAAI0E,YAAY,GAAG,YAAY;UAC/B,IAAIb,UAAU,CAACc,MAAM,CAACC,SAAS,IAAI,IAAI,EAAE;YACvCF,YAAY,IAAI,QAAQb,UAAU,CAACc,MAAM,CAACC,SAAS,GAAG;UACxD;UACA,IAAIf,UAAU,CAACc,MAAM,CAACE,SAAS,IAAI,IAAI,EAAE;YACvCH,YAAY,IAAI,QAAQb,UAAU,CAACc,MAAM,CAACE,SAAS,GAAG;UACxD;UACA,OAAOH,YAAY;QACrB;MAEA,KAAK,MAAM;QACT,OAAO,aAAa;MAEtB,KAAK,eAAe;QAClB,OAAO,aAAa;MAEtB,KAAK,aAAa;MAClB,KAAK,QAAQ;MACb,KAAK,UAAU;MACf,KAAK,QAAQ;MACb,KAAK,SAAS;QACZ,OAAO,YAAY;MAAE;;MAEvB;QACE1G,WAAW,CAAC6F,UAAU,CAAC;IAC3B;EACF;AACF;AAEA,OAAO,eAAeiB,wBAAwBA,CAC5CzG,MAA+B,EAC/BC,OAA6B,EACZ;EACjB,MAAMyG,SAAS,GAAG,IAAI5G,kBAAkB,CAACE,MAAM,EAAEC,OAAO,CAAC;EACzD,OAAOyG,SAAS,CAACtG,aAAa,CAAC,CAAC;AAClC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateZodSchemasFromIr.js","names":["formatVariantName","consola","invariant","assertNever","GENERATED_FILE_HEADER","ZodSchemaGenerator","constructor","schema","options","generateSDK","Error","generateTypes","imports","typeImportPath","typeNames","Set","primaryModelKeys","modelKey","model","models","type","variantName","Object","keys","union","variants","formattedVariantName","variantTypeName","key","add","typeImports","Array","from","sort","join","schemasCode","generateZodSchemas","schemaLines","emittedModels","recordSchemas","Map","unionDefinitions","modelTypeKey","process","env","NODE_ENV","schemaCode","generateRecordSchema","record","satisfiesClause","set","push","remainingUnions","madeProgress","size","allDependenciesEmitted","values","every","variantModelKey","has","unionSchemas","generateUnionWithVariants","delete","warn","generateModel","generateUnionSchema","fieldEntryLines","field","fields","fieldSchema","generateFieldSchema","variantSchemaNames","entries","discriminatorField","discriminant","variantSchemas","variantSchemaName","variantModel","variantSchemaCode","recordKey","unionKey","unionSchema","unionSatisfiesClause","fieldValueSchemaStr","generateFieldTypeSchema","fieldType","isOptional","arrayElementSchema","generateFieldValueSchema","array","value","keySchema","map","valueSchema","setElementSchema","fieldValue","doubleSchema","double","minValue","maxValue","intSchema","integer","refVariantsLines","modelType","modelRef","modelTypes","includes","length","stringSchema","string","minLength","maxLength","generateZodSchemasFromIr","generator"],"sources":["generateZodSchemasFromIr.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatVariantName } from \"@palantir/pack.schema\";\nimport consola from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport type {\n IFieldDef,\n IFieldTypeUnion,\n IFieldValueUnion,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { assertNever } from \"../assertNever.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nexport interface ZodGeneratorOptions {\n namespace?: string;\n includeTypes?: boolean;\n includeCRDT?: boolean;\n typeImportPath?: string;\n}\n\nclass ZodSchemaGenerator {\n constructor(\n private readonly schema: IRealTimeDocumentSchema,\n private readonly options?: ZodGeneratorOptions,\n ) {}\n\n public generateSDK(_options: ZodGeneratorOptions): string {\n throw new Error(\n \"SDK generation not yet implemented - placeholder for future development\",\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async generateTypes(): Promise<string> {\n let imports = \"import { z } from 'zod';\\n\";\n\n if (this.options?.typeImportPath) {\n imports = \"import type { ZodType } from \\\"zod\\\";\\n\" + imports;\n\n // Collect all type names from the schema (primary models + union variants)\n const typeNames = new Set(this.schema.primaryModelKeys);\n\n // Add union variant type names\n for (const modelKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelKey];\n if (model?.type === \"union\") {\n for (const variantName of Object.keys(model.union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantTypeName = `${model.union.key}${formattedVariantName}`;\n typeNames.add(variantTypeName);\n }\n }\n }\n\n const typeImports = Array.from(typeNames).sort().join(\", \");\n imports += `import type { ${typeImports} } from \"${this.options.typeImportPath}\";\\n`;\n }\n\n imports += \"\\n\";\n const schemasCode = this.generateZodSchemas();\n return GENERATED_FILE_HEADER + imports + schemasCode + \"\\n\";\n }\n\n private generateZodSchemas(): string {\n const schemaLines: string[] = [];\n const emittedModels = new Set<string>();\n const recordSchemas = new Map<string, string>();\n const unionDefinitions = new Map<string, IUnionDef>();\n\n // First, categorize all models and generate record schemas\n for (const modelTypeKey of this.schema.primaryModelKeys) {\n const model = this.schema.models[modelTypeKey];\n invariant(model != null, `Model not found: ${modelTypeKey}`);\n\n switch (model.type) {\n case \"record\": {\n const schemaCode = this.generateRecordSchema(model.record);\n const satisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${modelTypeKey}>`\n : \"\";\n recordSchemas.set(\n modelTypeKey,\n `export const ${modelTypeKey}Schema = ${schemaCode}${satisfiesClause};`,\n );\n break;\n }\n case \"union\": {\n unionDefinitions.set(modelTypeKey, model.union);\n break;\n }\n }\n }\n\n // Emit all record schemas first\n for (const [modelTypeKey, schemaCode] of recordSchemas) {\n schemaLines.push(schemaCode);\n emittedModels.add(modelTypeKey);\n }\n\n // Now handle unions with proper dependency ordering\n const remainingUnions = new Map(unionDefinitions);\n let madeProgress = true;\n\n while (remainingUnions.size > 0 && madeProgress) {\n madeProgress = false;\n\n for (const [modelTypeKey, union] of remainingUnions) {\n // Check if all dependencies are already emitted\n const allDependenciesEmitted = Object.values(union.variants).every(\n variantModelKey => emittedModels.has(variantModelKey),\n );\n\n if (allDependenciesEmitted) {\n // Generate the union with its variant schemas\n const unionSchemas = this.generateUnionWithVariants(union);\n schemaLines.push(unionSchemas);\n emittedModels.add(modelTypeKey);\n remainingUnions.delete(modelTypeKey);\n madeProgress = true;\n }\n }\n }\n\n // If there are still remaining unions, we have circular dependencies or missing models\n if (remainingUnions.size > 0) {\n consola.warn(\n `Warning: Could not generate schemas for unions due to circular or missing dependencies: ${\n Array.from(remainingUnions.keys()).join(\", \")\n }`,\n );\n // Emit them anyway with a comment\n for (const [modelTypeKey, union] of remainingUnions) {\n schemaLines.push(`// Warning: Union ${modelTypeKey} may have unresolved dependencies`);\n const unionSchemas = this.generateUnionWithVariants(union);\n schemaLines.push(unionSchemas);\n }\n }\n\n return schemaLines.join(\"\\n\\n\");\n }\n\n private generateModel(\n model: IModelDef,\n ): string {\n switch (model.type) {\n case \"record\":\n return this.generateRecordSchema(model.record);\n case \"union\":\n return this.generateUnionSchema(model.union);\n default:\n assertNever(model);\n }\n }\n\n private generateRecordSchema(\n record: IRecordDef,\n ): string {\n const fieldEntryLines: string[] = [];\n for (const field of record.fields) {\n const fieldSchema = this.generateFieldSchema(field);\n fieldEntryLines.push(` ${field.key}: ${fieldSchema}`);\n }\n return `z.object({\\n${fieldEntryLines.join(\",\\n\")}\\n})`;\n }\n\n private generateUnionSchema(\n union: IUnionDef,\n ): string {\n // Just return the discriminated union without variant schemas\n const variantSchemaNames: string[] = [];\n\n for (const [variantName] of Object.entries(union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n variantSchemaNames.push(`${union.key}${formattedVariantName}Schema`);\n }\n\n const discriminatorField = union.discriminant ?? \"type\";\n return `z.discriminatedUnion(\"${discriminatorField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n])`;\n }\n\n private generateUnionWithVariants(\n union: IUnionDef,\n ): string {\n const variantSchemas: string[] = [];\n const variantSchemaNames: string[] = [];\n\n // Generate variant schemas\n for (const [variantName, variantModelKey] of Object.entries(union.variants)) {\n const formattedVariantName = formatVariantName(variantName);\n const variantSchemaName = `${union.key}${formattedVariantName}Schema`;\n variantSchemaNames.push(variantSchemaName);\n\n // Look up the model from the schema\n const variantModel = this.schema.models[variantModelKey];\n invariant(variantModel != null, `Model not found: ${variantModelKey}`);\n\n let variantSchemaCode: string;\n switch (variantModel.type) {\n case \"record\": {\n // For record variants, reference the existing record schema and extend with discriminator\n const recordKey = variantModel.record.key;\n const discriminatorField = ` ${union.discriminant}: z.literal(\"${variantName}\")`;\n\n // Extend the existing record schema with the discriminator field\n // Note: We assume records are defined before unions, so we can directly reference them\n variantSchemaCode = `${recordKey}Schema.extend({\\n${discriminatorField}\\n})`;\n break;\n }\n case \"union\": {\n // For union variants (nested unions), wrap with discriminator and value\n const unionKey = variantModel.union.key;\n variantSchemaCode =\n `z.object({\\n ${union.discriminant}: z.literal(\"${variantName}\"),\\n value: z.lazy(() => ${unionKey}Schema)\\n})`;\n break;\n }\n default:\n assertNever(variantModel);\n }\n\n // Generate satisfies clause for variant schemas if typeImportPath is provided\n const variantTypeName = `${union.key}${formattedVariantName}`;\n const satisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${variantTypeName}>`\n : \"\";\n variantSchemas.push(\n `export const ${variantSchemaName} = ${variantSchemaCode}${satisfiesClause};`,\n );\n }\n\n // Generate the discriminated union\n const discriminatorField = union.discriminant || \"type\";\n const unionSchema = `z.discriminatedUnion(\"${discriminatorField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n])`;\n\n // Generate satisfies clause for the main union schema if typeImportPath is provided\n const unionSatisfiesClause = this.options?.typeImportPath\n ? ` satisfies ZodType<${union.key}>`\n : \"\";\n\n // Return the variant schemas and the union schema\n return variantSchemas.join(\"\\n\\n\")\n + `\\n\\nexport const ${union.key}Schema = ${unionSchema}${unionSatisfiesClause};`;\n }\n\n private generateFieldSchema(\n field: IFieldDef,\n ): string {\n const fieldValueSchemaStr = this.generateFieldTypeSchema(field.fieldType);\n\n if (field.isOptional) {\n return `${fieldValueSchemaStr}.optional()`;\n }\n\n return fieldValueSchemaStr;\n }\n\n private generateFieldTypeSchema(\n fieldType: IFieldTypeUnion,\n ): string {\n switch (fieldType.type) {\n case \"array\": {\n const arrayElementSchema = this.generateFieldValueSchema(\n fieldType.array.value,\n );\n return `z.array(${arrayElementSchema})`;\n }\n\n case \"map\": {\n const keySchema = this.generateFieldValueSchema(\n fieldType.map.key,\n );\n const valueSchema = this.generateFieldValueSchema(\n fieldType.map.value,\n );\n return `z.record(${keySchema}, ${valueSchema})`;\n }\n case \"set\": {\n const setElementSchema = this.generateFieldValueSchema(\n fieldType.set.value,\n );\n return `z.array(${setElementSchema})`;\n } // Zod doesn't have Set, use array\n\n case \"value\":\n return this.generateFieldValueSchema(fieldType.value);\n\n default:\n assertNever(fieldType);\n }\n }\n\n private generateFieldValueSchema(\n fieldValue: IFieldValueUnion,\n ): string {\n switch (fieldValue.type) {\n case \"boolean\":\n return \"z.boolean()\";\n\n case \"datetime\":\n return \"z.string().datetime()\";\n\n case \"double\": {\n let doubleSchema = \"z.number()\";\n if (fieldValue.double.minValue != null) {\n doubleSchema += `.min(${fieldValue.double.minValue})`;\n }\n if (fieldValue.double.maxValue != null) {\n doubleSchema += `.max(${fieldValue.double.maxValue})`;\n }\n return doubleSchema;\n }\n\n case \"integer\": {\n let intSchema = \"z.number().int()\";\n if (fieldValue.integer.minValue != null) {\n intSchema += `.min(${fieldValue.integer.minValue})`;\n }\n if (fieldValue.integer.maxValue != null) {\n intSchema += `.max(${fieldValue.integer.maxValue})`;\n }\n return intSchema;\n }\n\n case \"modelRef\": {\n const refVariantsLines: string[] = [];\n\n for (const modelType of fieldValue.modelRef.modelTypes) {\n const model = this.schema.models[modelType];\n invariant(model != null, `Model not found: ${modelType}`);\n\n // Referent the model directly\n if (this.schema.primaryModelKeys.includes(modelType)) {\n return `z.lazy(() => ${modelType}Schema)`;\n }\n\n // Generate inline model\n // TODO: should not be possible to have recursive nested models but we should guard against it\n return this.generateModel(model);\n }\n\n if (refVariantsLines.length === 0) {\n return \"z.unknown()\";\n }\n\n if (refVariantsLines.length === 1) {\n return refVariantsLines[0]!;\n }\n\n return `z.union([${refVariantsLines.join(\", \")}])`;\n }\n\n case \"string\": {\n let stringSchema = \"z.string()\";\n if (fieldValue.string.minLength != null) {\n stringSchema += `.min(${fieldValue.string.minLength})`;\n }\n if (fieldValue.string.maxLength != null) {\n stringSchema += `.max(${fieldValue.string.maxLength})`;\n }\n return stringSchema;\n }\n\n case \"text\":\n return \"z.unknown()\";\n\n case \"unmanagedJson\":\n return \"z.unknown()\";\n\n case \"resourceRef\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"userRef\":\n return \"z.string()\"; // Assume these are string IDs\n\n default:\n assertNever(fieldValue);\n }\n }\n}\n\nexport async function generateZodSchemasFromIr(\n schema: IRealTimeDocumentSchema,\n options?: ZodGeneratorOptions,\n): Promise<string> {\n const generator = new ZodSchemaGenerator(schema, options);\n return generator.generateTypes();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// documentType.ts
|
|
3
3
|
// ============================================================
|
|
4
4
|
|
|
5
|
-
/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
5
|
+
/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */
|
|
6
6
|
|
|
7
7
|
export const DOCUMENT_TYPE_NAME = 'Canvas Document Type';
|
|
8
8
|
export const DOCUMENT_TYPE_DESCRIPTION = 'Document type description for demo canvas';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-name-and-description.js","names":["DOCUMENT_TYPE_NAME","DOCUMENT_TYPE_DESCRIPTION"],"sources":["with-name-and-description.ts"],"sourcesContent":["// ============================================================\n// documentType.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"with-name-and-description.js","names":["DOCUMENT_TYPE_NAME","DOCUMENT_TYPE_DESCRIPTION"],"sources":["with-name-and-description.ts"],"sourcesContent":["// ============================================================\n// documentType.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nexport const DOCUMENT_TYPE_NAME = 'Canvas Document Type';\nexport const DOCUMENT_TYPE_DESCRIPTION =\n 'Document type description for demo canvas';\n"],"mappings":"AAAA;AACA;AACA;;AAEA;;AAEA,OAAO,MAAMA,kBAAkB,GAAG,sBAAsB;AACxD,OAAO,MAAMC,yBAAyB,GACpC,2CAA2C","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-version.js","names":[],"sources":["single-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"single-version.js","names":[],"sources":["single-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nexport type SupportedVersions = 1;\nexport type LatestVersion = 1;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-version-chain.js","names":[],"sources":["three-version-chain.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"three-version-chain.js","names":[],"sources":["three-version-chain.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nexport type SupportedVersions = 1 | 2 | 3;\nexport type LatestVersion = 3;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-version.js","names":[],"sources":["two-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.
|
|
1
|
+
{"version":3,"file":"two-version.js","names":[],"sources":["two-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.32.0 */\n\nexport type SupportedVersions = 1 | 2;\nexport type LatestVersion = 2;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -24,9 +24,10 @@ describe("generateIndexFromChain", () => {
|
|
|
24
24
|
|
|
25
25
|
// Guards are exported as values (not `export type`) so consumers can narrow
|
|
26
26
|
// a union at runtime without re-deriving the discriminant check.
|
|
27
|
-
expect(result).toContain(`export { isShape_v1Circle, isShape_v1Rectangle } from "./types_v1.js";`);
|
|
27
|
+
expect(result).toContain(`export { isShape_v1Circle, isShape_v1Rectangle, isShape_v1Unknown, narrowKnownShape_v1 } from "./types_v1.js";`);
|
|
28
28
|
// The variant *types* remain a separate type-only export.
|
|
29
29
|
expect(result).toMatch(/export type \{[^}]*Shape_v1Circle[^}]*\} from "\.\/types_v1\.js";/);
|
|
30
|
+
expect(result).toMatch(/export type \{[^}]*KnownShape_v1[^}]*\} from "\.\/types_v1\.js";/);
|
|
30
31
|
});
|
|
31
32
|
it("emits no value guard export when the schema has no unions", () => {
|
|
32
33
|
const result = generateIndexFromChain(resolveSchemaChain(singleVersionSchema));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateIndexFromSchema.test.js","names":["describe","expect","it","generateIndexFromChain","resolveSchemaChain","singleVersionSchema","unionTypesSchema","result","toContain","toMatch","not"],"sources":["generateIndexFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expect, it } from \"vitest\";\nimport { generateIndexFromChain } from \"../generateIndexFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport { singleVersionSchema, unionTypesSchema } from \"./fixtures.js\";\n\ndescribe(\"generateIndexFromChain\", () => {\n it(\"re-exports union variant type guards as values\", () => {\n const result = generateIndexFromChain(resolveSchemaChain(unionTypesSchema));\n\n // Guards are exported as values (not `export type`) so consumers can narrow\n // a union at runtime without re-deriving the discriminant check.\n expect(result).toContain(\n `export { isShape_v1Circle, isShape_v1Rectangle } from \"./types_v1.js\";`,\n );\n // The variant *types* remain a separate type-only export.\n expect(result).toMatch(/export type \\{[^}]*Shape_v1Circle[^}]*\\} from \"\\.\\/types_v1\\.js\";/);\n });\n\n it(\"emits no value guard export when the schema has no unions\", () => {\n const result = generateIndexFromChain(resolveSchemaChain(singleVersionSchema));\n\n // No unions → no `is<Variant>` guards → no value export from types_v1.\n expect(result).not.toMatch(/export \\{ is\\w+ \\} from \"\\.\\/types_v1\\.js\";/);\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,sBAAsB,QAAQ,+BAA+B;AACtE,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,eAAe;AAErEN,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvCE,EAAE,CAAC,gDAAgD,EAAE,MAAM;IACzD,MAAMK,MAAM,GAAGJ,sBAAsB,CAACC,kBAAkB,CAACE,gBAAgB,CAAC,CAAC;;IAE3E;IACA;IACAL,MAAM,CAACM,MAAM,CAAC,CAACC,SAAS,CACtB,
|
|
1
|
+
{"version":3,"file":"generateIndexFromSchema.test.js","names":["describe","expect","it","generateIndexFromChain","resolveSchemaChain","singleVersionSchema","unionTypesSchema","result","toContain","toMatch","not"],"sources":["generateIndexFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expect, it } from \"vitest\";\nimport { generateIndexFromChain } from \"../generateIndexFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport { singleVersionSchema, unionTypesSchema } from \"./fixtures.js\";\n\ndescribe(\"generateIndexFromChain\", () => {\n it(\"re-exports union variant type guards as values\", () => {\n const result = generateIndexFromChain(resolveSchemaChain(unionTypesSchema));\n\n // Guards are exported as values (not `export type`) so consumers can narrow\n // a union at runtime without re-deriving the discriminant check.\n expect(result).toContain(\n `export { isShape_v1Circle, isShape_v1Rectangle, isShape_v1Unknown, narrowKnownShape_v1 } from \"./types_v1.js\";`,\n );\n // The variant *types* remain a separate type-only export.\n expect(result).toMatch(/export type \\{[^}]*Shape_v1Circle[^}]*\\} from \"\\.\\/types_v1\\.js\";/);\n expect(result).toMatch(/export type \\{[^}]*KnownShape_v1[^}]*\\} from \"\\.\\/types_v1\\.js\";/);\n });\n\n it(\"emits no value guard export when the schema has no unions\", () => {\n const result = generateIndexFromChain(resolveSchemaChain(singleVersionSchema));\n\n // No unions → no `is<Variant>` guards → no value export from types_v1.\n expect(result).not.toMatch(/export \\{ is\\w+ \\} from \"\\.\\/types_v1\\.js\";/);\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,sBAAsB,QAAQ,+BAA+B;AACtE,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,eAAe;AAErEN,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvCE,EAAE,CAAC,gDAAgD,EAAE,MAAM;IACzD,MAAMK,MAAM,GAAGJ,sBAAsB,CAACC,kBAAkB,CAACE,gBAAgB,CAAC,CAAC;;IAE3E;IACA;IACAL,MAAM,CAACM,MAAM,CAAC,CAACC,SAAS,CACtB,gHACF,CAAC;IACD;IACAP,MAAM,CAACM,MAAM,CAAC,CAACE,OAAO,CAAC,mEAAmE,CAAC;IAC3FR,MAAM,CAACM,MAAM,CAAC,CAACE,OAAO,CAAC,kEAAkE,CAAC;EAC5F,CAAC,CAAC;EAEFP,EAAE,CAAC,2DAA2D,EAAE,MAAM;IACpE,MAAMK,MAAM,GAAGJ,sBAAsB,CAACC,kBAAkB,CAACC,mBAAmB,CAAC,CAAC;;IAE9E;IACAJ,MAAM,CAACM,MAAM,CAAC,CAACG,GAAG,CAACD,OAAO,CAAC,6CAA6C,CAAC;EAC3E,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -61,4 +61,12 @@ describe("generateVersionedTypesFromChain", () => {
|
|
|
61
61
|
expect(result.readTypes.has(1)).toBe(false);
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
|
+
describe("generateVersionedTypesFromChain unknown union variants", () => {
|
|
65
|
+
it("adds an Unknown case and guard to every union", () => {
|
|
66
|
+
const readTypes = generateVersionedTypesFromChain(resolveSchemaChain(unionTypesSchema)).readTypes.get(1);
|
|
67
|
+
expect(readTypes).toContain("export type Shape_v1Unknown = UnknownUnionVariant<\"type\">;");
|
|
68
|
+
expect(readTypes).toContain("export type Shape_v1 = Shape_v1Circle | Shape_v1Rectangle | Shape_v1Unknown;");
|
|
69
|
+
expect(readTypes).toContain("export function isShape_v1Unknown(value: Shape_v1)");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
64
72
|
//# sourceMappingURL=generateVersionedTypesFromSchema.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateVersionedTypesFromSchema.test.js","names":["path","describe","expect","it","generateVersionedTypesFromChain","resolveSchemaChain","aliasedEntryNameSchema","nestedUnionSchema","refFieldsSchema","singleVersionSchema","threeVersionChainSchema","twoVersionAdditiveSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatVersionedTypesSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot","readTypes","size","toBe","has"],"sources":["generateVersionedTypesFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { generateVersionedTypesFromChain } from \"../generateVersionedTypesFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n aliasedEntryNameSchema,\n nestedUnionSchema,\n refFieldsSchema,\n singleVersionSchema,\n threeVersionChainSchema,\n twoVersionAdditiveSchema,\n twoVersionFieldRemovalSchema,\n unionTypesSchema,\n} from \"./fixtures.js\";\nimport { formatVersionedTypesSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateVersionedTypesFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateVersionedTypesFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version additive change\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(twoVersionAdditiveSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-additive.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(twoVersionFieldRemovalSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"three-version chain\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(threeVersionChainSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"three-version-chain.snap\"),\n );\n });\n\n it(\"schema with ref fields\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(refFieldsSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"ref-fields.snap\"),\n );\n });\n\n it(\"schema with union types\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n\n it(\"preserves aliased export name when export key differs from model name\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(aliasedEntryNameSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"alias-types.snap\"),\n );\n });\n\n it(\"includes value field for union variants that reference another union\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(nestedUnionSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-reference-union.snap\"),\n );\n });\n\n it(\"respects minSupportedVersion default (latest only)\", () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(twoVersionAdditiveSchema));\n expect(result.readTypes.size).toBe(1);\n expect(result.readTypes.has(2)).toBe(true);\n expect(result.readTypes.has(1)).toBe(false);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateVersionedTypesFromSchema.test.js","names":["path","describe","expect","it","generateVersionedTypesFromChain","resolveSchemaChain","aliasedEntryNameSchema","nestedUnionSchema","refFieldsSchema","singleVersionSchema","threeVersionChainSchema","twoVersionAdditiveSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatVersionedTypesSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot","readTypes","size","toBe","has","get","toContain"],"sources":["generateVersionedTypesFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { generateVersionedTypesFromChain } from \"../generateVersionedTypesFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n aliasedEntryNameSchema,\n nestedUnionSchema,\n refFieldsSchema,\n singleVersionSchema,\n threeVersionChainSchema,\n twoVersionAdditiveSchema,\n twoVersionFieldRemovalSchema,\n unionTypesSchema,\n} from \"./fixtures.js\";\nimport { formatVersionedTypesSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateVersionedTypesFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateVersionedTypesFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version additive change\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(twoVersionAdditiveSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-additive.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(twoVersionFieldRemovalSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"three-version chain\", async () => {\n const result = generateVersionedTypesFromChain(\n resolveSchemaChain(threeVersionChainSchema, 1),\n 1,\n );\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"three-version-chain.snap\"),\n );\n });\n\n it(\"schema with ref fields\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(refFieldsSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"ref-fields.snap\"),\n );\n });\n\n it(\"schema with union types\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n\n it(\"preserves aliased export name when export key differs from model name\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(aliasedEntryNameSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"alias-types.snap\"),\n );\n });\n\n it(\"includes value field for union variants that reference another union\", async () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(nestedUnionSchema));\n await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-reference-union.snap\"),\n );\n });\n\n it(\"respects minSupportedVersion default (latest only)\", () => {\n const result = generateVersionedTypesFromChain(resolveSchemaChain(twoVersionAdditiveSchema));\n expect(result.readTypes.size).toBe(1);\n expect(result.readTypes.has(2)).toBe(true);\n expect(result.readTypes.has(1)).toBe(false);\n });\n});\n\ndescribe(\"generateVersionedTypesFromChain unknown union variants\", () => {\n it(\"adds an Unknown case and guard to every union\", () => {\n const readTypes = generateVersionedTypesFromChain(resolveSchemaChain(unionTypesSchema))\n .readTypes.get(1)!;\n\n expect(readTypes).toContain(\"export type Shape_v1Unknown = UnknownUnionVariant<\\\"type\\\">;\");\n expect(readTypes).toContain(\n \"export type Shape_v1 = Shape_v1Circle | Shape_v1Rectangle | Shape_v1Unknown;\",\n );\n expect(readTypes).toContain(\"export function isShape_v1Unknown(value: Shape_v1)\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
|