@palantir/pack.document-schema.type-gen 0.7.0 → 0.9.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/cli.js +2 -0
- package/build/esm/cli.js.map +1 -1
- package/build/esm/commands/asset/assetDeployHandler.js +60 -0
- package/build/esm/commands/asset/assetDeployHandler.js.map +1 -0
- package/build/esm/commands/asset/registerAssetCommands.js +22 -0
- package/build/esm/commands/asset/registerAssetCommands.js.map +1 -0
- package/build/esm/commands/ir/irDeployHandler.js +5 -4
- package/build/esm/commands/ir/irDeployHandler.js.map +1 -1
- package/build/esm/commands/ir/irGenAssetHandler.js +19 -13
- package/build/esm/commands/ir/irGenAssetHandler.js.map +1 -1
- package/build/esm/commands/schema/registerSchemaCommands.js +2 -0
- package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
- package/build/esm/commands/schema/schemaGenTypesHandler.js +147 -0
- package/build/esm/commands/schema/schemaGenTypesHandler.js.map +1 -0
- package/build/esm/commands/steps/stepsGenIrHandler.js +6 -1
- package/build/esm/commands/steps/stepsGenIrHandler.js.map +1 -1
- package/build/esm/commands/types.js +2 -0
- package/build/esm/commands/types.js.map +1 -0
- package/build/esm/index.js +6 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldDef.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/recordDef.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/unionDef.js.map +1 -1
- package/build/esm/utils/generatedFileHeader.js +1 -0
- package/build/esm/utils/generatedFileHeader.js.map +1 -1
- 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/__tests__/convertIrToWireSchema.test.js +323 -0
- package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -0
- package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js +43 -61
- package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js.map +1 -1
- package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js +73 -103
- package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js.map +1 -1
- package/build/esm/utils/ir/convertIrToWireSchema.js +201 -0
- package/build/esm/utils/ir/convertIrToWireSchema.js.map +1 -0
- package/build/esm/utils/ir/generateModelsFromIr.js +2 -2
- package/build/esm/utils/ir/generateModelsFromIr.js.map +1 -1
- package/build/esm/utils/ir/generateZodSchemasFromIr.js +2 -2
- package/build/esm/utils/ir/generateZodSchemasFromIr.js.map +1 -1
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -0
- package/build/esm/utils/schema/__tests__/fixtures.js +207 -0
- package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +41 -0
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +41 -0
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +37 -0
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +55 -0
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +55 -0
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +37 -0
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/snapshotUtils.js +106 -0
- package/build/esm/utils/schema/__tests__/snapshotUtils.js.map +1 -0
- package/build/esm/utils/schema/generateIndexFromSchema.js +72 -0
- package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateInternalFromSchema.js +380 -0
- package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js +195 -0
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateScopeFromSchema.js +155 -0
- package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateTypesFromSchema.js +16 -30
- package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +281 -0
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js +189 -0
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateVersionsFromSchema.js +50 -0
- package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -0
- package/build/esm/utils/schema/resolveSchemaChain.js +54 -0
- package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -0
- package/build/esm/utils/schema/runtimeSchema.js +96 -0
- package/build/esm/utils/schema/runtimeSchema.js.map +1 -0
- 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/steps/__tests__/convertStepsToIr.test.js +81 -8
- package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
- package/build/esm/utils/steps/convertStepsToIr.js +8 -13
- package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
- package/build/esm/utils/steps/parseMigrationSteps.js +4 -2
- package/build/esm/utils/steps/parseMigrationSteps.js.map +1 -1
- package/build/types/cli.d.ts.map +1 -1
- package/build/types/commands/asset/assetDeployHandler.d.ts +10 -0
- package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -0
- package/build/types/commands/asset/registerAssetCommands.d.ts +3 -0
- package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -0
- package/build/types/commands/ir/irDeployHandler.d.ts +1 -1
- package/build/types/commands/ir/irDeployHandler.d.ts.map +1 -1
- package/build/types/commands/ir/irGenAssetHandler.d.ts +1 -1
- package/build/types/commands/ir/irGenAssetHandler.d.ts.map +1 -1
- package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
- package/build/types/commands/schema/schemaGenTypesHandler.d.ts +8 -0
- package/build/types/commands/schema/schemaGenTypesHandler.d.ts.map +1 -0
- package/build/types/commands/steps/stepsGenIrHandler.d.ts.map +1 -1
- package/build/types/commands/types.d.ts +12 -0
- package/build/types/commands/types.d.ts.map +1 -0
- package/build/types/index.d.ts +6 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldDef.d.ts +2 -2
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldDef.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.d.ts +1 -0
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.d.ts +1 -0
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.d.ts +3 -0
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts +0 -2
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.d.ts +2 -2
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/unionDef.d.ts +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/unionDef.d.ts.map +1 -1
- package/build/types/utils/generatedFileHeader.d.ts +1 -0
- package/build/types/utils/generatedFileHeader.d.ts.map +1 -1
- package/build/types/utils/ir/__tests__/convertIrToWireSchema.test.d.ts +2 -0
- package/build/types/utils/ir/__tests__/convertIrToWireSchema.test.d.ts.map +1 -0
- package/build/types/utils/ir/convertIrToWireSchema.d.ts +17 -0
- package/build/types/utils/ir/convertIrToWireSchema.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/fixtures.d.ts +14 -0
- package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/snapshotUtils.d.ts +47 -0
- package/build/types/utils/schema/__tests__/snapshotUtils.d.ts.map +1 -0
- package/build/types/utils/schema/generateIndexFromSchema.d.ts +14 -0
- package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateInternalFromSchema.d.ts +18 -0
- package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +15 -0
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateScopeFromSchema.d.ts +13 -0
- package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +18 -0
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +16 -0
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts +13 -0
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/resolveSchemaChain.d.ts +18 -0
- package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -0
- package/build/types/utils/schema/runtimeSchema.d.ts +59 -0
- package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -0
- package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
- package/build/types/utils/steps/parseMigrationSteps.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -37,7 +37,7 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
37
37
|
key: "name",
|
|
38
38
|
name: "Name",
|
|
39
39
|
description: "Person name",
|
|
40
|
-
|
|
40
|
+
fieldType: {
|
|
41
41
|
type: "value",
|
|
42
42
|
value: {
|
|
43
43
|
type: "string",
|
|
@@ -47,14 +47,14 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
metadata: {
|
|
51
|
+
addedInVersion: 1
|
|
52
52
|
}
|
|
53
53
|
}, {
|
|
54
54
|
key: "age",
|
|
55
55
|
name: "Age",
|
|
56
56
|
description: "Person age",
|
|
57
|
-
|
|
57
|
+
fieldType: {
|
|
58
58
|
type: "value",
|
|
59
59
|
value: {
|
|
60
60
|
type: "integer",
|
|
@@ -64,28 +64,25 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
metadata: {
|
|
68
|
+
addedInVersion: 1
|
|
69
69
|
}
|
|
70
70
|
}, {
|
|
71
71
|
key: "email",
|
|
72
72
|
name: "Email",
|
|
73
73
|
description: "Person email",
|
|
74
74
|
isOptional: true,
|
|
75
|
-
|
|
75
|
+
fieldType: {
|
|
76
76
|
type: "value",
|
|
77
77
|
value: {
|
|
78
78
|
type: "string",
|
|
79
79
|
string: {}
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
metadata: {
|
|
83
|
+
addedInVersion: 1
|
|
84
84
|
}
|
|
85
|
-
}]
|
|
86
|
-
meta: {
|
|
87
|
-
addedIn: 1
|
|
88
|
-
}
|
|
85
|
+
}]
|
|
89
86
|
}
|
|
90
87
|
}
|
|
91
88
|
}
|
|
@@ -110,7 +107,7 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
110
107
|
key: "tags",
|
|
111
108
|
name: "Tags",
|
|
112
109
|
description: "List of tags",
|
|
113
|
-
|
|
110
|
+
fieldType: {
|
|
114
111
|
type: "array",
|
|
115
112
|
array: {
|
|
116
113
|
allowNullValue: false,
|
|
@@ -120,14 +117,14 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
120
117
|
}
|
|
121
118
|
}
|
|
122
119
|
},
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
metadata: {
|
|
121
|
+
addedInVersion: 1
|
|
125
122
|
}
|
|
126
123
|
}, {
|
|
127
124
|
key: "metadata",
|
|
128
125
|
name: "Metadata",
|
|
129
126
|
description: "Key-value metadata",
|
|
130
|
-
|
|
127
|
+
fieldType: {
|
|
131
128
|
type: "map",
|
|
132
129
|
map: {
|
|
133
130
|
allowNullValue: false,
|
|
@@ -141,13 +138,10 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
141
138
|
}
|
|
142
139
|
}
|
|
143
140
|
},
|
|
144
|
-
|
|
145
|
-
|
|
141
|
+
metadata: {
|
|
142
|
+
addedInVersion: 1
|
|
146
143
|
}
|
|
147
|
-
}]
|
|
148
|
-
meta: {
|
|
149
|
-
addedIn: 1
|
|
150
|
-
}
|
|
144
|
+
}]
|
|
151
145
|
}
|
|
152
146
|
}
|
|
153
147
|
}
|
|
@@ -172,20 +166,17 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
172
166
|
key: "timestamp",
|
|
173
167
|
name: "Timestamp",
|
|
174
168
|
description: "Event timestamp",
|
|
175
|
-
|
|
169
|
+
fieldType: {
|
|
176
170
|
type: "value",
|
|
177
171
|
value: {
|
|
178
172
|
type: "datetime",
|
|
179
173
|
datetime: {}
|
|
180
174
|
}
|
|
181
175
|
},
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
metadata: {
|
|
177
|
+
addedInVersion: 1
|
|
184
178
|
}
|
|
185
|
-
}]
|
|
186
|
-
meta: {
|
|
187
|
-
addedIn: 1
|
|
188
|
-
}
|
|
179
|
+
}]
|
|
189
180
|
}
|
|
190
181
|
}
|
|
191
182
|
}
|
|
@@ -210,36 +201,36 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
210
201
|
key: "enabled",
|
|
211
202
|
name: "Enabled",
|
|
212
203
|
description: "Whether feature is enabled",
|
|
213
|
-
|
|
204
|
+
fieldType: {
|
|
214
205
|
type: "value",
|
|
215
206
|
value: {
|
|
216
207
|
type: "boolean",
|
|
217
208
|
boolean: {}
|
|
218
209
|
}
|
|
219
210
|
},
|
|
220
|
-
|
|
221
|
-
|
|
211
|
+
metadata: {
|
|
212
|
+
addedInVersion: 1
|
|
222
213
|
}
|
|
223
214
|
}, {
|
|
224
215
|
key: "isPublic",
|
|
225
216
|
name: "IsPublic",
|
|
226
217
|
description: "Whether feature is public",
|
|
227
218
|
isOptional: true,
|
|
228
|
-
|
|
219
|
+
fieldType: {
|
|
229
220
|
type: "value",
|
|
230
221
|
value: {
|
|
231
222
|
type: "boolean",
|
|
232
223
|
boolean: {}
|
|
233
224
|
}
|
|
234
225
|
},
|
|
235
|
-
|
|
236
|
-
|
|
226
|
+
metadata: {
|
|
227
|
+
addedInVersion: 1
|
|
237
228
|
}
|
|
238
229
|
}, {
|
|
239
230
|
key: "flags",
|
|
240
231
|
name: "Flags",
|
|
241
232
|
description: "Array of boolean flags",
|
|
242
|
-
|
|
233
|
+
fieldType: {
|
|
243
234
|
type: "array",
|
|
244
235
|
array: {
|
|
245
236
|
allowNullValue: false,
|
|
@@ -249,13 +240,10 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
249
240
|
}
|
|
250
241
|
}
|
|
251
242
|
},
|
|
252
|
-
|
|
253
|
-
|
|
243
|
+
metadata: {
|
|
244
|
+
addedInVersion: 1
|
|
254
245
|
}
|
|
255
|
-
}]
|
|
256
|
-
meta: {
|
|
257
|
-
addedIn: 1
|
|
258
|
-
}
|
|
246
|
+
}]
|
|
259
247
|
}
|
|
260
248
|
}
|
|
261
249
|
}
|
|
@@ -286,49 +274,46 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
286
274
|
key: "x",
|
|
287
275
|
name: "X",
|
|
288
276
|
description: "X coordinate",
|
|
289
|
-
|
|
277
|
+
fieldType: {
|
|
290
278
|
type: "value",
|
|
291
279
|
value: {
|
|
292
280
|
type: "double",
|
|
293
281
|
double: {}
|
|
294
282
|
}
|
|
295
283
|
},
|
|
296
|
-
|
|
297
|
-
|
|
284
|
+
metadata: {
|
|
285
|
+
addedInVersion: 1
|
|
298
286
|
}
|
|
299
287
|
}, {
|
|
300
288
|
key: "y",
|
|
301
289
|
name: "Y",
|
|
302
290
|
description: "Y coordinate",
|
|
303
|
-
|
|
291
|
+
fieldType: {
|
|
304
292
|
type: "value",
|
|
305
293
|
value: {
|
|
306
294
|
type: "double",
|
|
307
295
|
double: {}
|
|
308
296
|
}
|
|
309
297
|
},
|
|
310
|
-
|
|
311
|
-
|
|
298
|
+
metadata: {
|
|
299
|
+
addedInVersion: 1
|
|
312
300
|
}
|
|
313
301
|
}, {
|
|
314
302
|
key: "label",
|
|
315
303
|
name: "Label",
|
|
316
304
|
description: "Node label",
|
|
317
305
|
isOptional: true,
|
|
318
|
-
|
|
306
|
+
fieldType: {
|
|
319
307
|
type: "value",
|
|
320
308
|
value: {
|
|
321
309
|
type: "string",
|
|
322
310
|
string: {}
|
|
323
311
|
}
|
|
324
312
|
},
|
|
325
|
-
|
|
326
|
-
|
|
313
|
+
metadata: {
|
|
314
|
+
addedInVersion: 1
|
|
327
315
|
}
|
|
328
|
-
}]
|
|
329
|
-
meta: {
|
|
330
|
-
addedIn: 1
|
|
331
|
-
}
|
|
316
|
+
}]
|
|
332
317
|
}
|
|
333
318
|
},
|
|
334
319
|
TextBox: {
|
|
@@ -341,48 +326,45 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
341
326
|
key: "x",
|
|
342
327
|
name: "X",
|
|
343
328
|
description: "X coordinate",
|
|
344
|
-
|
|
329
|
+
fieldType: {
|
|
345
330
|
type: "value",
|
|
346
331
|
value: {
|
|
347
332
|
type: "double",
|
|
348
333
|
double: {}
|
|
349
334
|
}
|
|
350
335
|
},
|
|
351
|
-
|
|
352
|
-
|
|
336
|
+
metadata: {
|
|
337
|
+
addedInVersion: 1
|
|
353
338
|
}
|
|
354
339
|
}, {
|
|
355
340
|
key: "y",
|
|
356
341
|
name: "Y",
|
|
357
342
|
description: "Y coordinate",
|
|
358
|
-
|
|
343
|
+
fieldType: {
|
|
359
344
|
type: "value",
|
|
360
345
|
value: {
|
|
361
346
|
type: "double",
|
|
362
347
|
double: {}
|
|
363
348
|
}
|
|
364
349
|
},
|
|
365
|
-
|
|
366
|
-
|
|
350
|
+
metadata: {
|
|
351
|
+
addedInVersion: 1
|
|
367
352
|
}
|
|
368
353
|
}, {
|
|
369
354
|
key: "text",
|
|
370
355
|
name: "Text",
|
|
371
356
|
description: "Text content",
|
|
372
|
-
|
|
357
|
+
fieldType: {
|
|
373
358
|
type: "value",
|
|
374
359
|
value: {
|
|
375
360
|
type: "string",
|
|
376
361
|
string: {}
|
|
377
362
|
}
|
|
378
363
|
},
|
|
379
|
-
|
|
380
|
-
|
|
364
|
+
metadata: {
|
|
365
|
+
addedInVersion: 1
|
|
381
366
|
}
|
|
382
|
-
}]
|
|
383
|
-
meta: {
|
|
384
|
-
addedIn: 1
|
|
385
|
-
}
|
|
367
|
+
}]
|
|
386
368
|
}
|
|
387
369
|
},
|
|
388
370
|
Node: {
|
|
@@ -396,8 +378,8 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
396
378
|
object: "ObjectNode",
|
|
397
379
|
"text-box": "TextBox"
|
|
398
380
|
},
|
|
399
|
-
|
|
400
|
-
|
|
381
|
+
metadata: {
|
|
382
|
+
addedInVersion: 1
|
|
401
383
|
}
|
|
402
384
|
}
|
|
403
385
|
}
|
|
@@ -430,20 +412,17 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
430
412
|
key: "value",
|
|
431
413
|
name: "Value",
|
|
432
414
|
description: "A value",
|
|
433
|
-
|
|
415
|
+
fieldType: {
|
|
434
416
|
type: "value",
|
|
435
417
|
value: {
|
|
436
418
|
type: "string",
|
|
437
419
|
string: {}
|
|
438
420
|
}
|
|
439
421
|
},
|
|
440
|
-
|
|
441
|
-
|
|
422
|
+
metadata: {
|
|
423
|
+
addedInVersion: 1
|
|
442
424
|
}
|
|
443
|
-
}]
|
|
444
|
-
meta: {
|
|
445
|
-
addedIn: 1
|
|
446
|
-
}
|
|
425
|
+
}]
|
|
447
426
|
}
|
|
448
427
|
},
|
|
449
428
|
Bar: {
|
|
@@ -456,20 +435,17 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
456
435
|
key: "count",
|
|
457
436
|
name: "Count",
|
|
458
437
|
description: "A count",
|
|
459
|
-
|
|
438
|
+
fieldType: {
|
|
460
439
|
type: "value",
|
|
461
440
|
value: {
|
|
462
441
|
type: "integer",
|
|
463
442
|
integer: {}
|
|
464
443
|
}
|
|
465
444
|
},
|
|
466
|
-
|
|
467
|
-
|
|
445
|
+
metadata: {
|
|
446
|
+
addedInVersion: 1
|
|
468
447
|
}
|
|
469
|
-
}]
|
|
470
|
-
meta: {
|
|
471
|
-
addedIn: 1
|
|
472
|
-
}
|
|
448
|
+
}]
|
|
473
449
|
}
|
|
474
450
|
},
|
|
475
451
|
FooBar: {
|
|
@@ -483,8 +459,8 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
483
459
|
foo: "Foo",
|
|
484
460
|
bar: "Bar"
|
|
485
461
|
},
|
|
486
|
-
|
|
487
|
-
|
|
462
|
+
metadata: {
|
|
463
|
+
addedInVersion: 1
|
|
488
464
|
}
|
|
489
465
|
}
|
|
490
466
|
}
|
|
@@ -523,20 +499,17 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
523
499
|
key: "meow",
|
|
524
500
|
name: "Meow",
|
|
525
501
|
description: "Cat sound",
|
|
526
|
-
|
|
502
|
+
fieldType: {
|
|
527
503
|
type: "value",
|
|
528
504
|
value: {
|
|
529
505
|
type: "string",
|
|
530
506
|
string: {}
|
|
531
507
|
}
|
|
532
508
|
},
|
|
533
|
-
|
|
534
|
-
|
|
509
|
+
metadata: {
|
|
510
|
+
addedInVersion: 1
|
|
535
511
|
}
|
|
536
|
-
}]
|
|
537
|
-
meta: {
|
|
538
|
-
addedIn: 1
|
|
539
|
-
}
|
|
512
|
+
}]
|
|
540
513
|
}
|
|
541
514
|
},
|
|
542
515
|
Dog: {
|
|
@@ -549,20 +522,17 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
549
522
|
key: "bark",
|
|
550
523
|
name: "Bark",
|
|
551
524
|
description: "Dog sound",
|
|
552
|
-
|
|
525
|
+
fieldType: {
|
|
553
526
|
type: "value",
|
|
554
527
|
value: {
|
|
555
528
|
type: "string",
|
|
556
529
|
string: {}
|
|
557
530
|
}
|
|
558
531
|
},
|
|
559
|
-
|
|
560
|
-
|
|
532
|
+
metadata: {
|
|
533
|
+
addedInVersion: 1
|
|
561
534
|
}
|
|
562
|
-
}]
|
|
563
|
-
meta: {
|
|
564
|
-
addedIn: 1
|
|
565
|
-
}
|
|
535
|
+
}]
|
|
566
536
|
}
|
|
567
537
|
},
|
|
568
538
|
Animal: {
|
|
@@ -576,8 +546,8 @@ describe("generateZodSchemasFromIr", () => {
|
|
|
576
546
|
cat: "Cat",
|
|
577
547
|
dog: "Dog"
|
|
578
548
|
},
|
|
579
|
-
|
|
580
|
-
|
|
549
|
+
metadata: {
|
|
550
|
+
addedInVersion: 1
|
|
581
551
|
}
|
|
582
552
|
}
|
|
583
553
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateZodSchemasFromIr.test.js","names":["path","describe","expect","it","generateZodSchemasFromIr","formatWithPrettier","snapshotDir","join","__dirname","result","name","description","version","primaryModelKeys","models","Person","type","record","key","fields","value","string","minLength","maxLength","meta","addedIn","integer","minValue","maxValue","isOptional","formatted","toMatchFileSnapshot","Container","array","allowNullValue","map","unmanagedJson","Event","datetime","Feature","boolean","ObjectNode","double","TextBox","Node","union","discriminant","variants","object","Foo","Bar","FooBar","foo","bar","lines","split","fooSchemaIndex","findIndex","line","includes","barSchemaIndex","fooBarSchemaIndex","toBeGreaterThan","toBeLessThan","Cat","Dog","Animal","cat","dog","toContain"],"sources":["generateZodSchemasFromIr.test.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 path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport type {\n IFieldDef,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { generateZodSchemasFromIr } from \"../generateZodSchemasFromIr.js\";\nimport { formatWithPrettier } from \"./formatWithPrettier.js\";\n\ndescribe(\"generateZodSchemasFromIr\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateZodSchemasFromIr\");\n it(\"should generate Zod schemas for simple record types\", async () => {\n const personField1: IFieldDef = {\n key: \"name\",\n name: \"Name\",\n description: \"Person name\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: { minLength: 2, maxLength: 50 },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const personField2: IFieldDef = {\n key: \"age\",\n name: \"Age\",\n description: \"Person age\",\n value: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: { minValue: 0, maxValue: 150 },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const personField3: IFieldDef = {\n key: \"email\",\n name: \"Email\",\n description: \"Person email\",\n isOptional: true,\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const personRecord: IRecordDef = {\n key: \"Person\",\n name: \"Person\",\n description: \"A person record\",\n fields: [personField1, personField2, personField3],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Person\"],\n models: {\n Person: {\n type: \"record\",\n record: personRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"simple-records.ts\"));\n });\n\n it(\"should generate Zod schemas for array and map types\", async () => {\n const arrayField: IFieldDef = {\n key: \"tags\",\n name: \"Tags\",\n description: \"List of tags\",\n value: {\n type: \"array\",\n array: {\n allowNullValue: false,\n value: {\n type: \"string\",\n string: {},\n },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const mapField: IFieldDef = {\n key: \"metadata\",\n name: \"Metadata\",\n description: \"Key-value metadata\",\n value: {\n type: \"map\",\n map: {\n allowNullValue: false,\n key: {\n type: \"string\",\n string: {},\n },\n value: {\n type: \"unmanagedJson\",\n unmanagedJson: {},\n },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const containerRecord: IRecordDef = {\n key: \"Container\",\n name: \"Container\",\n description: \"A container record\",\n fields: [arrayField, mapField],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Container\"],\n models: {\n Container: {\n type: \"record\",\n record: containerRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"array-and-map-types.ts\"));\n });\n\n it(\"should generate Zod schemas with datetime fields\", async () => {\n const datetimeField: IFieldDef = {\n key: \"timestamp\",\n name: \"Timestamp\",\n description: \"Event timestamp\",\n value: {\n type: \"value\",\n value: {\n type: \"datetime\",\n datetime: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const eventRecord: IRecordDef = {\n key: \"Event\",\n name: \"Event\",\n description: \"An event record\",\n fields: [datetimeField],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Event\"],\n models: {\n Event: {\n type: \"record\",\n record: eventRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"datetime-fields.ts\"));\n });\n\n it(\"should generate Zod schemas with boolean fields\", async () => {\n const booleanField: IFieldDef = {\n key: \"enabled\",\n name: \"Enabled\",\n description: \"Whether feature is enabled\",\n value: {\n type: \"value\",\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const optionalBooleanField: IFieldDef = {\n key: \"isPublic\",\n name: \"IsPublic\",\n description: \"Whether feature is public\",\n isOptional: true,\n value: {\n type: \"value\",\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const booleanArrayField: IFieldDef = {\n key: \"flags\",\n name: \"Flags\",\n description: \"Array of boolean flags\",\n value: {\n type: \"array\",\n array: {\n allowNullValue: false,\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const featureRecord: IRecordDef = {\n key: \"Feature\",\n name: \"Feature\",\n description: \"A feature toggle record\",\n fields: [booleanField, optionalBooleanField, booleanArrayField],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Feature\"],\n models: {\n Feature: {\n type: \"record\",\n record: featureRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"boolean-fields.ts\"));\n });\n\n it(\"should generate Zod schemas for union types\", async () => {\n // Define the ObjectNode record\n const objectNodeRecord: IRecordDef = {\n key: \"ObjectNode\",\n name: \"ObjectNode\",\n description: \"A node in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"label\",\n name: \"Label\",\n description: \"Node label\",\n isOptional: true,\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n // Define the TextBox record\n const textBoxRecord: IRecordDef = {\n key: \"TextBox\",\n name: \"TextBox\",\n description: \"A text box in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"text\",\n name: \"Text\",\n description: \"Text content\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n // Define the Node union\n const nodeUnion: IUnionDef = {\n key: \"Node\",\n discriminant: \"type\",\n name: \"Node\",\n description: \"A node in the graph\",\n variants: {\n object: \"ObjectNode\",\n \"text-box\": \"TextBox\",\n },\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with unions\",\n version: 1,\n primaryModelKeys: [\"ObjectNode\", \"TextBox\", \"Node\"],\n models: {\n ObjectNode: {\n type: \"record\",\n record: objectNodeRecord,\n } as IModelDef,\n TextBox: {\n type: \"record\",\n record: textBoxRecord,\n } as IModelDef,\n Node: {\n type: \"union\",\n union: nodeUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-types.ts\"));\n });\n\n it(\"should handle unions defined before their variant records\", async () => {\n // Define records\n const fooRecord: IRecordDef = {\n key: \"Foo\",\n name: \"Foo\",\n description: \"Foo record\",\n fields: [\n {\n key: \"value\",\n name: \"Value\",\n description: \"A value\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n const barRecord: IRecordDef = {\n key: \"Bar\",\n name: \"Bar\",\n description: \"Bar record\",\n fields: [\n {\n key: \"count\",\n name: \"Count\",\n description: \"A count\",\n value: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n // Define union that references the records\n const fooBarUnion: IUnionDef = {\n key: \"FooBar\",\n discriminant: \"type\",\n name: \"FooBar\",\n description: \"FooBar union\",\n variants: {\n foo: \"Foo\",\n bar: \"Bar\",\n },\n meta: { addedIn: 1 },\n };\n\n // Intentionally put union BEFORE its variant records in primaryModelKeys\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"Test schema with union before records\",\n version: 1,\n primaryModelKeys: [\"FooBar\", \"Foo\", \"Bar\"], // Union comes first!\n models: {\n Foo: {\n type: \"record\",\n record: fooRecord,\n } as IModelDef,\n Bar: {\n type: \"record\",\n record: barRecord,\n } as IModelDef,\n FooBar: {\n type: \"union\",\n union: fooBarUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify that records come before union in the output\n const lines = formatted.split(\"\\n\");\n const fooSchemaIndex = lines.findIndex(line => line.includes(\"export const FooSchema\"));\n const barSchemaIndex = lines.findIndex(line => line.includes(\"export const BarSchema\"));\n const fooBarSchemaIndex = lines.findIndex(line => line.includes(\"export const FooBarSchema\"));\n\n expect(fooSchemaIndex).toBeGreaterThan(-1);\n expect(barSchemaIndex).toBeGreaterThan(-1);\n expect(fooBarSchemaIndex).toBeGreaterThan(-1);\n\n // Records should come before the union\n expect(fooSchemaIndex).toBeLessThan(fooBarSchemaIndex);\n expect(barSchemaIndex).toBeLessThan(fooBarSchemaIndex);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-before-records.ts\"));\n });\n\n it(\"should generate Zod schemas with custom discriminant\", async () => {\n const catRecord: IRecordDef = {\n key: \"Cat\",\n name: \"Cat\",\n description: \"A cat\",\n fields: [\n {\n key: \"meow\",\n name: \"Meow\",\n description: \"Cat sound\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n const dogRecord: IRecordDef = {\n key: \"Dog\",\n name: \"Dog\",\n description: \"A dog\",\n fields: [\n {\n key: \"bark\",\n name: \"Bark\",\n description: \"Dog sound\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n const animalUnion: IUnionDef = {\n key: \"Animal\",\n discriminant: \"kind\",\n name: \"Animal\",\n description: \"An animal union with custom discriminant\",\n variants: {\n cat: \"Cat\",\n dog: \"Dog\",\n },\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with custom discriminant\",\n version: 1,\n primaryModelKeys: [\"Cat\", \"Dog\", \"Animal\"],\n models: {\n Cat: {\n type: \"record\",\n record: catRecord,\n } as IModelDef,\n Dog: {\n type: \"record\",\n record: dogRecord,\n } as IModelDef,\n Animal: {\n type: \"union\",\n union: animalUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n expect(formatted).toContain(\"z.discriminatedUnion('kind'\");\n expect(formatted).toContain(\"kind: z.literal('cat')\");\n expect(formatted).toContain(\"kind: z.literal('dog')\");\n\n await expect(formatted).toMatchFileSnapshot(\n path.join(snapshotDir, \"custom-discriminant.ts\"),\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateZodSchemasFromIr.test.js","names":["path","describe","expect","it","generateZodSchemasFromIr","formatWithPrettier","snapshotDir","join","__dirname","result","name","description","version","primaryModelKeys","models","Person","type","record","key","fields","fieldType","value","string","minLength","maxLength","metadata","addedInVersion","integer","minValue","maxValue","isOptional","formatted","toMatchFileSnapshot","Container","array","allowNullValue","map","unmanagedJson","Event","datetime","Feature","boolean","ObjectNode","double","TextBox","Node","union","discriminant","variants","object","Foo","Bar","FooBar","foo","bar","lines","split","fooSchemaIndex","findIndex","line","includes","barSchemaIndex","fooBarSchemaIndex","toBeGreaterThan","toBeLessThan","Cat","Dog","Animal","cat","dog","toContain"],"sources":["generateZodSchemasFromIr.test.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 path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport type {\n IFieldDef,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { generateZodSchemasFromIr } from \"../generateZodSchemasFromIr.js\";\nimport { formatWithPrettier } from \"./formatWithPrettier.js\";\n\ndescribe(\"generateZodSchemasFromIr\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateZodSchemasFromIr\");\n it(\"should generate Zod schemas for simple record types\", async () => {\n const personField1: IFieldDef = {\n key: \"name\",\n name: \"Name\",\n description: \"Person name\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: { minLength: 2, maxLength: 50 },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const personField2: IFieldDef = {\n key: \"age\",\n name: \"Age\",\n description: \"Person age\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: { minValue: 0, maxValue: 150 },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const personField3: IFieldDef = {\n key: \"email\",\n name: \"Email\",\n description: \"Person email\",\n isOptional: true,\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const personRecord: IRecordDef = {\n key: \"Person\",\n name: \"Person\",\n description: \"A person record\",\n fields: [personField1, personField2, personField3],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Person\"],\n models: {\n Person: {\n type: \"record\",\n record: personRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"simple-records.ts\"));\n });\n\n it(\"should generate Zod schemas for array and map types\", async () => {\n const arrayField: IFieldDef = {\n key: \"tags\",\n name: \"Tags\",\n description: \"List of tags\",\n fieldType: {\n type: \"array\",\n array: {\n allowNullValue: false,\n value: {\n type: \"string\",\n string: {},\n },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const mapField: IFieldDef = {\n key: \"metadata\",\n name: \"Metadata\",\n description: \"Key-value metadata\",\n fieldType: {\n type: \"map\",\n map: {\n allowNullValue: false,\n key: {\n type: \"string\",\n string: {},\n },\n value: {\n type: \"unmanagedJson\",\n unmanagedJson: {},\n },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const containerRecord: IRecordDef = {\n key: \"Container\",\n name: \"Container\",\n description: \"A container record\",\n fields: [arrayField, mapField],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Container\"],\n models: {\n Container: {\n type: \"record\",\n record: containerRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"array-and-map-types.ts\"));\n });\n\n it(\"should generate Zod schemas with datetime fields\", async () => {\n const datetimeField: IFieldDef = {\n key: \"timestamp\",\n name: \"Timestamp\",\n description: \"Event timestamp\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"datetime\",\n datetime: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const eventRecord: IRecordDef = {\n key: \"Event\",\n name: \"Event\",\n description: \"An event record\",\n fields: [datetimeField],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Event\"],\n models: {\n Event: {\n type: \"record\",\n record: eventRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"datetime-fields.ts\"));\n });\n\n it(\"should generate Zod schemas with boolean fields\", async () => {\n const booleanField: IFieldDef = {\n key: \"enabled\",\n name: \"Enabled\",\n description: \"Whether feature is enabled\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const optionalBooleanField: IFieldDef = {\n key: \"isPublic\",\n name: \"IsPublic\",\n description: \"Whether feature is public\",\n isOptional: true,\n fieldType: {\n type: \"value\",\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const booleanArrayField: IFieldDef = {\n key: \"flags\",\n name: \"Flags\",\n description: \"Array of boolean flags\",\n fieldType: {\n type: \"array\",\n array: {\n allowNullValue: false,\n value: {\n type: \"boolean\",\n boolean: {},\n },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const featureRecord: IRecordDef = {\n key: \"Feature\",\n name: \"Feature\",\n description: \"A feature toggle record\",\n fields: [booleanField, optionalBooleanField, booleanArrayField],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Feature\"],\n models: {\n Feature: {\n type: \"record\",\n record: featureRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"boolean-fields.ts\"));\n });\n\n it(\"should generate Zod schemas for union types\", async () => {\n // Define the ObjectNode record\n const objectNodeRecord: IRecordDef = {\n key: \"ObjectNode\",\n name: \"ObjectNode\",\n description: \"A node in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"label\",\n name: \"Label\",\n description: \"Node label\",\n isOptional: true,\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n // Define the TextBox record\n const textBoxRecord: IRecordDef = {\n key: \"TextBox\",\n name: \"TextBox\",\n description: \"A text box in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"text\",\n name: \"Text\",\n description: \"Text content\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n // Define the Node union\n const nodeUnion: IUnionDef = {\n key: \"Node\",\n discriminant: \"type\",\n name: \"Node\",\n description: \"A node in the graph\",\n variants: {\n object: \"ObjectNode\",\n \"text-box\": \"TextBox\",\n },\n metadata: { addedInVersion: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with unions\",\n version: 1,\n primaryModelKeys: [\"ObjectNode\", \"TextBox\", \"Node\"],\n models: {\n ObjectNode: {\n type: \"record\",\n record: objectNodeRecord,\n } as IModelDef,\n TextBox: {\n type: \"record\",\n record: textBoxRecord,\n } as IModelDef,\n Node: {\n type: \"union\",\n union: nodeUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-types.ts\"));\n });\n\n it(\"should handle unions defined before their variant records\", async () => {\n // Define records\n const fooRecord: IRecordDef = {\n key: \"Foo\",\n name: \"Foo\",\n description: \"Foo record\",\n fields: [\n {\n key: \"value\",\n name: \"Value\",\n description: \"A value\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const barRecord: IRecordDef = {\n key: \"Bar\",\n name: \"Bar\",\n description: \"Bar record\",\n fields: [\n {\n key: \"count\",\n name: \"Count\",\n description: \"A count\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n // Define union that references the records\n const fooBarUnion: IUnionDef = {\n key: \"FooBar\",\n discriminant: \"type\",\n name: \"FooBar\",\n description: \"FooBar union\",\n variants: {\n foo: \"Foo\",\n bar: \"Bar\",\n },\n metadata: { addedInVersion: 1 },\n };\n\n // Intentionally put union BEFORE its variant records in primaryModelKeys\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"Test schema with union before records\",\n version: 1,\n primaryModelKeys: [\"FooBar\", \"Foo\", \"Bar\"], // Union comes first!\n models: {\n Foo: {\n type: \"record\",\n record: fooRecord,\n } as IModelDef,\n Bar: {\n type: \"record\",\n record: barRecord,\n } as IModelDef,\n FooBar: {\n type: \"union\",\n union: fooBarUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify that records come before union in the output\n const lines = formatted.split(\"\\n\");\n const fooSchemaIndex = lines.findIndex(line => line.includes(\"export const FooSchema\"));\n const barSchemaIndex = lines.findIndex(line => line.includes(\"export const BarSchema\"));\n const fooBarSchemaIndex = lines.findIndex(line => line.includes(\"export const FooBarSchema\"));\n\n expect(fooSchemaIndex).toBeGreaterThan(-1);\n expect(barSchemaIndex).toBeGreaterThan(-1);\n expect(fooBarSchemaIndex).toBeGreaterThan(-1);\n\n // Records should come before the union\n expect(fooSchemaIndex).toBeLessThan(fooBarSchemaIndex);\n expect(barSchemaIndex).toBeLessThan(fooBarSchemaIndex);\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-before-records.ts\"));\n });\n\n it(\"should generate Zod schemas with custom discriminant\", async () => {\n const catRecord: IRecordDef = {\n key: \"Cat\",\n name: \"Cat\",\n description: \"A cat\",\n fields: [\n {\n key: \"meow\",\n name: \"Meow\",\n description: \"Cat sound\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const dogRecord: IRecordDef = {\n key: \"Dog\",\n name: \"Dog\",\n description: \"A dog\",\n fields: [\n {\n key: \"bark\",\n name: \"Bark\",\n description: \"Dog sound\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const animalUnion: IUnionDef = {\n key: \"Animal\",\n discriminant: \"kind\",\n name: \"Animal\",\n description: \"An animal union with custom discriminant\",\n variants: {\n cat: \"Cat\",\n dog: \"Dog\",\n },\n metadata: { addedInVersion: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with custom discriminant\",\n version: 1,\n primaryModelKeys: [\"Cat\", \"Dog\", \"Animal\"],\n models: {\n Cat: {\n type: \"record\",\n record: catRecord,\n } as IModelDef,\n Dog: {\n type: \"record\",\n record: dogRecord,\n } as IModelDef,\n Animal: {\n type: \"union\",\n union: animalUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateZodSchemasFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n expect(formatted).toContain(\"z.discriminatedUnion('kind'\");\n expect(formatted).toContain(\"kind: z.literal('cat')\");\n expect(formatted).toContain(\"kind: z.literal('dog')\");\n\n await expect(formatted).toMatchFileSnapshot(\n path.join(snapshotDir, \"custom-discriminant.ts\"),\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|