@palantir/pack.document-schema.type-gen 0.9.0 → 0.10.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/commands/asset/__tests__/buildPrefixRewriteFetch.test.js +85 -0
- package/build/esm/commands/asset/__tests__/buildPrefixRewriteFetch.test.js.map +1 -0
- package/build/esm/commands/asset/assetDeployHandler.js +36 -1
- package/build/esm/commands/asset/assetDeployHandler.js.map +1 -1
- package/build/esm/commands/asset/registerAssetCommands.js +1 -1
- package/build/esm/commands/asset/registerAssetCommands.js.map +1 -1
- package/build/esm/commands/ir/irGenTypesHandler.js +49 -0
- package/build/esm/commands/ir/irGenTypesHandler.js.map +1 -0
- package/build/esm/commands/ir/registerIrCommands.js +2 -0
- package/build/esm/commands/ir/registerIrCommands.js.map +1 -1
- package/build/esm/commands/schema/registerSchemaCommands.js +2 -2
- package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
- package/build/esm/commands/schema/schemaIrHandler.js +56 -0
- package/build/esm/commands/schema/schemaIrHandler.js.map +1 -0
- package/build/esm/index.js +0 -6
- package/build/esm/index.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 +23 -0
- package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -1
- package/build/esm/utils/ir/irFieldHelpers.js +383 -0
- package/build/esm/utils/ir/irFieldHelpers.js.map +1 -0
- 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__/convertSchemaToSteps.test.js +13 -0
- package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/fixtures.js +76 -5
- package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +19 -7
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +7 -6
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +6 -5
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +19 -10
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +15 -10
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +6 -5
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -1
- package/build/esm/utils/schema/convertSchemaToSteps.js +6 -0
- package/build/esm/utils/schema/convertSchemaToSteps.js.map +1 -1
- package/build/esm/utils/schema/generateIndexFromSchema.js +15 -13
- package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateInternalFromSchema.js +68 -184
- package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js +46 -69
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateScopeFromSchema.js +29 -33
- package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateTypesFromSchema.js +9 -1
- package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +61 -155
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js +58 -94
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionsFromSchema.js +7 -5
- package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -1
- package/build/esm/utils/schema/loadSchemaModule.js +53 -0
- package/build/esm/utils/schema/loadSchemaModule.js.map +1 -0
- package/build/esm/utils/schema/resolveSchemaChain.js +59 -9
- package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -1
- package/build/esm/utils/schema/runtimeSchema.js +0 -27
- package/build/esm/utils/schema/runtimeSchema.js.map +1 -1
- package/build/esm/utils/schema/writeAllSdkFiles.js +111 -0
- package/build/esm/utils/schema/writeAllSdkFiles.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 +93 -1
- package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
- package/build/esm/utils/steps/convertStepsToIr.js +43 -35
- package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
- package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts +2 -0
- package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts.map +1 -0
- package/build/types/commands/asset/assetDeployHandler.d.ts +15 -0
- package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -1
- package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -1
- package/build/types/commands/ir/irGenTypesHandler.d.ts +8 -0
- package/build/types/commands/ir/irGenTypesHandler.d.ts.map +1 -0
- package/build/types/commands/ir/registerIrCommands.d.ts.map +1 -1
- package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
- package/build/types/commands/schema/schemaIrHandler.d.ts +19 -0
- package/build/types/commands/schema/schemaIrHandler.d.ts.map +1 -0
- package/build/types/index.d.ts +1 -6
- package/build/types/index.d.ts.map +1 -1
- package/build/types/utils/ir/irFieldHelpers.d.ts +36 -0
- package/build/types/utils/ir/irFieldHelpers.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/fixtures.d.ts +10 -1
- package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -1
- package/build/types/utils/schema/convertSchemaToSteps.d.ts.map +1 -1
- package/build/types/utils/schema/generateIndexFromSchema.d.ts +2 -2
- package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateInternalFromSchema.d.ts +3 -6
- package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +3 -8
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateScopeFromSchema.d.ts +2 -2
- package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +4 -7
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +3 -7
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts +3 -3
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/loadSchemaModule.d.ts +14 -0
- package/build/types/utils/schema/loadSchemaModule.d.ts.map +1 -0
- package/build/types/utils/schema/resolveSchemaChain.d.ts +29 -8
- package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -1
- package/build/types/utils/schema/runtimeSchema.d.ts +0 -32
- package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -1
- package/build/types/utils/schema/writeAllSdkFiles.d.ts +8 -0
- package/build/types/utils/schema/writeAllSdkFiles.d.ts.map +1 -0
- package/build/types/utils/steps/convertStepsToIr.d.ts +3 -3
- package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
- package/package.json +3 -3
- package/build/esm/commands/schema/schemaGenTypesHandler.js +0 -147
- package/build/esm/commands/schema/schemaGenTypesHandler.js.map +0 -1
- package/build/types/commands/schema/schemaGenTypesHandler.d.ts +0 -8
- package/build/types/commands/schema/schemaGenTypesHandler.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"irFieldHelpers.js","names":["versionedSchemaName","versionedTypeName","convertFieldTypeToTypeScript","fieldType","version","type","convertCollectionValueToTypeScript","array","Error","convertFieldValueToTypeScript","value","collection","modelKey","modelRef","modelTypes","convertFieldTypeToZodSchema","inner","convertFieldValueToZodSchema","optSuffix","allowNullValue","refSchemaName","refTypeName","convertFieldTypeToInternalTypeScript","isOptional","base","convertFieldTypeToInternalTsInner","convertCollectionValueToInternalTs","needsParens","includes","startsWith","wrapped","convertFieldValueToInternalTs","convertFieldTypeToInternalZod","convertFieldTypeToInternalZodInner","endsWith","convertCollectionValueToInternalZod","convertFieldValueToInternalZod","convertFieldTypeToDescriptor","convertFieldTypeToDescriptorInner","convertCollectionValueToDescriptor","convertFieldValueToDescriptor","detectUsedRefTypes","ir","refTypes","Set","modelDef","Object","values","models","field","record","fields","scanFieldTypeForRefs","out","scanFieldValueForRefs","add","collectReferencedTypes","collectReferencedValuesTypes","findExternalRefType","findExternalRefValueType","undefined"],"sources":["irFieldHelpers.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 type { IFieldTypeCollection } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeCollection.js\";\nimport type { IFieldTypeUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeUnion.js\";\nimport type { IFieldValueUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.js\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/realTimeDocumentSchema.js\";\nimport { versionedSchemaName, versionedTypeName } from \"../schema/runtimeSchema.js\";\n\n// ---------------------------------------------------------------------------\n// Public read-type TypeScript conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript type string for public read types.\n */\nexport function convertFieldTypeToTypeScript(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\":\n return `readonly ${convertCollectionValueToTypeScript(fieldType.array, version)}[]`;\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in TypeScript generation`);\n case \"value\":\n return convertFieldValueToTypeScript(fieldType.value, version);\n }\n}\n\nfunction convertCollectionValueToTypeScript(\n collection: IFieldTypeCollection,\n version?: number,\n): string {\n // allowNullValue is ignored in public read types (current behavior)\n return convertFieldValueToTypeScript(collection.value, version);\n}\n\nfunction convertFieldValueToTypeScript(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n case \"boolean\":\n return \"boolean\";\n case \"datetime\":\n return \"string\";\n case \"docRef\":\n return \"DocumentRef\";\n case \"double\":\n return \"number\";\n case \"integer\":\n return \"number\";\n case \"mediaRef\":\n return \"MediaRef\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return version != null ? versionedTypeName(modelKey, version) : modelKey;\n }\n case \"object\":\n return \"ObjectRef\";\n case \"string\":\n return \"string\";\n case \"text\":\n return \"string\";\n case \"unmanagedJson\":\n return \"any\";\n case \"userRef\":\n return \"UserRef\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string.\n */\nexport function convertFieldTypeToZodSchema(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertFieldValueToZodSchema(fieldType.array.value, version);\n const optSuffix = fieldType.array.allowNullValue ? \".optional()\" : \"\";\n return `z.array(${inner}${optSuffix})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in Zod generation`);\n case \"value\":\n return convertFieldValueToZodSchema(fieldType.value, version);\n }\n}\n\nfunction convertFieldValueToZodSchema(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n const refSchemaName = version != null\n ? versionedSchemaName(modelKey, version)\n : `${modelKey}Schema`;\n const refTypeName = version != null ? versionedTypeName(modelKey, version) : modelKey;\n return `z.lazy((): ZodType<${refTypeName}> => ${refSchemaName})`;\n }\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal TypeScript conversion (refs → unknown, external refs → string)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript string for internal types.\n */\nexport function convertFieldTypeToInternalTypeScript(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalTsInner(fieldType);\n if (isOptional) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalTsInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalTs(fieldType.array);\n const needsParens = inner.includes(\"|\") || inner.startsWith(\"readonly \");\n const wrapped = needsParens ? `(${inner})` : inner;\n return `readonly ${wrapped}[]`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal TypeScript generation`);\n case \"value\":\n return convertFieldValueToInternalTs(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalTs(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalTs(collection.value);\n if (collection.allowNullValue) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalTs(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"boolean\";\n case \"double\":\n case \"integer\":\n return \"number\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"string\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"unknown\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string for internal schemas.\n */\nexport function convertFieldTypeToInternalZod(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalZodInner(fieldType);\n if (isOptional) {\n if (base.endsWith(\".optional()\")) {\n return base;\n }\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalZodInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalZod(fieldType.array);\n return `z.array(${inner})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal Zod generation`);\n case \"value\":\n return convertFieldValueToInternalZod(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalZod(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalZod(collection.value);\n if (collection.allowNullValue) {\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalZod(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// FieldTypeDescriptor conversion (for UpgradeLens)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a FieldTypeDescriptor source string for UpgradeLens.\n */\nexport function convertFieldTypeToDescriptor(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToDescriptorInner(fieldType);\n if (isOptional) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldTypeToDescriptorInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToDescriptor(fieldType.array);\n return `{ kind: \"array\", element: ${inner} }`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in descriptor generation`);\n case \"value\":\n return convertFieldValueToDescriptor(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToDescriptor(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToDescriptor(collection.value);\n if (collection.allowNullValue) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldValueToDescriptor(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return `{ kind: \"modelRef\", model: \"${modelKey}\" }`;\n }\n default:\n return `{ kind: \"primitive\" }`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Ref type detection (for import generation)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect which external ref types (DocumentRef, MediaRef, ObjectRef, UserRef)\n * are used anywhere in the IR schema.\n */\nexport function detectUsedRefTypes(ir: IRealTimeDocumentSchema): Set<string> {\n const refTypes = new Set<string>();\n\n for (const modelDef of Object.values(ir.models)) {\n if (modelDef.type === \"record\") {\n for (const field of modelDef.record.fields) {\n scanFieldTypeForRefs(field.fieldType, refTypes);\n }\n }\n }\n\n return refTypes;\n}\n\nfunction scanFieldTypeForRefs(fieldType: IFieldTypeUnion, out: Set<string>): void {\n switch (fieldType.type) {\n case \"array\":\n scanFieldValueForRefs(fieldType.array.value, out);\n break;\n case \"value\":\n scanFieldValueForRefs(fieldType.value, out);\n break;\n }\n}\n\nfunction scanFieldValueForRefs(value: IFieldValueUnion, out: Set<string>): void {\n switch (value.type) {\n case \"docRef\":\n out.add(\"DocumentRef\");\n break;\n case \"mediaRef\":\n out.add(\"MediaRef\");\n break;\n case \"object\":\n out.add(\"ObjectRef\");\n break;\n case \"userRef\":\n out.add(\"UserRef\");\n break;\n }\n}\n\n/**\n * Collect schema-local type references (versioned type names) from a field type.\n */\nexport function collectReferencedTypes(\n fieldType: IFieldTypeUnion,\n version: number,\n out: Set<string>,\n): void {\n switch (fieldType.type) {\n case \"array\":\n collectReferencedValuesTypes(fieldType.array.value, version, out);\n break;\n case \"value\":\n collectReferencedValuesTypes(fieldType.value, version, out);\n break;\n }\n}\n\nfunction collectReferencedValuesTypes(\n value: IFieldValueUnion,\n version: number,\n out: Set<string>,\n): void {\n if (value.type === \"modelRef\") {\n const modelKey = value.modelRef.modelTypes[0]!;\n out.add(versionedTypeName(modelKey, version));\n }\n}\n\n// ---------------------------------------------------------------------------\n// External ref field type detection (for model metadata)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect the external ref type (docRef, mediaRef, objectRef, userRef) of a field, if any.\n */\nexport function findExternalRefType(fieldType: IFieldTypeUnion): string | undefined {\n switch (fieldType.type) {\n case \"array\":\n return findExternalRefValueType(fieldType.array.value);\n case \"value\":\n return findExternalRefValueType(fieldType.value);\n default:\n return undefined;\n }\n}\n\nfunction findExternalRefValueType(value: IFieldValueUnion): string | undefined {\n switch (value.type) {\n case \"docRef\":\n return \"docRef\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"object\":\n return \"objectRef\";\n case \"userRef\":\n return \"userRef\";\n default:\n return undefined;\n }\n}\n"],"mappings":"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","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.10.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.10.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.10.0 */\n\nexport type SupportedVersions = 1 | 2;\nexport type LatestVersion = 2;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -217,5 +217,18 @@ describe("convertSchemaToSteps", () => {
|
|
|
217
217
|
await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);
|
|
218
218
|
});
|
|
219
219
|
});
|
|
220
|
+
it("rejects aliased schemas where exportKey differs from declared name", () => {
|
|
221
|
+
const schema = P.defineMigration({}, () => {
|
|
222
|
+
return {
|
|
223
|
+
FooAlias: P.defineRecord("Foo", {
|
|
224
|
+
docs: "A foo",
|
|
225
|
+
fields: {
|
|
226
|
+
x: P.String
|
|
227
|
+
}
|
|
228
|
+
})
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
expect(() => convertSchemaToSteps(schema)).toThrow(/cannot represent aliases/);
|
|
232
|
+
});
|
|
220
233
|
});
|
|
221
234
|
//# sourceMappingURL=convertSchemaToSteps.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertSchemaToSteps.test.js","names":["P","path","describe","expect","it","convertSchemaToSteps","convertStepsToYamlString","schema","defineMigration","Person","defineRecord","docs","fields","name","String","age","Double","email","Optional","steps","toHaveLength","toHaveProperty","toEqual","Company","Entity","defineUnion","variants","person","company","ObjectNode","x","Container","items","Array","values","Node","Edge","source","target","y","label","TextBox","text","object","textBox","yamlOutput","snapshotPath","join","__dirname","toMatchFileSnapshot","OtherRecord","id","AllFieldTypes","stringField","doubleField","booleanField","Boolean","optionalField","arrayField","unknownField","Unknown","refField"],"sources":["convertSchemaToSteps.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 * as P from \"@palantir/pack.schema\";\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { convertSchemaToSteps, convertStepsToYamlString } from \"../convertSchemaToSteps.js\";\n\ndescribe(\"convertSchemaToSteps\", () => {\n it(\"should convert a simple record schema to YAML steps\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n age: P.Double,\n email: P.Optional(P.String),\n },\n });\n return { Person };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(1);\n expect(steps[0]).toHaveProperty(\"add-records\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]!.Person!.fields).toEqual({\n name: \"string\",\n age: \"double\",\n email: \"optional<string>\",\n });\n });\n\n it(\"should handle union types\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n },\n });\n\n const Company = P.defineRecord(\"Company\", {\n docs: \"A company record\",\n fields: {\n name: P.String,\n },\n });\n\n const Entity = P.defineUnion(\"Entity\", {\n docs: \"Entity union\",\n variants: {\n person: Person,\n company: Company,\n },\n });\n\n return { Person, Company, Entity };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(2);\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Company\");\n expect(steps[1]![\"add-union\"]).toHaveProperty(\"Entity\");\n expect(steps[1]![\"add-union\"]!.Entity).toEqual({\n variants: {\n person: \"Person\",\n company: \"Company\",\n },\n });\n });\n\n it(\"should preserve record names as defined\", () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Object node\",\n fields: {\n x: P.Double,\n },\n });\n return { ObjectNode };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"ObjectNode\");\n });\n\n it(\"should handle array types\", () => {\n const schema = P.defineMigration({}, () => {\n const Container = P.defineRecord(\"Container\", {\n docs: \"Container record\",\n fields: {\n items: P.Array(P.String),\n values: P.Array(P.Double),\n },\n });\n return { Container };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Container!.fields).toEqual({\n items: \"array<string>\",\n values: \"array<double>\",\n });\n });\n\n it(\"should handle record references\", () => {\n const schema = P.defineMigration({}, () => {\n const Node = P.defineRecord(\"Node\", {\n docs: \"Node record\",\n fields: {\n x: P.Double,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Edge record\",\n fields: {\n source: () => Node,\n target: () => Node,\n },\n });\n return { Edge };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Edge!.fields).toEqual({\n source: \"Node\",\n target: \"Node\",\n });\n });\n\n describe(\"YAML output snapshots\", () => {\n it(\"should generate correct YAML for complex schema\", async () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Represents a node in a graph\",\n fields: {\n x: P.Double,\n y: P.Double,\n label: P.Optional(P.String),\n },\n });\n\n const TextBox = P.defineRecord(\"TextBox\", {\n docs: \"Represents a text box\",\n fields: {\n x: P.Double,\n y: P.Double,\n text: P.String,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Represents an edge\",\n fields: {\n source: () => ObjectNode,\n target: () => ObjectNode,\n },\n });\n\n const Node = P.defineUnion(\"Node\", {\n docs: \"Node union\",\n variants: {\n object: ObjectNode,\n textBox: TextBox,\n },\n });\n\n return { ObjectNode, TextBox, Edge, Node };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"complex-schema.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n\n it(\"should generate correct YAML for schema with various field types\", async () => {\n const schema = P.defineMigration({}, () => {\n const OtherRecord = P.defineRecord(\"OtherRecord\", {\n docs: \"Other record\",\n fields: {\n id: P.String,\n },\n });\n\n const AllFieldTypes = P.defineRecord(\"AllFieldTypes\", {\n docs: \"Test all field types\",\n fields: {\n stringField: P.String,\n doubleField: P.Double,\n booleanField: P.Optional(P.Boolean),\n optionalField: P.Optional(P.String),\n arrayField: P.Array(P.Double),\n unknownField: P.Unknown,\n refField: () => OtherRecord,\n },\n });\n\n return { OtherRecord, AllFieldTypes };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"all-field-types.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"convertSchemaToSteps.test.js","names":["P","path","describe","expect","it","convertSchemaToSteps","convertStepsToYamlString","schema","defineMigration","Person","defineRecord","docs","fields","name","String","age","Double","email","Optional","steps","toHaveLength","toHaveProperty","toEqual","Company","Entity","defineUnion","variants","person","company","ObjectNode","x","Container","items","Array","values","Node","Edge","source","target","y","label","TextBox","text","object","textBox","yamlOutput","snapshotPath","join","__dirname","toMatchFileSnapshot","OtherRecord","id","AllFieldTypes","stringField","doubleField","booleanField","Boolean","optionalField","arrayField","unknownField","Unknown","refField","FooAlias","toThrow"],"sources":["convertSchemaToSteps.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 * as P from \"@palantir/pack.schema\";\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { convertSchemaToSteps, convertStepsToYamlString } from \"../convertSchemaToSteps.js\";\n\ndescribe(\"convertSchemaToSteps\", () => {\n it(\"should convert a simple record schema to YAML steps\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n age: P.Double,\n email: P.Optional(P.String),\n },\n });\n return { Person };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(1);\n expect(steps[0]).toHaveProperty(\"add-records\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]!.Person!.fields).toEqual({\n name: \"string\",\n age: \"double\",\n email: \"optional<string>\",\n });\n });\n\n it(\"should handle union types\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n },\n });\n\n const Company = P.defineRecord(\"Company\", {\n docs: \"A company record\",\n fields: {\n name: P.String,\n },\n });\n\n const Entity = P.defineUnion(\"Entity\", {\n docs: \"Entity union\",\n variants: {\n person: Person,\n company: Company,\n },\n });\n\n return { Person, Company, Entity };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(2);\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Company\");\n expect(steps[1]![\"add-union\"]).toHaveProperty(\"Entity\");\n expect(steps[1]![\"add-union\"]!.Entity).toEqual({\n variants: {\n person: \"Person\",\n company: \"Company\",\n },\n });\n });\n\n it(\"should preserve record names as defined\", () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Object node\",\n fields: {\n x: P.Double,\n },\n });\n return { ObjectNode };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"ObjectNode\");\n });\n\n it(\"should handle array types\", () => {\n const schema = P.defineMigration({}, () => {\n const Container = P.defineRecord(\"Container\", {\n docs: \"Container record\",\n fields: {\n items: P.Array(P.String),\n values: P.Array(P.Double),\n },\n });\n return { Container };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Container!.fields).toEqual({\n items: \"array<string>\",\n values: \"array<double>\",\n });\n });\n\n it(\"should handle record references\", () => {\n const schema = P.defineMigration({}, () => {\n const Node = P.defineRecord(\"Node\", {\n docs: \"Node record\",\n fields: {\n x: P.Double,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Edge record\",\n fields: {\n source: () => Node,\n target: () => Node,\n },\n });\n return { Edge };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Edge!.fields).toEqual({\n source: \"Node\",\n target: \"Node\",\n });\n });\n\n describe(\"YAML output snapshots\", () => {\n it(\"should generate correct YAML for complex schema\", async () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Represents a node in a graph\",\n fields: {\n x: P.Double,\n y: P.Double,\n label: P.Optional(P.String),\n },\n });\n\n const TextBox = P.defineRecord(\"TextBox\", {\n docs: \"Represents a text box\",\n fields: {\n x: P.Double,\n y: P.Double,\n text: P.String,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Represents an edge\",\n fields: {\n source: () => ObjectNode,\n target: () => ObjectNode,\n },\n });\n\n const Node = P.defineUnion(\"Node\", {\n docs: \"Node union\",\n variants: {\n object: ObjectNode,\n textBox: TextBox,\n },\n });\n\n return { ObjectNode, TextBox, Edge, Node };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"complex-schema.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n\n it(\"should generate correct YAML for schema with various field types\", async () => {\n const schema = P.defineMigration({}, () => {\n const OtherRecord = P.defineRecord(\"OtherRecord\", {\n docs: \"Other record\",\n fields: {\n id: P.String,\n },\n });\n\n const AllFieldTypes = P.defineRecord(\"AllFieldTypes\", {\n docs: \"Test all field types\",\n fields: {\n stringField: P.String,\n doubleField: P.Double,\n booleanField: P.Optional(P.Boolean),\n optionalField: P.Optional(P.String),\n arrayField: P.Array(P.Double),\n unknownField: P.Unknown,\n refField: () => OtherRecord,\n },\n });\n\n return { OtherRecord, AllFieldTypes };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"all-field-types.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n });\n\n it(\"rejects aliased schemas where exportKey differs from declared name\", () => {\n const schema = P.defineMigration({}, () => {\n return {\n FooAlias: P.defineRecord(\"Foo\", {\n docs: \"A foo\",\n fields: { x: P.String },\n }),\n };\n });\n\n expect(() => convertSchemaToSteps(schema)).toThrow(/cannot represent aliases/);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -107,16 +107,14 @@ export const unionTypesSchema = defineSchema({
|
|
|
107
107
|
})
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
-
/** Schema with nested optionals: tests that optional inside array
|
|
110
|
+
/** Schema with nested optionals: tests that optional inside array structures is preserved */
|
|
111
111
|
export const nestedOptionalsSchema = defineSchema({
|
|
112
112
|
Config: defineRecord("Config", {
|
|
113
113
|
docs: "A config with nested optional fields",
|
|
114
114
|
fields: {
|
|
115
115
|
tags: P.Array(P.Optional(P.String)),
|
|
116
|
-
|
|
117
|
-
label: P.Optional(P.String)
|
|
118
|
-
// Sparse 3D point cloud: pages of rows where each row may omit coordinate triples
|
|
119
|
-
pointCloud: P.Array(P.Array(P.Optional(P.Array(P.Double))))
|
|
116
|
+
scores: P.Array(P.Optional(P.Double)),
|
|
117
|
+
label: P.Optional(P.String)
|
|
120
118
|
}
|
|
121
119
|
})
|
|
122
120
|
});
|
|
@@ -158,6 +156,79 @@ export const twoVersionDerivedFieldsSchema = {
|
|
|
158
156
|
}
|
|
159
157
|
};
|
|
160
158
|
|
|
159
|
+
/** Schema with aliased export key: export key "FooAlias" differs from model name "Foo" */
|
|
160
|
+
export const aliasedEntryNameSchema = defineSchema({
|
|
161
|
+
FooAlias: defineRecord("Foo", {
|
|
162
|
+
docs: "A record exported under an alias",
|
|
163
|
+
fields: {
|
|
164
|
+
name: P.String
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
/** Schema with nested union: Entity union has a variant that points to another union (LivingBeing) */
|
|
170
|
+
const AnimalRecord = defineRecord("Animal", {
|
|
171
|
+
docs: "An animal",
|
|
172
|
+
fields: {
|
|
173
|
+
species: P.String
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
const PlantRecord = defineRecord("Plant", {
|
|
177
|
+
docs: "A plant",
|
|
178
|
+
fields: {
|
|
179
|
+
genus: P.String
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
const LivingBeingUnion = defineUnion("LivingBeing", {
|
|
183
|
+
docs: "A living being",
|
|
184
|
+
variants: {
|
|
185
|
+
animal: AnimalRecord,
|
|
186
|
+
plant: PlantRecord
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
export const nestedUnionSchema = defineSchema({
|
|
190
|
+
Animal: AnimalRecord,
|
|
191
|
+
Plant: PlantRecord,
|
|
192
|
+
LivingBeing: LivingBeingUnion,
|
|
193
|
+
Entity: defineUnion("Entity", {
|
|
194
|
+
docs: "An entity",
|
|
195
|
+
variants: {
|
|
196
|
+
livingBeing: LivingBeingUnion
|
|
197
|
+
}
|
|
198
|
+
})
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Two-version schema where a field starts as Optional(String) in v1 and becomes
|
|
203
|
+
* required (String) in v2. The internal schema must remain optional because
|
|
204
|
+
* documents written under v1 may legitimately omit the field.
|
|
205
|
+
*/
|
|
206
|
+
export const optionalToRequiredFieldSchema = (() => {
|
|
207
|
+
const v1 = defineSchema({
|
|
208
|
+
Item: defineRecord("Item", {
|
|
209
|
+
docs: "An item",
|
|
210
|
+
fields: {
|
|
211
|
+
name: P.String,
|
|
212
|
+
label: P.Optional(P.String)
|
|
213
|
+
}
|
|
214
|
+
})
|
|
215
|
+
});
|
|
216
|
+
return {
|
|
217
|
+
type: "versioned",
|
|
218
|
+
models: {
|
|
219
|
+
Item: defineRecord("Item", {
|
|
220
|
+
docs: "An item",
|
|
221
|
+
fields: {
|
|
222
|
+
name: P.String,
|
|
223
|
+
label: P.String
|
|
224
|
+
}
|
|
225
|
+
})
|
|
226
|
+
},
|
|
227
|
+
version: 2,
|
|
228
|
+
previous: v1
|
|
229
|
+
};
|
|
230
|
+
})();
|
|
231
|
+
|
|
161
232
|
/** Three-version chain: Item (name, color -> name, hexColor -> name, hexColor, tags) */
|
|
162
233
|
export const threeVersionChainSchema = (() => {
|
|
163
234
|
const v1Models = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","names":["defineRecord","defineSchema","defineSchemaUpdate","defineUnion","modelToRef","nextSchema","P","singleVersionModels","ShapeBox","docs","fields","left","Double","right","top","bottom","color","Optional","String","singleVersionSchemaNarrow","singleVersionSchema","twoVersionFieldRemovalSchema","type","models","fillColor","strokeColor","opacity","version","previous","addFillColorUpdate","schema","addField","build","twoVersionAdditiveSchema","addSchemaUpdate","CircleRecord","radius","DocRef","UserRefField","refFieldsSchema","Circle","Drawing","mainShape","extraShapes","Array","background","attachment","owner","RectangleRecord","width","height","unionTypesSchema","Rectangle","Shape","variants","circle","rectangle","nestedOptionalsSchema","Config","tags","matrix","label","pointCloud","twoVersionDerivedFieldsSchema","migrations","derivedFrom","forward","threeVersionChainSchema","v1Models","Item","name","v2Models","hexColor","v3Models"],"sources":["fixtures.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 type { SchemaBuilder, SchemaDefinition } from \"@palantir/pack.schema\";\nimport {\n defineRecord,\n defineSchema,\n defineSchemaUpdate,\n defineUnion,\n modelToRef,\n nextSchema,\n} from \"@palantir/pack.schema\";\nimport * as P from \"@palantir/pack.schema\";\n\n/** Single-version schema: ShapeBox with 5 fields */\nconst singleVersionModels = {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n color: P.Optional(P.String),\n },\n }),\n};\nconst singleVersionSchemaNarrow = defineSchema(singleVersionModels);\nexport const singleVersionSchema: SchemaDefinition = singleVersionSchemaNarrow;\n\n/** Two-version schema with field removal (color removed, fillColor + strokeColor + opacity added) */\nexport const twoVersionFieldRemovalSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n};\n\n/** Two-version schema with additive change only (adds fillColor) */\nconst addFillColorUpdate = defineSchemaUpdate(\n \"addFillColor\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"fillColor\", P.Optional(P.String))\n .build(),\n }),\n);\n\nexport const twoVersionAdditiveSchema: SchemaDefinition = nextSchema(singleVersionSchemaNarrow)\n .addSchemaUpdate(addFillColorUpdate)\n .build();\n\n/** Schema with ref fields: tests import paths for record refs, DocumentRef, UserRef */\nconst CircleRecord = defineRecord(\"Circle\", {\n docs: \"A circle\",\n fields: {\n radius: P.Double,\n },\n});\n\nconst DocRef: P.DocRef = { type: \"docRef\" };\nconst UserRefField: P.UserRef = { type: \"userRef\" };\n\nexport const refFieldsSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Drawing: defineRecord(\"Drawing\", {\n docs: \"A drawing with references\",\n fields: {\n mainShape: CircleRecord,\n extraShapes: P.Array(modelToRef(CircleRecord)),\n background: P.Optional(modelToRef(CircleRecord)),\n attachment: DocRef,\n owner: P.Optional(UserRefField),\n },\n }),\n});\n\n/** Schema with union types: tests union variant interfaces, discriminated union, and type guards */\nconst RectangleRecord = defineRecord(\"Rectangle\", {\n docs: \"A rectangle\",\n fields: {\n width: P.Double,\n height: P.Double,\n },\n});\n\nexport const unionTypesSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Rectangle: RectangleRecord,\n Shape: defineUnion(\"Shape\", {\n docs: \"A shape\",\n variants: {\n circle: CircleRecord,\n rectangle: RectangleRecord,\n },\n }),\n});\n\n/** Schema with nested optionals: tests that optional inside array/nested structures is preserved */\nexport const nestedOptionalsSchema: SchemaDefinition = defineSchema({\n Config: defineRecord(\"Config\", {\n docs: \"A config with nested optional fields\",\n fields: {\n tags: P.Array(P.Optional(P.String)),\n matrix: P.Array(P.Array(P.Optional(P.Double))),\n label: P.Optional(P.String),\n // Sparse 3D point cloud: pages of rows where each row may omit coordinate triples\n pointCloud: P.Array(P.Array(P.Optional(P.Array(P.Double)))),\n },\n }),\n});\n\n/** Two-version schema with derived fields (color split into fillColor + strokeColor) */\nexport const twoVersionDerivedFieldsSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n migrations: {\n ShapeBox: {\n fillColor: {\n derivedFrom: [\"color\"],\n forward: ({ color }: Record<string, unknown>) => color,\n },\n strokeColor: {\n derivedFrom: [\"color\"],\n forward: ({ color }: Record<string, unknown>) => color,\n },\n },\n },\n};\n\n/** Three-version chain: Item (name, color -> name, hexColor -> name, hexColor, tags) */\nexport const threeVersionChainSchema: SchemaDefinition = (() => {\n const v1Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n color: P.Optional(P.String),\n },\n }),\n };\n const v2Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n },\n }),\n };\n const v3Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n tags: P.Optional(P.String),\n },\n }),\n };\n return {\n type: \"versioned\",\n models: v3Models,\n version: 3,\n previous: {\n type: \"versioned\",\n models: v2Models,\n version: 2,\n previous: { type: \"initial\", version: 1, models: v1Models },\n },\n };\n})();\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fixtures.js","names":["defineRecord","defineSchema","defineSchemaUpdate","defineUnion","modelToRef","nextSchema","P","singleVersionModels","ShapeBox","docs","fields","left","Double","right","top","bottom","color","Optional","String","singleVersionSchemaNarrow","singleVersionSchema","twoVersionFieldRemovalSchema","type","models","fillColor","strokeColor","opacity","version","previous","addFillColorUpdate","schema","addField","build","twoVersionAdditiveSchema","addSchemaUpdate","CircleRecord","radius","DocRef","UserRefField","refFieldsSchema","Circle","Drawing","mainShape","extraShapes","Array","background","attachment","owner","RectangleRecord","width","height","unionTypesSchema","Rectangle","Shape","variants","circle","rectangle","nestedOptionalsSchema","Config","tags","scores","label","twoVersionDerivedFieldsSchema","migrations","derivedFrom","forward","aliasedEntryNameSchema","FooAlias","name","AnimalRecord","species","PlantRecord","genus","LivingBeingUnion","animal","plant","nestedUnionSchema","Animal","Plant","LivingBeing","Entity","livingBeing","optionalToRequiredFieldSchema","v1","Item","threeVersionChainSchema","v1Models","v2Models","hexColor","v3Models"],"sources":["fixtures.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 type { SchemaBuilder, SchemaDefinition } from \"@palantir/pack.schema\";\nimport {\n defineRecord,\n defineSchema,\n defineSchemaUpdate,\n defineUnion,\n modelToRef,\n nextSchema,\n} from \"@palantir/pack.schema\";\nimport * as P from \"@palantir/pack.schema\";\n\n/** Single-version schema: ShapeBox with 5 fields */\nconst singleVersionModels = {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n color: P.Optional(P.String),\n },\n }),\n};\nconst singleVersionSchemaNarrow = defineSchema(singleVersionModels);\nexport const singleVersionSchema: SchemaDefinition = singleVersionSchemaNarrow;\n\n/** Two-version schema with field removal (color removed, fillColor + strokeColor + opacity added) */\nexport const twoVersionFieldRemovalSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n};\n\n/** Two-version schema with additive change only (adds fillColor) */\nconst addFillColorUpdate = defineSchemaUpdate(\n \"addFillColor\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"fillColor\", P.Optional(P.String))\n .build(),\n }),\n);\n\nexport const twoVersionAdditiveSchema: SchemaDefinition = nextSchema(singleVersionSchemaNarrow)\n .addSchemaUpdate(addFillColorUpdate)\n .build();\n\n/** Schema with ref fields: tests import paths for record refs, DocumentRef, UserRef */\nconst CircleRecord = defineRecord(\"Circle\", {\n docs: \"A circle\",\n fields: {\n radius: P.Double,\n },\n});\n\nconst DocRef: P.DocRef = { type: \"docRef\" };\nconst UserRefField: P.UserRef = { type: \"userRef\" };\n\nexport const refFieldsSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Drawing: defineRecord(\"Drawing\", {\n docs: \"A drawing with references\",\n fields: {\n mainShape: CircleRecord,\n extraShapes: P.Array(modelToRef(CircleRecord)),\n background: P.Optional(modelToRef(CircleRecord)),\n attachment: DocRef,\n owner: P.Optional(UserRefField),\n },\n }),\n});\n\n/** Schema with union types: tests union variant interfaces, discriminated union, and type guards */\nconst RectangleRecord = defineRecord(\"Rectangle\", {\n docs: \"A rectangle\",\n fields: {\n width: P.Double,\n height: P.Double,\n },\n});\n\nexport const unionTypesSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Rectangle: RectangleRecord,\n Shape: defineUnion(\"Shape\", {\n docs: \"A shape\",\n variants: {\n circle: CircleRecord,\n rectangle: RectangleRecord,\n },\n }),\n});\n\n/** Schema with nested optionals: tests that optional inside array structures is preserved */\nexport const nestedOptionalsSchema: SchemaDefinition = defineSchema({\n Config: defineRecord(\"Config\", {\n docs: \"A config with nested optional fields\",\n fields: {\n tags: P.Array(P.Optional(P.String)),\n scores: P.Array(P.Optional(P.Double)),\n label: P.Optional(P.String),\n },\n }),\n});\n\n/** Two-version schema with derived fields (color split into fillColor + strokeColor) */\nexport const twoVersionDerivedFieldsSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n migrations: {\n ShapeBox: {\n fillColor: {\n derivedFrom: [\"color\"],\n forward: ({ color }: Record<string, unknown>) => color,\n },\n strokeColor: {\n derivedFrom: [\"color\"],\n forward: ({ color }: Record<string, unknown>) => color,\n },\n },\n },\n};\n\n/** Schema with aliased export key: export key \"FooAlias\" differs from model name \"Foo\" */\nexport const aliasedEntryNameSchema: SchemaDefinition = defineSchema({\n FooAlias: defineRecord(\"Foo\", {\n docs: \"A record exported under an alias\",\n fields: {\n name: P.String,\n },\n }),\n});\n\n/** Schema with nested union: Entity union has a variant that points to another union (LivingBeing) */\nconst AnimalRecord = defineRecord(\"Animal\", {\n docs: \"An animal\",\n fields: { species: P.String },\n});\n\nconst PlantRecord = defineRecord(\"Plant\", {\n docs: \"A plant\",\n fields: { genus: P.String },\n});\n\nconst LivingBeingUnion = defineUnion(\"LivingBeing\", {\n docs: \"A living being\",\n variants: {\n animal: AnimalRecord,\n plant: PlantRecord,\n },\n});\n\nexport const nestedUnionSchema: SchemaDefinition = defineSchema({\n Animal: AnimalRecord,\n Plant: PlantRecord,\n LivingBeing: LivingBeingUnion,\n Entity: defineUnion(\"Entity\", {\n docs: \"An entity\",\n variants: {\n livingBeing: LivingBeingUnion,\n },\n }),\n});\n\n/**\n * Two-version schema where a field starts as Optional(String) in v1 and becomes\n * required (String) in v2. The internal schema must remain optional because\n * documents written under v1 may legitimately omit the field.\n */\nexport const optionalToRequiredFieldSchema: SchemaDefinition = (() => {\n const v1 = defineSchema({\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.Optional(P.String),\n },\n }),\n });\n return {\n type: \"versioned\" as const,\n models: {\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.String,\n },\n }),\n },\n version: 2,\n previous: v1,\n };\n})();\n\n/** Three-version chain: Item (name, color -> name, hexColor -> name, hexColor, tags) */\nexport const threeVersionChainSchema: SchemaDefinition = (() => {\n const v1Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n color: P.Optional(P.String),\n },\n }),\n };\n const v2Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n },\n }),\n };\n const v3Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n tags: P.Optional(P.String),\n },\n }),\n };\n return {\n type: \"versioned\",\n models: v3Models,\n version: 3,\n previous: {\n type: \"versioned\",\n models: v2Models,\n version: 2,\n previous: { type: \"initial\", version: 1, models: v1Models },\n },\n };\n})();\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SACEA,YAAY,EACZC,YAAY,EACZC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,UAAU,QACL,uBAAuB;AAC9B,OAAO,KAAKC,CAAC,MAAM,uBAAuB;;AAE1C;AACA,MAAMC,mBAAmB,GAAG;EAC1BC,QAAQ,EAAER,YAAY,CAAC,UAAU,EAAE;IACjCS,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE;MACNC,IAAI,EAAEL,CAAC,CAACM,MAAM;MACdC,KAAK,EAAEP,CAAC,CAACM,MAAM;MACfE,GAAG,EAAER,CAAC,CAACM,MAAM;MACbG,MAAM,EAAET,CAAC,CAACM,MAAM;MAChBI,KAAK,EAAEV,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;IAC5B;EACF,CAAC;AACH,CAAC;AACD,MAAMC,yBAAyB,GAAGlB,YAAY,CAACM,mBAAmB,CAAC;AACnE,OAAO,MAAMa,mBAAqC,GAAGD,yBAAyB;;AAE9E;AACA,OAAO,MAAME,4BAA8C,GAAG;EAC5DC,IAAI,EAAE,WAAW;EACjBC,MAAM,EAAE;IACNf,QAAQ,EAAER,YAAY,CAAC,UAAU,EAAE;MACjCS,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE;QACNC,IAAI,EAAEL,CAAC,CAACM,MAAM;QACdC,KAAK,EAAEP,CAAC,CAACM,MAAM;QACfE,GAAG,EAAER,CAAC,CAACM,MAAM;QACbG,MAAM,EAAET,CAAC,CAACM,MAAM;QAChBY,SAAS,EAAElB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC;QAC/BO,WAAW,EAAEnB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC;QACjCQ,OAAO,EAAEpB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACM,MAAM;MAC9B;IACF,CAAC;EACH,CAAC;EACDe,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAER;AACZ,CAAC;;AAED;AACA,MAAMS,kBAAkB,GAAG3B,kBAAkB,CAC3C,cAAc,EACb4B,MAAiD,KAAM;EACtDtB,QAAQ,EAAEsB,MAAM,CAACtB,QAAQ,CACtBuB,QAAQ,CAAC,WAAW,EAAEzB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC,CAAC,CAC3Cc,KAAK,CAAC;AACX,CAAC,CACH,CAAC;AAED,OAAO,MAAMC,wBAA0C,GAAG5B,UAAU,CAACc,yBAAyB,CAAC,CAC5Fe,eAAe,CAACL,kBAAkB,CAAC,CACnCG,KAAK,CAAC,CAAC;;AAEV;AACA,MAAMG,YAAY,GAAGnC,YAAY,CAAC,QAAQ,EAAE;EAC1CS,IAAI,EAAE,UAAU;EAChBC,MAAM,EAAE;IACN0B,MAAM,EAAE9B,CAAC,CAACM;EACZ;AACF,CAAC,CAAC;AAEF,MAAMyB,MAAgB,GAAG;EAAEf,IAAI,EAAE;AAAS,CAAC;AAC3C,MAAMgB,YAAuB,GAAG;EAAEhB,IAAI,EAAE;AAAU,CAAC;AAEnD,OAAO,MAAMiB,eAAiC,GAAGtC,YAAY,CAAC;EAC5DuC,MAAM,EAAEL,YAAY;EACpBM,OAAO,EAAEzC,YAAY,CAAC,SAAS,EAAE;IAC/BS,IAAI,EAAE,2BAA2B;IACjCC,MAAM,EAAE;MACNgC,SAAS,EAAEP,YAAY;MACvBQ,WAAW,EAAErC,CAAC,CAACsC,KAAK,CAACxC,UAAU,CAAC+B,YAAY,CAAC,CAAC;MAC9CU,UAAU,EAAEvC,CAAC,CAACW,QAAQ,CAACb,UAAU,CAAC+B,YAAY,CAAC,CAAC;MAChDW,UAAU,EAAET,MAAM;MAClBU,KAAK,EAAEzC,CAAC,CAACW,QAAQ,CAACqB,YAAY;IAChC;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,MAAMU,eAAe,GAAGhD,YAAY,CAAC,WAAW,EAAE;EAChDS,IAAI,EAAE,aAAa;EACnBC,MAAM,EAAE;IACNuC,KAAK,EAAE3C,CAAC,CAACM,MAAM;IACfsC,MAAM,EAAE5C,CAAC,CAACM;EACZ;AACF,CAAC,CAAC;AAEF,OAAO,MAAMuC,gBAAkC,GAAGlD,YAAY,CAAC;EAC7DuC,MAAM,EAAEL,YAAY;EACpBiB,SAAS,EAAEJ,eAAe;EAC1BK,KAAK,EAAElD,WAAW,CAAC,OAAO,EAAE;IAC1BM,IAAI,EAAE,SAAS;IACf6C,QAAQ,EAAE;MACRC,MAAM,EAAEpB,YAAY;MACpBqB,SAAS,EAAER;IACb;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,OAAO,MAAMS,qBAAuC,GAAGxD,YAAY,CAAC;EAClEyD,MAAM,EAAE1D,YAAY,CAAC,QAAQ,EAAE;IAC7BS,IAAI,EAAE,sCAAsC;IAC5CC,MAAM,EAAE;MACNiD,IAAI,EAAErD,CAAC,CAACsC,KAAK,CAACtC,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC,CAAC;MACnC0C,MAAM,EAAEtD,CAAC,CAACsC,KAAK,CAACtC,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACM,MAAM,CAAC,CAAC;MACrCiD,KAAK,EAAEvD,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;IAC5B;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,OAAO,MAAM4C,6BAA+C,GAAG;EAC7DxC,IAAI,EAAE,WAAW;EACjBC,MAAM,EAAE;IACNf,QAAQ,EAAER,YAAY,CAAC,UAAU,EAAE;MACjCS,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE;QACNC,IAAI,EAAEL,CAAC,CAACM,MAAM;QACdC,KAAK,EAAEP,CAAC,CAACM,MAAM;QACfE,GAAG,EAAER,CAAC,CAACM,MAAM;QACbG,MAAM,EAAET,CAAC,CAACM,MAAM;QAChBY,SAAS,EAAElB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC;QAC/BO,WAAW,EAAEnB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC;QACjCQ,OAAO,EAAEpB,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACM,MAAM;MAC9B;IACF,CAAC;EACH,CAAC;EACDe,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAER,mBAAmB;EAC7B2C,UAAU,EAAE;IACVvD,QAAQ,EAAE;MACRgB,SAAS,EAAE;QACTwC,WAAW,EAAE,CAAC,OAAO,CAAC;QACtBC,OAAO,EAAEA,CAAC;UAAEjD;QAA+B,CAAC,KAAKA;MACnD,CAAC;MACDS,WAAW,EAAE;QACXuC,WAAW,EAAE,CAAC,OAAO,CAAC;QACtBC,OAAO,EAAEA,CAAC;UAAEjD;QAA+B,CAAC,KAAKA;MACnD;IACF;EACF;AACF,CAAC;;AAED;AACA,OAAO,MAAMkD,sBAAwC,GAAGjE,YAAY,CAAC;EACnEkE,QAAQ,EAAEnE,YAAY,CAAC,KAAK,EAAE;IAC5BS,IAAI,EAAE,kCAAkC;IACxCC,MAAM,EAAE;MACN0D,IAAI,EAAE9D,CAAC,CAACY;IACV;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,MAAMmD,YAAY,GAAGrE,YAAY,CAAC,QAAQ,EAAE;EAC1CS,IAAI,EAAE,WAAW;EACjBC,MAAM,EAAE;IAAE4D,OAAO,EAAEhE,CAAC,CAACY;EAAO;AAC9B,CAAC,CAAC;AAEF,MAAMqD,WAAW,GAAGvE,YAAY,CAAC,OAAO,EAAE;EACxCS,IAAI,EAAE,SAAS;EACfC,MAAM,EAAE;IAAE8D,KAAK,EAAElE,CAAC,CAACY;EAAO;AAC5B,CAAC,CAAC;AAEF,MAAMuD,gBAAgB,GAAGtE,WAAW,CAAC,aAAa,EAAE;EAClDM,IAAI,EAAE,gBAAgB;EACtB6C,QAAQ,EAAE;IACRoB,MAAM,EAAEL,YAAY;IACpBM,KAAK,EAAEJ;EACT;AACF,CAAC,CAAC;AAEF,OAAO,MAAMK,iBAAmC,GAAG3E,YAAY,CAAC;EAC9D4E,MAAM,EAAER,YAAY;EACpBS,KAAK,EAAEP,WAAW;EAClBQ,WAAW,EAAEN,gBAAgB;EAC7BO,MAAM,EAAE7E,WAAW,CAAC,QAAQ,EAAE;IAC5BM,IAAI,EAAE,WAAW;IACjB6C,QAAQ,EAAE;MACR2B,WAAW,EAAER;IACf;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,6BAA+C,GAAG,CAAC,MAAM;EACpE,MAAMC,EAAE,GAAGlF,YAAY,CAAC;IACtBmF,IAAI,EAAEpF,YAAY,CAAC,MAAM,EAAE;MACzBS,IAAI,EAAE,SAAS;MACfC,MAAM,EAAE;QACN0D,IAAI,EAAE9D,CAAC,CAACY,MAAM;QACd2C,KAAK,EAAEvD,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;MAC5B;IACF,CAAC;EACH,CAAC,CAAC;EACF,OAAO;IACLI,IAAI,EAAE,WAAoB;IAC1BC,MAAM,EAAE;MACN6D,IAAI,EAAEpF,YAAY,CAAC,MAAM,EAAE;QACzBS,IAAI,EAAE,SAAS;QACfC,MAAM,EAAE;UACN0D,IAAI,EAAE9D,CAAC,CAACY,MAAM;UACd2C,KAAK,EAAEvD,CAAC,CAACY;QACX;MACF,CAAC;IACH,CAAC;IACDS,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAEuD;EACZ,CAAC;AACH,CAAC,EAAE,CAAC;;AAEJ;AACA,OAAO,MAAME,uBAAyC,GAAG,CAAC,MAAM;EAC9D,MAAMC,QAAQ,GAAG;IACfF,IAAI,EAAEpF,YAAY,CAAC,MAAM,EAAE;MACzBS,IAAI,EAAE,EAAE;MACRC,MAAM,EAAE;QACN0D,IAAI,EAAE9D,CAAC,CAACY,MAAM;QACdF,KAAK,EAAEV,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;MAC5B;IACF,CAAC;EACH,CAAC;EACD,MAAMqE,QAAQ,GAAG;IACfH,IAAI,EAAEpF,YAAY,CAAC,MAAM,EAAE;MACzBS,IAAI,EAAE,EAAE;MACRC,MAAM,EAAE;QACN0D,IAAI,EAAE9D,CAAC,CAACY,MAAM;QACdsE,QAAQ,EAAElF,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;MAC/B;IACF,CAAC;EACH,CAAC;EACD,MAAMuE,QAAQ,GAAG;IACfL,IAAI,EAAEpF,YAAY,CAAC,MAAM,EAAE;MACzBS,IAAI,EAAE,EAAE;MACRC,MAAM,EAAE;QACN0D,IAAI,EAAE9D,CAAC,CAACY,MAAM;QACdsE,QAAQ,EAAElF,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM,CAAC;QAC9ByC,IAAI,EAAErD,CAAC,CAACW,QAAQ,CAACX,CAAC,CAACY,MAAM;MAC3B;IACF,CAAC;EACH,CAAC;EACD,OAAO;IACLI,IAAI,EAAE,WAAW;IACjBC,MAAM,EAAEkE,QAAQ;IAChB9D,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE;MACRN,IAAI,EAAE,WAAW;MACjBC,MAAM,EAAEgE,QAAQ;MAChB5D,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE;QAAEN,IAAI,EAAE,SAAS;QAAEK,OAAO,EAAE,CAAC;QAAEJ,MAAM,EAAE+D;MAAS;IAC5D;EACF,CAAC;AACH,CAAC,EAAE,CAAC","ignoreList":[]}
|
|
@@ -16,26 +16,38 @@
|
|
|
16
16
|
|
|
17
17
|
import path from "path";
|
|
18
18
|
import { describe, expect, it } from "vitest";
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { generateInternalFromChain } from "../generateInternalFromSchema.js";
|
|
20
|
+
import { resolveSchemaChain } from "../resolveSchemaChain.js";
|
|
21
|
+
import { nestedOptionalsSchema, nestedUnionSchema, optionalToRequiredFieldSchema, singleVersionSchema, twoVersionDerivedFieldsSchema, twoVersionFieldRemovalSchema } from "./fixtures.js";
|
|
21
22
|
import { formatInternalTypesSnapshot } from "./snapshotUtils.js";
|
|
22
|
-
describe("
|
|
23
|
+
describe("generateInternalFromChain", () => {
|
|
23
24
|
const snapshotDir = path.join(__dirname, "__snapshots__", "generateInternalFromSchema");
|
|
24
25
|
it("single-version schema", async () => {
|
|
25
|
-
const result =
|
|
26
|
+
const result = generateInternalFromChain(resolveSchemaChain(singleVersionSchema));
|
|
26
27
|
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "single-version.snap"));
|
|
27
28
|
});
|
|
28
29
|
it("nested optionals inside arrays", async () => {
|
|
29
|
-
const result =
|
|
30
|
+
const result = generateInternalFromChain(resolveSchemaChain(nestedOptionalsSchema));
|
|
30
31
|
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "nested-optionals.snap"));
|
|
31
32
|
});
|
|
32
33
|
it("two-version field removal", async () => {
|
|
33
|
-
const result =
|
|
34
|
+
const result = generateInternalFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema));
|
|
34
35
|
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-field-removal.snap"));
|
|
35
36
|
});
|
|
36
37
|
it("two-version derived fields", async () => {
|
|
37
|
-
const result =
|
|
38
|
+
const result = generateInternalFromChain(resolveSchemaChain(twoVersionDerivedFieldsSchema));
|
|
38
39
|
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-derived-fields.snap"));
|
|
39
40
|
});
|
|
41
|
+
it("nested union schema generates upgrade registries for all variant targets", async () => {
|
|
42
|
+
const result = generateInternalFromChain(resolveSchemaChain(nestedUnionSchema));
|
|
43
|
+
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "nested-union.snap"));
|
|
44
|
+
});
|
|
45
|
+
it("field optional in v1 and required in v2 stays optional in internal schema", async () => {
|
|
46
|
+
const result = generateInternalFromChain(resolveSchemaChain(optionalToRequiredFieldSchema));
|
|
47
|
+
// "label" is Optional(String) in v1 but String in v2.
|
|
48
|
+
// The internal Zod schema must keep it optional because v1 documents
|
|
49
|
+
// may legitimately omit the field.
|
|
50
|
+
await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-optional-fields.snap"));
|
|
51
|
+
});
|
|
40
52
|
});
|
|
41
53
|
//# sourceMappingURL=generateInternalFromSchema.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateInternalFromSchema.test.js","names":["path","describe","expect","it","
|
|
1
|
+
{"version":3,"file":"generateInternalFromSchema.test.js","names":["path","describe","expect","it","generateInternalFromChain","resolveSchemaChain","nestedOptionalsSchema","nestedUnionSchema","optionalToRequiredFieldSchema","singleVersionSchema","twoVersionDerivedFieldsSchema","twoVersionFieldRemovalSchema","formatInternalTypesSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot"],"sources":["generateInternalFromSchema.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 { generateInternalFromChain } from \"../generateInternalFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n nestedOptionalsSchema,\n nestedUnionSchema,\n optionalToRequiredFieldSchema,\n singleVersionSchema,\n twoVersionDerivedFieldsSchema,\n twoVersionFieldRemovalSchema,\n} from \"./fixtures.js\";\nimport { formatInternalTypesSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateInternalFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateInternalFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"nested optionals inside arrays\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(nestedOptionalsSchema));\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"nested-optionals.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema));\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"two-version derived fields\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(twoVersionDerivedFieldsSchema));\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-derived-fields.snap\"),\n );\n });\n\n it(\"nested union schema generates upgrade registries for all variant targets\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(nestedUnionSchema));\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"nested-union.snap\"),\n );\n });\n\n it(\"field optional in v1 and required in v2 stays optional in internal schema\", async () => {\n const result = generateInternalFromChain(resolveSchemaChain(optionalToRequiredFieldSchema));\n // \"label\" is Optional(String) in v1 but String in v2.\n // The internal Zod schema must keep it optional because v1 documents\n // may legitimately omit the field.\n await expect(await formatInternalTypesSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-optional-fields.snap\"),\n );\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,yBAAyB,QAAQ,kCAAkC;AAC5E,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SACEC,qBAAqB,EACrBC,iBAAiB,EACjBC,6BAA6B,EAC7BC,mBAAmB,EACnBC,6BAA6B,EAC7BC,4BAA4B,QACvB,eAAe;AACtB,SAASC,2BAA2B,QAAQ,oBAAoB;AAEhEX,QAAQ,CAAC,2BAA2B,EAAE,MAAM;EAC1C,MAAMY,WAAW,GAAGb,IAAI,CAACc,IAAI,CAACC,SAAS,EAAE,eAAe,EAAE,4BAA4B,CAAC;EAEvFZ,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACI,mBAAmB,CAAC,CAAC;IACjF,MAAMP,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,qBAAqB,CAC9C,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,gCAAgC,EAAE,YAAY;IAC/C,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACC,qBAAqB,CAAC,CAAC;IACnF,MAAMJ,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,uBAAuB,CAChD,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACM,4BAA4B,CAAC,CAAC;IAC1F,MAAMT,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,gCAAgC,CACzD,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,4BAA4B,EAAE,YAAY;IAC3C,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACK,6BAA6B,CAAC,CAAC;IAC3F,MAAMR,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,iCAAiC,CAC1D,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,0EAA0E,EAAE,YAAY;IACzF,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACE,iBAAiB,CAAC,CAAC;IAC/E,MAAML,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,mBAAmB,CAC5C,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F,MAAMa,MAAM,GAAGZ,yBAAyB,CAACC,kBAAkB,CAACG,6BAA6B,CAAC,CAAC;IAC3F;IACA;IACA;IACA,MAAMN,MAAM,CAAC,MAAMU,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEjB,IAAI,CAACc,IAAI,CAACD,WAAW,EAAE,kCAAkC,CAC3D,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -16,25 +16,26 @@
|
|
|
16
16
|
|
|
17
17
|
import path from "path";
|
|
18
18
|
import { describe, expect, it } from "vitest";
|
|
19
|
-
import {
|
|
19
|
+
import { generateModelMetadataFromChain } from "../generateModelMetadataFromSchema.js";
|
|
20
|
+
import { resolveSchemaChain } from "../resolveSchemaChain.js";
|
|
20
21
|
import { singleVersionSchema, threeVersionChainSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from "./fixtures.js";
|
|
21
22
|
import { formatModelMetadataSnapshot } from "./snapshotUtils.js";
|
|
22
|
-
describe("
|
|
23
|
+
describe("generateModelMetadataFromChain", () => {
|
|
23
24
|
const snapshotDir = path.join(__dirname, "__snapshots__", "generateModelMetadataFromSchema");
|
|
24
25
|
it("single-version schema", async () => {
|
|
25
|
-
const result =
|
|
26
|
+
const result = generateModelMetadataFromChain(resolveSchemaChain(singleVersionSchema));
|
|
26
27
|
await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "single-version.snap"));
|
|
27
28
|
});
|
|
28
29
|
it("two-version field removal", async () => {
|
|
29
|
-
const result =
|
|
30
|
+
const result = generateModelMetadataFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema, 1), 1);
|
|
30
31
|
await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-field-removal.snap"));
|
|
31
32
|
});
|
|
32
33
|
it("three-version chain", async () => {
|
|
33
|
-
const result =
|
|
34
|
+
const result = generateModelMetadataFromChain(resolveSchemaChain(threeVersionChainSchema, 1), 1);
|
|
34
35
|
await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "three-version-chain.snap"));
|
|
35
36
|
});
|
|
36
37
|
it("union types schema", async () => {
|
|
37
|
-
const result =
|
|
38
|
+
const result = generateModelMetadataFromChain(resolveSchemaChain(unionTypesSchema));
|
|
38
39
|
await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "union-types.snap"));
|
|
39
40
|
});
|
|
40
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateModelMetadataFromSchema.test.js","names":["path","describe","expect","it","
|
|
1
|
+
{"version":3,"file":"generateModelMetadataFromSchema.test.js","names":["path","describe","expect","it","generateModelMetadataFromChain","resolveSchemaChain","singleVersionSchema","threeVersionChainSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatModelMetadataSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot"],"sources":["generateModelMetadataFromSchema.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 { generateModelMetadataFromChain } from \"../generateModelMetadataFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n singleVersionSchema,\n threeVersionChainSchema,\n twoVersionFieldRemovalSchema,\n unionTypesSchema,\n} from \"./fixtures.js\";\nimport { formatModelMetadataSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateModelMetadataFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateModelMetadataFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(twoVersionFieldRemovalSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"three-version chain\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(threeVersionChainSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"three-version-chain.snap\"),\n );\n });\n\n it(\"union types schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,8BAA8B,QAAQ,uCAAuC;AACtF,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,4BAA4B,EAC5BC,gBAAgB,QACX,eAAe;AACtB,SAASC,2BAA2B,QAAQ,oBAAoB;AAEhET,QAAQ,CAAC,gCAAgC,EAAE,MAAM;EAC/C,MAAMU,WAAW,GAAGX,IAAI,CAACY,IAAI,CAACC,SAAS,EAAE,eAAe,EAAE,iCAAiC,CAAC;EAE5FV,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMW,MAAM,GAAGV,8BAA8B,CAACC,kBAAkB,CAACC,mBAAmB,CAAC,CAAC;IACtF,MAAMJ,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,qBAAqB,CAC9C,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMW,MAAM,GAAGV,8BAA8B,CAC3CC,kBAAkB,CAACG,4BAA4B,EAAE,CAAC,CAAC,EACnD,CACF,CAAC;IACD,MAAMN,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,gCAAgC,CACzD,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,qBAAqB,EAAE,YAAY;IACpC,MAAMW,MAAM,GAAGV,8BAA8B,CAC3CC,kBAAkB,CAACE,uBAAuB,EAAE,CAAC,CAAC,EAC9C,CACF,CAAC;IACD,MAAML,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,0BAA0B,CACnD,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,oBAAoB,EAAE,YAAY;IACnC,MAAMW,MAAM,GAAGV,8BAA8B,CAACC,kBAAkB,CAACI,gBAAgB,CAAC,CAAC;IACnF,MAAMP,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,kBAAkB,CAC3C,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -16,21 +16,22 @@
|
|
|
16
16
|
|
|
17
17
|
import path from "path";
|
|
18
18
|
import { describe, expect, it } from "vitest";
|
|
19
|
-
import {
|
|
19
|
+
import { generateScopeFromChain } from "../generateScopeFromSchema.js";
|
|
20
|
+
import { resolveSchemaChain } from "../resolveSchemaChain.js";
|
|
20
21
|
import { singleVersionSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from "./fixtures.js";
|
|
21
22
|
import { formatSingleSnapshot } from "./snapshotUtils.js";
|
|
22
|
-
describe("
|
|
23
|
+
describe("generateScopeFromChain", () => {
|
|
23
24
|
const snapshotDir = path.join(__dirname, "__snapshots__", "generateScopeFromSchema");
|
|
24
25
|
it("single-version schema", async () => {
|
|
25
|
-
const result =
|
|
26
|
+
const result = generateScopeFromChain(resolveSchemaChain(singleVersionSchema));
|
|
26
27
|
await expect(await formatSingleSnapshot("versionedDocRef.ts", result)).toMatchFileSnapshot(path.join(snapshotDir, "single-version.snap"));
|
|
27
28
|
});
|
|
28
29
|
it("two-version field removal", async () => {
|
|
29
|
-
const result =
|
|
30
|
+
const result = generateScopeFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema, 1), 1);
|
|
30
31
|
await expect(await formatSingleSnapshot("versionedDocRef.ts", result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-field-removal.snap"));
|
|
31
32
|
});
|
|
32
33
|
it("union types schema", async () => {
|
|
33
|
-
const result =
|
|
34
|
+
const result = generateScopeFromChain(resolveSchemaChain(unionTypesSchema));
|
|
34
35
|
await expect(await formatSingleSnapshot("versionedDocRef.ts", result)).toMatchFileSnapshot(path.join(snapshotDir, "union-types.snap"));
|
|
35
36
|
});
|
|
36
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateScopeFromSchema.test.js","names":["path","describe","expect","it","
|
|
1
|
+
{"version":3,"file":"generateScopeFromSchema.test.js","names":["path","describe","expect","it","generateScopeFromChain","resolveSchemaChain","singleVersionSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatSingleSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot"],"sources":["generateScopeFromSchema.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 { generateScopeFromChain } from \"../generateScopeFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport { singleVersionSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from \"./fixtures.js\";\nimport { formatSingleSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateScopeFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateScopeFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateScopeFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatSingleSnapshot(\"versionedDocRef.ts\", result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateScopeFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema, 1), 1);\n await expect(await formatSingleSnapshot(\"versionedDocRef.ts\", result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"union types schema\", async () => {\n const result = generateScopeFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatSingleSnapshot(\"versionedDocRef.ts\", result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,sBAAsB,QAAQ,+BAA+B;AACtE,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,mBAAmB,EAAEC,4BAA4B,EAAEC,gBAAgB,QAAQ,eAAe;AACnG,SAASC,oBAAoB,QAAQ,oBAAoB;AAEzDR,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvC,MAAMS,WAAW,GAAGV,IAAI,CAACW,IAAI,CAACC,SAAS,EAAE,eAAe,EAAE,yBAAyB,CAAC;EAEpFT,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMU,MAAM,GAAGT,sBAAsB,CAACC,kBAAkB,CAACC,mBAAmB,CAAC,CAAC;IAC9E,MAAMJ,MAAM,CAAC,MAAMO,oBAAoB,CAAC,oBAAoB,EAAEI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACxFd,IAAI,CAACW,IAAI,CAACD,WAAW,EAAE,qBAAqB,CAC9C,CAAC;EACH,CAAC,CAAC;EAEFP,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMU,MAAM,GAAGT,sBAAsB,CAACC,kBAAkB,CAACE,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7F,MAAML,MAAM,CAAC,MAAMO,oBAAoB,CAAC,oBAAoB,EAAEI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACxFd,IAAI,CAACW,IAAI,CAACD,WAAW,EAAE,gCAAgC,CACzD,CAAC;EACH,CAAC,CAAC;EAEFP,EAAE,CAAC,oBAAoB,EAAE,YAAY;IACnC,MAAMU,MAAM,GAAGT,sBAAsB,CAACC,kBAAkB,CAACG,gBAAgB,CAAC,CAAC;IAC3E,MAAMN,MAAM,CAAC,MAAMO,oBAAoB,CAAC,oBAAoB,EAAEI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACxFd,IAAI,CAACW,IAAI,CAACD,WAAW,EAAE,kBAAkB,CAC3C,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -16,37 +16,46 @@
|
|
|
16
16
|
|
|
17
17
|
import path from "path";
|
|
18
18
|
import { describe, expect, it } from "vitest";
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { generateVersionedTypesFromChain } from "../generateVersionedTypesFromSchema.js";
|
|
20
|
+
import { resolveSchemaChain } from "../resolveSchemaChain.js";
|
|
21
|
+
import { aliasedEntryNameSchema, nestedUnionSchema, refFieldsSchema, singleVersionSchema, threeVersionChainSchema, twoVersionAdditiveSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from "./fixtures.js";
|
|
21
22
|
import { formatVersionedTypesSnapshot } from "./snapshotUtils.js";
|
|
22
|
-
describe("
|
|
23
|
+
describe("generateVersionedTypesFromChain", () => {
|
|
23
24
|
const snapshotDir = path.join(__dirname, "__snapshots__", "generateVersionedTypesFromSchema");
|
|
24
25
|
it("single-version schema", async () => {
|
|
25
|
-
const result =
|
|
26
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(singleVersionSchema));
|
|
26
27
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "single-version.snap"));
|
|
27
28
|
});
|
|
28
29
|
it("two-version additive change", async () => {
|
|
29
|
-
const result =
|
|
30
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(twoVersionAdditiveSchema, 1), 1);
|
|
30
31
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-additive.snap"));
|
|
31
32
|
});
|
|
32
33
|
it("two-version field removal", async () => {
|
|
33
|
-
const result =
|
|
34
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(twoVersionFieldRemovalSchema, 1), 1);
|
|
34
35
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-field-removal.snap"));
|
|
35
36
|
});
|
|
36
37
|
it("three-version chain", async () => {
|
|
37
|
-
const result =
|
|
38
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(threeVersionChainSchema, 1), 1);
|
|
38
39
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "three-version-chain.snap"));
|
|
39
40
|
});
|
|
40
41
|
it("schema with ref fields", async () => {
|
|
41
|
-
const result =
|
|
42
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(refFieldsSchema));
|
|
42
43
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "ref-fields.snap"));
|
|
43
44
|
});
|
|
44
45
|
it("schema with union types", async () => {
|
|
45
|
-
const result =
|
|
46
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(unionTypesSchema));
|
|
46
47
|
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "union-types.snap"));
|
|
47
48
|
});
|
|
49
|
+
it("preserves aliased export name when export key differs from model name", async () => {
|
|
50
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(aliasedEntryNameSchema));
|
|
51
|
+
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "alias-types.snap"));
|
|
52
|
+
});
|
|
53
|
+
it("includes value field for union variants that reference another union", async () => {
|
|
54
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(nestedUnionSchema));
|
|
55
|
+
await expect(await formatVersionedTypesSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "union-reference-union.snap"));
|
|
56
|
+
});
|
|
48
57
|
it("respects minSupportedVersion default (latest only)", () => {
|
|
49
|
-
const result =
|
|
58
|
+
const result = generateVersionedTypesFromChain(resolveSchemaChain(twoVersionAdditiveSchema));
|
|
50
59
|
expect(result.readTypes.size).toBe(1);
|
|
51
60
|
expect(result.readTypes.has(2)).toBe(true);
|
|
52
61
|
expect(result.readTypes.has(1)).toBe(false);
|