@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.
Files changed (148) hide show
  1. package/build/esm/commands/asset/__tests__/buildPrefixRewriteFetch.test.js +85 -0
  2. package/build/esm/commands/asset/__tests__/buildPrefixRewriteFetch.test.js.map +1 -0
  3. package/build/esm/commands/asset/assetDeployHandler.js +36 -1
  4. package/build/esm/commands/asset/assetDeployHandler.js.map +1 -1
  5. package/build/esm/commands/asset/registerAssetCommands.js +1 -1
  6. package/build/esm/commands/asset/registerAssetCommands.js.map +1 -1
  7. package/build/esm/commands/ir/irGenTypesHandler.js +49 -0
  8. package/build/esm/commands/ir/irGenTypesHandler.js.map +1 -0
  9. package/build/esm/commands/ir/registerIrCommands.js +2 -0
  10. package/build/esm/commands/ir/registerIrCommands.js.map +1 -1
  11. package/build/esm/commands/schema/registerSchemaCommands.js +2 -2
  12. package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
  13. package/build/esm/commands/schema/schemaIrHandler.js +56 -0
  14. package/build/esm/commands/schema/schemaIrHandler.js.map +1 -0
  15. package/build/esm/index.js +0 -6
  16. package/build/esm/index.js.map +1 -1
  17. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
  18. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
  19. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
  20. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
  21. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
  22. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
  23. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
  24. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
  25. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
  26. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
  27. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
  28. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
  29. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
  30. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
  31. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
  32. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
  33. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
  34. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
  35. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
  36. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
  37. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
  38. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
  39. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js +23 -0
  40. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -1
  41. package/build/esm/utils/ir/irFieldHelpers.js +383 -0
  42. package/build/esm/utils/ir/irFieldHelpers.js.map +1 -0
  43. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -1
  44. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -1
  45. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -1
  46. package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js +13 -0
  47. package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js.map +1 -1
  48. package/build/esm/utils/schema/__tests__/fixtures.js +76 -5
  49. package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -1
  50. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +19 -7
  51. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -1
  52. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +7 -6
  53. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -1
  54. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +6 -5
  55. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -1
  56. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +19 -10
  57. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -1
  58. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +15 -10
  59. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -1
  60. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +6 -5
  61. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -1
  62. package/build/esm/utils/schema/convertSchemaToSteps.js +6 -0
  63. package/build/esm/utils/schema/convertSchemaToSteps.js.map +1 -1
  64. package/build/esm/utils/schema/generateIndexFromSchema.js +15 -13
  65. package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -1
  66. package/build/esm/utils/schema/generateInternalFromSchema.js +68 -184
  67. package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -1
  68. package/build/esm/utils/schema/generateModelMetadataFromSchema.js +46 -69
  69. package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -1
  70. package/build/esm/utils/schema/generateScopeFromSchema.js +29 -33
  71. package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -1
  72. package/build/esm/utils/schema/generateTypesFromSchema.js +9 -1
  73. package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
  74. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +61 -155
  75. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -1
  76. package/build/esm/utils/schema/generateVersionedZodFromSchema.js +58 -94
  77. package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -1
  78. package/build/esm/utils/schema/generateVersionsFromSchema.js +7 -5
  79. package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -1
  80. package/build/esm/utils/schema/loadSchemaModule.js +53 -0
  81. package/build/esm/utils/schema/loadSchemaModule.js.map +1 -0
  82. package/build/esm/utils/schema/resolveSchemaChain.js +59 -9
  83. package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -1
  84. package/build/esm/utils/schema/runtimeSchema.js +0 -27
  85. package/build/esm/utils/schema/runtimeSchema.js.map +1 -1
  86. package/build/esm/utils/schema/writeAllSdkFiles.js +111 -0
  87. package/build/esm/utils/schema/writeAllSdkFiles.js.map +1 -0
  88. package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
  89. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
  90. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
  91. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
  92. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
  93. package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
  94. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
  95. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
  96. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
  97. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js +93 -1
  98. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
  99. package/build/esm/utils/steps/convertStepsToIr.js +43 -35
  100. package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
  101. package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts +2 -0
  102. package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts.map +1 -0
  103. package/build/types/commands/asset/assetDeployHandler.d.ts +15 -0
  104. package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -1
  105. package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -1
  106. package/build/types/commands/ir/irGenTypesHandler.d.ts +8 -0
  107. package/build/types/commands/ir/irGenTypesHandler.d.ts.map +1 -0
  108. package/build/types/commands/ir/registerIrCommands.d.ts.map +1 -1
  109. package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
  110. package/build/types/commands/schema/schemaIrHandler.d.ts +19 -0
  111. package/build/types/commands/schema/schemaIrHandler.d.ts.map +1 -0
  112. package/build/types/index.d.ts +1 -6
  113. package/build/types/index.d.ts.map +1 -1
  114. package/build/types/utils/ir/irFieldHelpers.d.ts +36 -0
  115. package/build/types/utils/ir/irFieldHelpers.d.ts.map +1 -0
  116. package/build/types/utils/schema/__tests__/fixtures.d.ts +10 -1
  117. package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -1
  118. package/build/types/utils/schema/convertSchemaToSteps.d.ts.map +1 -1
  119. package/build/types/utils/schema/generateIndexFromSchema.d.ts +2 -2
  120. package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -1
  121. package/build/types/utils/schema/generateInternalFromSchema.d.ts +3 -6
  122. package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -1
  123. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +3 -8
  124. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -1
  125. package/build/types/utils/schema/generateScopeFromSchema.d.ts +2 -2
  126. package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -1
  127. package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
  128. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +4 -7
  129. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -1
  130. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +3 -7
  131. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -1
  132. package/build/types/utils/schema/generateVersionsFromSchema.d.ts +3 -3
  133. package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -1
  134. package/build/types/utils/schema/loadSchemaModule.d.ts +14 -0
  135. package/build/types/utils/schema/loadSchemaModule.d.ts.map +1 -0
  136. package/build/types/utils/schema/resolveSchemaChain.d.ts +29 -8
  137. package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -1
  138. package/build/types/utils/schema/runtimeSchema.d.ts +0 -32
  139. package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -1
  140. package/build/types/utils/schema/writeAllSdkFiles.d.ts +8 -0
  141. package/build/types/utils/schema/writeAllSdkFiles.d.ts.map +1 -0
  142. package/build/types/utils/steps/convertStepsToIr.d.ts +3 -3
  143. package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
  144. package/package.json +3 -3
  145. package/build/esm/commands/schema/schemaGenTypesHandler.js +0 -147
  146. package/build/esm/commands/schema/schemaGenTypesHandler.js.map +0 -1
  147. package/build/types/commands/schema/schemaGenTypesHandler.d.ts +0 -8
  148. package/build/types/commands/schema/schemaGenTypesHandler.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"generateVersionedZodFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","resolveSchemaChain","findRecordExportName","isRecordSchema","isUnionSchema","schemaName","TypeKind","typesFilePath","versionedSchemaName","versionedTypeName","convertFieldTypeToZodSchema","fieldType","schema","version","type","ANY","ARRAY","items","Error","BOOLEAN","DOC_REF","DOUBLE","MEDIA_REF","OBJECT_REF","OPTIONAL","item","REF","name","exportName","refType","refSchemaName","refTypeName","STRING","USER_REF","generateZodSchemasForVersion","output","typeNames","Object","entries","push","variantName","keys","variants","length","sort","join","zodSchemaName","typeName","fieldLines","fieldName","fields","zodType","discriminantField","discriminant","variantSchemaNames","variantType","formattedVariant","variantZodSchemaName","variantTypeName","recordExport","recordZodSchemaName","unionZodSchemaName","generateSchemaReExport","reExports","versioned","versionedVariant","generateVersionedZodFromSchema","minSupportedVersion","chain","minVersion","zodSchemas","Map","versionSchema","set","schemaReExport"],"sources":["generateVersionedZodFromSchema.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 { SchemaDefinition } from \"@palantir/pack.schema\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport type { VersionedSchemaEntry } from \"./resolveSchemaChain.js\";\nimport { resolveSchemaChain } from \"./resolveSchemaChain.js\";\nimport type { RuntimeSchema, SchemaField } from \"./runtimeSchema.js\";\nimport {\n findRecordExportName,\n isRecordSchema,\n isUnionSchema,\n schemaName,\n TypeKind,\n typesFilePath,\n versionedSchemaName,\n versionedTypeName,\n} from \"./runtimeSchema.js\";\n\nexport interface VersionedZodOutput {\n /** schema_vN.ts files keyed by version number */\n zodSchemas: Map<number, string>;\n /** schema.ts re-export of latest version schemas under unversioned names */\n schemaReExport: string;\n}\n\nfunction convertFieldTypeToZodSchema(\n fieldType: SchemaField,\n schema?: RuntimeSchema,\n version?: number,\n): string {\n switch (fieldType.type) {\n case TypeKind.ANY:\n return \"z.unknown()\";\n case TypeKind.ARRAY:\n if (fieldType.items == null) {\n throw new Error(\"Array field is missing items type\");\n }\n return `z.array(${convertFieldTypeToZodSchema(fieldType.items, schema, version)})`;\n case TypeKind.BOOLEAN:\n return \"z.boolean()\";\n case TypeKind.DOC_REF:\n return \"z.string()\";\n case TypeKind.DOUBLE:\n return \"z.number()\";\n case TypeKind.MEDIA_REF:\n return \"z.string()\";\n case TypeKind.OBJECT_REF:\n return \"z.string()\";\n case TypeKind.OPTIONAL:\n if (fieldType.item == null) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return `${convertFieldTypeToZodSchema(fieldType.item, schema, version)}.optional()`;\n case TypeKind.REF: {\n if (fieldType.name == null) {\n throw new Error(\"Ref field is missing a name\");\n }\n const exportName = fieldType.refType === \"record\" && schema\n ? findRecordExportName(fieldType.name, schema) ?? fieldType.name\n : fieldType.name;\n const refSchemaName = version != null\n ? versionedSchemaName(exportName, version)\n : `${exportName}Schema`;\n const refTypeName = version != null ? versionedTypeName(exportName, version) : exportName;\n return `z.lazy((): ZodType<${refTypeName}> => ${refSchemaName})`;\n }\n case TypeKind.STRING:\n return \"z.string()\";\n case TypeKind.USER_REF:\n return \"z.string()\";\n default:\n throw new Error(`Unknown schema field type: ${fieldType.type}`);\n }\n}\n\n/**\n * Generate Zod schemas for a specific schema version.\n * Uses `.passthrough()` to preserve unknown fields.\n */\nfunction generateZodSchemasForVersion(\n version: number,\n schema: RuntimeSchema,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n // Collect type names for import\n const typeNames: string[] = [];\n for (const [exportName, item] of Object.entries(schema)) {\n if (isRecordSchema(item)) {\n typeNames.push(versionedTypeName(exportName, version));\n } else if (isUnionSchema(item)) {\n typeNames.push(versionedTypeName(exportName, version));\n for (const variantName of Object.keys(item.variants)) {\n typeNames.push(\n `${versionedTypeName(exportName, version)}${formatVariantName(variantName)}`,\n );\n }\n }\n }\n\n output += \"import type { ZodType } from \\\"zod\\\";\\n\";\n output += \"import { z } from \\\"zod\\\";\\n\";\n\n if (typeNames.length > 0) {\n output += `import type { ${typeNames.sort().join(\", \")} } from \"${typesFilePath(version)}\";\\n`;\n }\n\n output += \"\\n\";\n\n // Generate record schemas first (unions may depend on them)\n for (const [exportName, item] of Object.entries(schema)) {\n if (!isRecordSchema(item)) continue;\n\n const zodSchemaName = versionedSchemaName(exportName, version);\n const typeName = versionedTypeName(exportName, version);\n const fieldLines: string[] = [];\n\n for (const [fieldName, fieldType] of Object.entries(item.fields)) {\n const zodType = convertFieldTypeToZodSchema(fieldType, schema, version);\n fieldLines.push(` ${fieldName}: ${zodType}`);\n }\n\n output += `export const ${zodSchemaName} = z.object({\\n${\n fieldLines.join(\",\\n\")\n }\\n}).passthrough() satisfies ZodType<${typeName}>;\\n\\n`;\n }\n\n // Generate union schemas\n for (const [exportName, item] of Object.entries(schema)) {\n if (!isUnionSchema(item)) continue;\n\n const discriminantField = item.discriminant;\n const variantSchemaNames: string[] = [];\n\n for (const [variantName, variantType] of Object.entries(item.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantZodSchemaName = `${versionedSchemaName(exportName, version)}${formattedVariant}`;\n const variantTypeName = `${versionedTypeName(exportName, version)}${formattedVariant}`;\n variantSchemaNames.push(variantZodSchemaName);\n\n if (variantType.type === TypeKind.REF && variantType.refType === \"record\") {\n const recordExport = findRecordExportName(variantType.name!, schema);\n const recordZodSchemaName = recordExport\n ? versionedSchemaName(recordExport, version)\n : `${variantType.name!}Schema`;\n output += `export const ${variantZodSchemaName} = ${recordZodSchemaName}.extend({\\n`;\n output += ` ${discriminantField}: z.literal(\"${variantName}\")\\n`;\n output += `}) satisfies ZodType<${variantTypeName}>;\\n\\n`;\n } else {\n const zodType = convertFieldTypeToZodSchema(variantType, schema, version);\n output += `export const ${variantZodSchemaName} = z.object({\\n`;\n output += ` ${discriminantField}: z.literal(\"${variantName}\"),\\n`;\n output += ` value: ${zodType}\\n`;\n output += `}) satisfies ZodType<${variantTypeName}>;\\n\\n`;\n }\n }\n\n const unionZodSchemaName = versionedSchemaName(exportName, version);\n const typeName = versionedTypeName(exportName, version);\n output +=\n `export const ${unionZodSchemaName} = z.discriminatedUnion(\"${discriminantField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n]) satisfies ZodType<${typeName}>;\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate the schema.ts re-export file mapping unversioned names to latest version.\n */\nfunction generateSchemaReExport(\n { schema, version }: VersionedSchemaEntry,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n const reExports: string[] = [];\n\n for (const [exportName, item] of Object.entries(schema)) {\n if (isRecordSchema(item)) {\n const versioned = versionedSchemaName(exportName, version);\n reExports.push(\n `export { ${versioned} as ${schemaName(exportName)} } from \"./schema_v${version}.js\";`,\n );\n } else if (isUnionSchema(item)) {\n const versioned = versionedSchemaName(exportName, version);\n reExports.push(\n `export { ${versioned} as ${schemaName(exportName)} } from \"./schema_v${version}.js\";`,\n );\n\n // Also re-export union variant schemas\n for (const variantName of Object.keys(item.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const versionedVariant = `${versionedSchemaName(exportName, version)}${formattedVariant}`;\n const unversionedVariant = `${exportName}${formattedVariant}Schema`;\n reExports.push(\n `export { ${versionedVariant} as ${unversionedVariant} } from \"./schema_v${version}.js\";`,\n );\n }\n }\n }\n\n output += reExports.join(\"\\n\") + \"\\n\";\n\n return output;\n}\n\n/**\n * Generate per-version Zod schemas from a schema definition with version chain.\n *\n * @param schema - The schema definition (initial or versioned)\n * @param minSupportedVersion - Minimum version to generate schemas for (defaults to latest)\n * @returns Object containing generated Zod schema code for each output file\n */\nexport function generateVersionedZodFromSchema(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n): VersionedZodOutput {\n const { chain, minVersion } = resolveSchemaChain(schema, minSupportedVersion);\n\n const zodSchemas = new Map<number, string>();\n\n for (const { version, schema: versionSchema } of chain) {\n if (version < minVersion) continue;\n\n zodSchemas.set(version, generateZodSchemasForVersion(version, versionSchema));\n }\n\n const schemaReExport = generateSchemaReExport(chain[chain.length - 1]!);\n\n return { zodSchemas, schemaReExport };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateVersionedZodFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","convertFieldTypeToZodSchema","resolveMinVersion","typesFilePath","versionedSchemaName","versionedTypeName","generateZodSchemasForVersion","version","ir","output","typeNames","modelKey","modelDef","Object","entries","models","type","push","variantName","keys","union","variants","length","sort","join","zodSchemaName","typeName","fieldLines","field","record","fields","zodType","fieldType","isOptional","key","discriminantField","discriminant","variantSchemaNames","variantModelKey","formattedVariant","variantZodSchemaName","variantTypeName","variantModel","recordZodSchemaName","refZodSchemaName","refTypeName","unionZodSchemaName","generateSchemaReExport","reExports","versioned","versionedVariant","generateVersionedZodFromChain","resolved","minSupportedVersion","chain","minVersion","zodSchemas","Map","set","schemaReExport"],"sources":["generateVersionedZodFromSchema.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 { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport { convertFieldTypeToZodSchema } from \"../ir/irFieldHelpers.js\";\nimport type { ResolvedIrChain, VersionedIrEntry } from \"./resolveSchemaChain.js\";\nimport { resolveMinVersion } from \"./resolveSchemaChain.js\";\nimport { typesFilePath, versionedSchemaName, versionedTypeName } from \"./runtimeSchema.js\";\n\nexport interface VersionedZodOutput {\n /** schema_vN.ts files keyed by version number */\n zodSchemas: Map<number, string>;\n /** schema.ts re-export of latest version schemas under unversioned names */\n schemaReExport: string;\n}\n\n/**\n * Generate Zod schemas for a specific schema version.\n * Uses `.passthrough()` to preserve unknown fields.\n */\nfunction generateZodSchemasForVersion(\n version: number,\n ir: IRealTimeDocumentSchema,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n // Collect type names for import\n const typeNames: string[] = [];\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type === \"record\") {\n typeNames.push(versionedTypeName(modelKey, version));\n } else if (modelDef.type === \"union\") {\n typeNames.push(versionedTypeName(modelKey, version));\n for (const variantName of Object.keys(modelDef.union.variants)) {\n typeNames.push(\n `${versionedTypeName(modelKey, version)}${formatVariantName(variantName)}`,\n );\n }\n }\n }\n\n output += \"import type { ZodType } from \\\"zod\\\";\\n\";\n output += \"import { z } from \\\"zod\\\";\\n\";\n\n if (typeNames.length > 0) {\n output += `import type { ${typeNames.sort().join(\", \")} } from \"${typesFilePath(version)}\";\\n`;\n }\n\n output += \"\\n\";\n\n // Generate record schemas first (unions may depend on them)\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type !== \"record\") continue;\n\n const zodSchemaName = versionedSchemaName(modelKey, version);\n const typeName = versionedTypeName(modelKey, version);\n const fieldLines: string[] = [];\n\n for (const field of modelDef.record.fields) {\n let zodType = convertFieldTypeToZodSchema(field.fieldType, version);\n if (field.isOptional) {\n zodType = `${zodType}.optional()`;\n }\n fieldLines.push(` ${field.key}: ${zodType}`);\n }\n\n output += `export const ${zodSchemaName} = z.object({\\n${\n fieldLines.join(\",\\n\")\n }\\n}).passthrough() satisfies ZodType<${typeName}>;\\n\\n`;\n }\n\n // Generate union schemas\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type !== \"union\") continue;\n\n const union = modelDef.union;\n const discriminantField = union.discriminant;\n const variantSchemaNames: string[] = [];\n\n for (const [variantName, variantModelKey] of Object.entries(union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantZodSchemaName = `${versionedSchemaName(modelKey, version)}${formattedVariant}`;\n const variantTypeName = `${versionedTypeName(modelKey, version)}${formattedVariant}`;\n variantSchemaNames.push(variantZodSchemaName);\n\n // Look up the variant's model to check if it's a record\n const variantModel = ir.models[variantModelKey];\n if (variantModel != null && variantModel.type === \"record\") {\n const recordZodSchemaName = versionedSchemaName(variantModelKey, version);\n output += `export const ${variantZodSchemaName} = ${recordZodSchemaName}.extend({\\n`;\n output += ` ${discriminantField}: z.literal(\"${variantName}\")\\n`;\n output += `}) satisfies ZodType<${variantTypeName}>;\\n\\n`;\n } else {\n // Non-record variant (e.g. another union): emit a value field referencing the schema\n const refZodSchemaName = versionedSchemaName(variantModelKey, version);\n const refTypeName = versionedTypeName(variantModelKey, version);\n output += `export const ${variantZodSchemaName} = z.object({\\n`;\n output += ` ${discriminantField}: z.literal(\"${variantName}\"),\\n`;\n output += ` value: z.lazy((): ZodType<${refTypeName}> => ${refZodSchemaName})\\n`;\n output += `}) satisfies ZodType<${variantTypeName}>;\\n\\n`;\n }\n }\n\n const unionZodSchemaName = versionedSchemaName(modelKey, version);\n const typeName = versionedTypeName(modelKey, version);\n output +=\n `export const ${unionZodSchemaName} = z.discriminatedUnion(\"${discriminantField}\", [\\n ${\n variantSchemaNames.join(\",\\n \")\n }\\n]) satisfies ZodType<${typeName}>;\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate the schema.ts re-export file mapping unversioned names to latest version.\n */\nfunction generateSchemaReExport(\n { ir, version }: VersionedIrEntry,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n const reExports: string[] = [];\n\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type === \"record\") {\n const versioned = versionedSchemaName(modelKey, version);\n reExports.push(\n `export { ${versioned} as ${modelKey}Schema } from \"./schema_v${version}.js\";`,\n );\n } else if (modelDef.type === \"union\") {\n const versioned = versionedSchemaName(modelKey, version);\n reExports.push(\n `export { ${versioned} as ${modelKey}Schema } from \"./schema_v${version}.js\";`,\n );\n\n // Also re-export union variant schemas\n for (const variantName of Object.keys(modelDef.union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const versionedVariant = `${versionedSchemaName(modelKey, version)}${formattedVariant}`;\n const unversionedVariant = `${modelKey}${formattedVariant}Schema`;\n reExports.push(\n `export { ${versionedVariant} as ${unversionedVariant} } from \"./schema_v${version}.js\";`,\n );\n }\n }\n }\n\n output += reExports.join(\"\\n\") + \"\\n\";\n\n return output;\n}\n\n/**\n * Generate per-version Zod schemas from an already-resolved versioned IR chain.\n */\nexport function generateVersionedZodFromChain(\n resolved: ResolvedIrChain,\n minSupportedVersion?: number,\n): VersionedZodOutput {\n const { chain } = resolved;\n const { minVersion } = resolveMinVersion(chain, minSupportedVersion);\n\n const zodSchemas = new Map<number, string>();\n\n for (const { version, ir } of chain) {\n if (version < minVersion) continue;\n\n zodSchemas.set(version, generateZodSchemasForVersion(version, ir));\n }\n\n const schemaReExport = generateSchemaReExport(chain[chain.length - 1]!);\n\n return { zodSchemas, schemaReExport };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,10 +15,10 @@
15
15
  */
16
16
 
17
17
  import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
18
- import { resolveSchemaChain } from "./resolveSchemaChain.js";
18
+ import { resolveMinVersion } from "./resolveSchemaChain.js";
19
19
 
20
20
  /**
21
- * Generate versions.ts from a versioned schema chain.
21
+ * Generate versions.ts from an already-resolved versioned IR chain.
22
22
  *
23
23
  * Output:
24
24
  * ```
@@ -27,12 +27,14 @@ import { resolveSchemaChain } from "./resolveSchemaChain.js";
27
27
  * export type MinSupportedVersion = 1;
28
28
  * ```
29
29
  */
30
- export function generateVersionsFromSchema(schema, minSupportedVersion) {
30
+ export function generateVersionsFromChain(resolved, minSupportedVersion) {
31
+ const {
32
+ chain
33
+ } = resolved;
31
34
  const {
32
- chain,
33
35
  latestVersion,
34
36
  minVersion
35
- } = resolveSchemaChain(schema, minSupportedVersion);
37
+ } = resolveMinVersion(chain, minSupportedVersion);
36
38
  const supportedVersions = [];
37
39
  for (const {
38
40
  version
@@ -1 +1 @@
1
- {"version":3,"file":"generateVersionsFromSchema.js","names":["GENERATED_FILE_HEADER","resolveSchemaChain","generateVersionsFromSchema","schema","minSupportedVersion","chain","latestVersion","minVersion","supportedVersions","version","push","output","join"],"sources":["generateVersionsFromSchema.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 { SchemaDefinition } from \"@palantir/pack.schema\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport { resolveSchemaChain } from \"./resolveSchemaChain.js\";\n\n/**\n * Generate versions.ts from a versioned schema chain.\n *\n * Output:\n * ```\n * export type SupportedVersions = 1 | 2;\n * export type LatestVersion = 2;\n * export type MinSupportedVersion = 1;\n * ```\n */\nexport function generateVersionsFromSchema(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n): string {\n const { chain, latestVersion, minVersion } = resolveSchemaChain(schema, minSupportedVersion);\n\n const supportedVersions: number[] = [];\n for (const { version } of chain) {\n if (version >= minVersion) {\n supportedVersions.push(version);\n }\n }\n\n let output = GENERATED_FILE_HEADER;\n output += `export type SupportedVersions = ${supportedVersions.join(\" | \")};\\n`;\n output += `export type LatestVersion = ${latestVersion};\\n`;\n output += `export type MinSupportedVersion = ${minVersion};\\n`;\n\n return output;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,qBAAqB,QAAQ,2BAA2B;AACjE,SAASC,kBAAkB,QAAQ,yBAAyB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CACxCC,MAAwB,EACxBC,mBAA4B,EACpB;EACR,MAAM;IAAEC,KAAK;IAAEC,aAAa;IAAEC;EAAW,CAAC,GAAGN,kBAAkB,CAACE,MAAM,EAAEC,mBAAmB,CAAC;EAE5F,MAAMI,iBAA2B,GAAG,EAAE;EACtC,KAAK,MAAM;IAAEC;EAAQ,CAAC,IAAIJ,KAAK,EAAE;IAC/B,IAAII,OAAO,IAAIF,UAAU,EAAE;MACzBC,iBAAiB,CAACE,IAAI,CAACD,OAAO,CAAC;IACjC;EACF;EAEA,IAAIE,MAAM,GAAGX,qBAAqB;EAClCW,MAAM,IAAI,mCAAmCH,iBAAiB,CAACI,IAAI,CAAC,KAAK,CAAC,KAAK;EAC/ED,MAAM,IAAI,+BAA+BL,aAAa,KAAK;EAC3DK,MAAM,IAAI,qCAAqCJ,UAAU,KAAK;EAE9D,OAAOI,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"file":"generateVersionsFromSchema.js","names":["GENERATED_FILE_HEADER","resolveMinVersion","generateVersionsFromChain","resolved","minSupportedVersion","chain","latestVersion","minVersion","supportedVersions","version","push","output","join"],"sources":["generateVersionsFromSchema.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 { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\nimport { resolveMinVersion } from \"./resolveSchemaChain.js\";\n\n/**\n * Generate versions.ts from an already-resolved versioned IR chain.\n *\n * Output:\n * ```\n * export type SupportedVersions = 1 | 2;\n * export type LatestVersion = 2;\n * export type MinSupportedVersion = 1;\n * ```\n */\nexport function generateVersionsFromChain(\n resolved: ResolvedIrChain,\n minSupportedVersion?: number,\n): string {\n const { chain } = resolved;\n const { latestVersion, minVersion } = resolveMinVersion(chain, minSupportedVersion);\n\n const supportedVersions: number[] = [];\n for (const { version } of chain) {\n if (version >= minVersion) {\n supportedVersions.push(version);\n }\n }\n\n let output = GENERATED_FILE_HEADER;\n output += `export type SupportedVersions = ${supportedVersions.join(\" | \")};\\n`;\n output += `export type LatestVersion = ${latestVersion};\\n`;\n output += `export type MinSupportedVersion = ${minVersion};\\n`;\n\n return output;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,qBAAqB,QAAQ,2BAA2B;AAEjE,SAASC,iBAAiB,QAAQ,yBAAyB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CACvCC,QAAyB,EACzBC,mBAA4B,EACpB;EACR,MAAM;IAAEC;EAAM,CAAC,GAAGF,QAAQ;EAC1B,MAAM;IAAEG,aAAa;IAAEC;EAAW,CAAC,GAAGN,iBAAiB,CAACI,KAAK,EAAED,mBAAmB,CAAC;EAEnF,MAAMI,iBAA2B,GAAG,EAAE;EACtC,KAAK,MAAM;IAAEC;EAAQ,CAAC,IAAIJ,KAAK,EAAE;IAC/B,IAAII,OAAO,IAAIF,UAAU,EAAE;MACzBC,iBAAiB,CAACE,IAAI,CAACD,OAAO,CAAC;IACjC;EACF;EAEA,IAAIE,MAAM,GAAGX,qBAAqB;EAClCW,MAAM,IAAI,mCAAmCH,iBAAiB,CAACI,IAAI,CAAC,KAAK,CAAC,KAAK;EAC/ED,MAAM,IAAI,+BAA+BL,aAAa,KAAK;EAC3DK,MAAM,IAAI,qCAAqCJ,UAAU,KAAK;EAE9D,OAAOI,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import fs from "fs-extra";
18
+ import path from "path";
19
+ import { pathToFileURL } from "url";
20
+ import { extractValidSchema } from "./validateSchemaModule.js";
21
+
22
+ /**
23
+ * Pull a `SchemaDefinition` out of an imported module. Accepts either a chain
24
+ * built via `defineSchemaUpdate(...)` (`type: "initial" | "versioned"`) or a
25
+ * plain `ModelDefs` object exported as `default` (which is wrapped in an
26
+ * `InitialSchema` at version 1).
27
+ */
28
+ export function extractSchemaDefinition(schemaModule) {
29
+ const defaultExport = schemaModule.default;
30
+ if (typeof defaultExport === "object" && defaultExport != null && "type" in defaultExport && (defaultExport.type === "initial" || defaultExport.type === "versioned")) {
31
+ return defaultExport;
32
+ }
33
+ const models = extractValidSchema(schemaModule);
34
+ return {
35
+ type: "initial",
36
+ version: 1,
37
+ models
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Resolve and import a schema module from a file path, returning a
43
+ * `SchemaDefinition` ready for IR resolution.
44
+ */
45
+ export async function loadSchemaModule(filePath) {
46
+ const inputPath = path.resolve(filePath);
47
+ if (!(await fs.pathExists(inputPath))) {
48
+ throw new Error(`Input file not found: ${inputPath}`);
49
+ }
50
+ const schemaModule = await import(pathToFileURL(inputPath).href);
51
+ return extractSchemaDefinition(schemaModule);
52
+ }
53
+ //# sourceMappingURL=loadSchemaModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadSchemaModule.js","names":["fs","path","pathToFileURL","extractValidSchema","extractSchemaDefinition","schemaModule","defaultExport","default","type","models","version","loadSchemaModule","filePath","inputPath","resolve","pathExists","Error","href"],"sources":["loadSchemaModule.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 { InitialSchema, SchemaDefinition } from \"@palantir/pack.schema\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\nimport { extractValidSchema } from \"./validateSchemaModule.js\";\n\n/**\n * Pull a `SchemaDefinition` out of an imported module. Accepts either a chain\n * built via `defineSchemaUpdate(...)` (`type: \"initial\" | \"versioned\"`) or a\n * plain `ModelDefs` object exported as `default` (which is wrapped in an\n * `InitialSchema` at version 1).\n */\nexport function extractSchemaDefinition(schemaModule: unknown): SchemaDefinition {\n const mod = schemaModule as Record<string, unknown>;\n const defaultExport = mod.default;\n\n if (\n typeof defaultExport === \"object\" && defaultExport != null\n && \"type\" in defaultExport\n && (defaultExport.type === \"initial\" || defaultExport.type === \"versioned\")\n ) {\n return defaultExport as SchemaDefinition;\n }\n\n const models = extractValidSchema(schemaModule);\n return { type: \"initial\", version: 1, models } satisfies InitialSchema;\n}\n\n/**\n * Resolve and import a schema module from a file path, returning a\n * `SchemaDefinition` ready for IR resolution.\n */\nexport async function loadSchemaModule(filePath: string): Promise<SchemaDefinition> {\n const inputPath = path.resolve(filePath);\n if (!(await fs.pathExists(inputPath))) {\n throw new Error(`Input file not found: ${inputPath}`);\n }\n const schemaModule: unknown = await import(pathToFileURL(inputPath).href);\n return extractSchemaDefinition(schemaModule);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,EAAE,MAAM,UAAU;AACzB,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AACnC,SAASC,kBAAkB,QAAQ,2BAA2B;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,YAAqB,EAAoB;EAE/E,MAAMC,aAAa,GADPD,YAAY,CACEE,OAAO;EAEjC,IACE,OAAOD,aAAa,KAAK,QAAQ,IAAIA,aAAa,IAAI,IAAI,IACvD,MAAM,IAAIA,aAAa,KACtBA,aAAa,CAACE,IAAI,KAAK,SAAS,IAAIF,aAAa,CAACE,IAAI,KAAK,WAAW,CAAC,EAC3E;IACA,OAAOF,aAAa;EACtB;EAEA,MAAMG,MAAM,GAAGN,kBAAkB,CAACE,YAAY,CAAC;EAC/C,OAAO;IAAEG,IAAI,EAAE,SAAS;IAAEE,OAAO,EAAE,CAAC;IAAED;EAAO,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeE,gBAAgBA,CAACC,QAAgB,EAA6B;EAClF,MAAMC,SAAS,GAAGZ,IAAI,CAACa,OAAO,CAACF,QAAQ,CAAC;EACxC,IAAI,EAAE,MAAMZ,EAAE,CAACe,UAAU,CAACF,SAAS,CAAC,CAAC,EAAE;IACrC,MAAM,IAAIG,KAAK,CAAC,yBAAyBH,SAAS,EAAE,CAAC;EACvD;EACA,MAAMR,YAAqB,GAAG,MAAM,MAAM,CAACH,aAAa,CAACW,SAAS,CAAC,CAACI,IAAI,CAAC;EACzE,OAAOb,uBAAuB,CAACC,YAAY,CAAC;AAC9C","ignoreList":[]}
@@ -14,30 +14,63 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- function collectVersionedSchemaChain(input) {
17
+ import { convertSchemaToIr } from "../steps/convertStepsToIr.js";
18
+
19
+ /**
20
+ * JSON-serializable form of a single field migration. The `forward` callback
21
+ * from the schema builder is captured as its source string so the entry can be
22
+ * round-tripped through a JSON IR file.
23
+ */
24
+
25
+ /** Serialized migrations keyed by `[recordModelName][fieldName]`. */
26
+
27
+ function collectVersionedIrChain(input) {
18
28
  const chain = [];
19
29
  let current = input;
20
30
  while (current.type === "versioned") {
21
31
  chain.unshift({
22
32
  version: current.version,
23
- schema: current.models,
24
- migrations: current.migrations
33
+ ir: convertSchemaToIr(current.models, {
34
+ version: current.version
35
+ }),
36
+ migrations: serializeMigrations(current.migrations)
25
37
  });
26
38
  current = current.previous;
27
39
  }
28
40
  chain.unshift({
29
41
  version: current.version,
30
- schema: current.models
42
+ ir: convertSchemaToIr(current.models, {
43
+ version: current.version
44
+ })
31
45
  });
32
46
  return chain;
33
47
  }
34
48
 
35
49
  /**
36
- * Collect the version chain and resolve min/latest versions.
37
- * Throws on empty chain or invalid minSupportedVersion.
50
+ * Capture each `forward` callback as its source string so the migrations object
51
+ * is plain JSON-serializable data.
38
52
  */
39
- export function resolveSchemaChain(schema, minSupportedVersion) {
40
- const chain = collectVersionedSchemaChain(schema);
53
+ function serializeMigrations(migrations) {
54
+ if (migrations == null) return undefined;
55
+ const result = {};
56
+ for (const [modelKey, fields] of Object.entries(migrations)) {
57
+ const fieldEntries = {};
58
+ for (const [fieldName, migration] of Object.entries(fields)) {
59
+ fieldEntries[fieldName] = {
60
+ derivedFrom: [...migration.derivedFrom],
61
+ forwardSource: migration.forward.toString()
62
+ };
63
+ }
64
+ result[modelKey] = fieldEntries;
65
+ }
66
+ return result;
67
+ }
68
+
69
+ /**
70
+ * Validate `minSupportedVersion` against an already-resolved chain and return
71
+ * the effective `minVersion`. Throws on invalid input.
72
+ */
73
+ export function resolveMinVersion(chain, minSupportedVersion) {
41
74
  if (chain.length === 0) {
42
75
  throw new Error("Schema version chain is empty");
43
76
  }
@@ -46,9 +79,26 @@ export function resolveSchemaChain(schema, minSupportedVersion) {
46
79
  throw new Error(`minSupportedVersion ${minSupportedVersion} is not in the schema chain ` + `(available versions: ${chain.map(c => c.version).join(", ")})`);
47
80
  }
48
81
  return {
49
- chain,
50
82
  latestVersion,
51
83
  minVersion: minSupportedVersion ?? latestVersion
52
84
  };
53
85
  }
86
+
87
+ /**
88
+ * Collect the version chain and resolve min/latest versions.
89
+ * Each version's models are converted to IR (IRealTimeDocumentSchema).
90
+ * Throws on empty chain or invalid minSupportedVersion.
91
+ */
92
+ export function resolveSchemaChain(schema, minSupportedVersion) {
93
+ const chain = collectVersionedIrChain(schema);
94
+ const {
95
+ latestVersion,
96
+ minVersion
97
+ } = resolveMinVersion(chain, minSupportedVersion);
98
+ return {
99
+ chain,
100
+ latestVersion,
101
+ minVersion
102
+ };
103
+ }
54
104
  //# sourceMappingURL=resolveSchemaChain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSchemaChain.js","names":["collectVersionedSchemaChain","input","chain","current","type","unshift","version","schema","models","migrations","previous","resolveSchemaChain","minSupportedVersion","length","Error","latestVersion","some","c","map","join","minVersion"],"sources":["resolveSchemaChain.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 { SchemaDefinition, VersionMigrations } from \"@palantir/pack.schema\";\nimport type { RuntimeSchema } from \"./runtimeSchema.js\";\n\nexport interface VersionedSchemaEntry {\n version: number;\n schema: RuntimeSchema;\n migrations?: VersionMigrations;\n}\n\nexport interface ResolvedSchemaChain {\n chain: VersionedSchemaEntry[];\n latestVersion: number;\n minVersion: number;\n}\n\nfunction collectVersionedSchemaChain(input: SchemaDefinition): VersionedSchemaEntry[] {\n const chain: VersionedSchemaEntry[] = [];\n let current: SchemaDefinition = input;\n\n while (current.type === \"versioned\") {\n chain.unshift({\n version: current.version,\n schema: current.models as RuntimeSchema,\n migrations: current.migrations,\n });\n current = current.previous;\n }\n chain.unshift({ version: current.version, schema: current.models as RuntimeSchema });\n\n return chain;\n}\n\n/**\n * Collect the version chain and resolve min/latest versions.\n * Throws on empty chain or invalid minSupportedVersion.\n */\nexport function resolveSchemaChain(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n): ResolvedSchemaChain {\n const chain = collectVersionedSchemaChain(schema);\n\n if (chain.length === 0) {\n throw new Error(\"Schema version chain is empty\");\n }\n\n const latestVersion = chain[chain.length - 1]!.version;\n\n if (minSupportedVersion != null && !chain.some(c => c.version === minSupportedVersion)) {\n throw new Error(\n `minSupportedVersion ${minSupportedVersion} is not in the schema chain `\n + `(available versions: ${chain.map(c => c.version).join(\", \")})`,\n );\n }\n\n const minVersion = minSupportedVersion ?? latestVersion;\n\n return { chain, latestVersion, minVersion };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA,SAASA,2BAA2BA,CAACC,KAAuB,EAA0B;EACpF,MAAMC,KAA6B,GAAG,EAAE;EACxC,IAAIC,OAAyB,GAAGF,KAAK;EAErC,OAAOE,OAAO,CAACC,IAAI,KAAK,WAAW,EAAE;IACnCF,KAAK,CAACG,OAAO,CAAC;MACZC,OAAO,EAAEH,OAAO,CAACG,OAAO;MACxBC,MAAM,EAAEJ,OAAO,CAACK,MAAuB;MACvCC,UAAU,EAAEN,OAAO,CAACM;IACtB,CAAC,CAAC;IACFN,OAAO,GAAGA,OAAO,CAACO,QAAQ;EAC5B;EACAR,KAAK,CAACG,OAAO,CAAC;IAAEC,OAAO,EAAEH,OAAO,CAACG,OAAO;IAAEC,MAAM,EAAEJ,OAAO,CAACK;EAAwB,CAAC,CAAC;EAEpF,OAAON,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASS,kBAAkBA,CAChCJ,MAAwB,EACxBK,mBAA4B,EACP;EACrB,MAAMV,KAAK,GAAGF,2BAA2B,CAACO,MAAM,CAAC;EAEjD,IAAIL,KAAK,CAACW,MAAM,KAAK,CAAC,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,MAAMC,aAAa,GAAGb,KAAK,CAACA,KAAK,CAACW,MAAM,GAAG,CAAC,CAAC,CAAEP,OAAO;EAEtD,IAAIM,mBAAmB,IAAI,IAAI,IAAI,CAACV,KAAK,CAACc,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACX,OAAO,KAAKM,mBAAmB,CAAC,EAAE;IACtF,MAAM,IAAIE,KAAK,CACb,uBAAuBF,mBAAmB,8BAA8B,GACpE,wBAAwBV,KAAK,CAACgB,GAAG,CAACD,CAAC,IAAIA,CAAC,CAACX,OAAO,CAAC,CAACa,IAAI,CAAC,IAAI,CAAC,GAClE,CAAC;EACH;EAIA,OAAO;IAAEjB,KAAK;IAAEa,aAAa;IAAEK,UAAU,EAFtBR,mBAAmB,IAAIG;EAEA,CAAC;AAC7C","ignoreList":[]}
1
+ {"version":3,"file":"resolveSchemaChain.js","names":["convertSchemaToIr","collectVersionedIrChain","input","chain","current","type","unshift","version","ir","models","migrations","serializeMigrations","previous","undefined","result","modelKey","fields","Object","entries","fieldEntries","fieldName","migration","derivedFrom","forwardSource","forward","toString","resolveMinVersion","minSupportedVersion","length","Error","latestVersion","some","c","map","join","minVersion","resolveSchemaChain","schema"],"sources":["resolveSchemaChain.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 { SchemaDefinition, VersionMigrations } from \"@palantir/pack.schema\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { convertSchemaToIr } from \"../steps/convertStepsToIr.js\";\n\n/**\n * JSON-serializable form of a single field migration. The `forward` callback\n * from the schema builder is captured as its source string so the entry can be\n * round-tripped through a JSON IR file.\n */\nexport interface SerializedFieldMigration {\n readonly derivedFrom: readonly string[];\n /** `Function.toString()` output of the original `forward` callback. */\n readonly forwardSource: string;\n}\n\n/** Serialized migrations keyed by `[recordModelName][fieldName]`. */\nexport type SerializedVersionMigrations = Record<\n string,\n Record<string, SerializedFieldMigration>\n>;\n\nexport interface VersionedIrEntry {\n version: number;\n ir: IRealTimeDocumentSchema;\n migrations?: SerializedVersionMigrations;\n}\n\nexport interface ResolvedIrChain {\n chain: VersionedIrEntry[];\n latestVersion: number;\n minVersion: number;\n}\n\nfunction collectVersionedIrChain(input: SchemaDefinition): VersionedIrEntry[] {\n const chain: VersionedIrEntry[] = [];\n let current: SchemaDefinition = input;\n\n while (current.type === \"versioned\") {\n chain.unshift({\n version: current.version,\n ir: convertSchemaToIr(current.models, { version: current.version }),\n migrations: serializeMigrations(current.migrations),\n });\n current = current.previous;\n }\n chain.unshift({\n version: current.version,\n ir: convertSchemaToIr(current.models, { version: current.version }),\n });\n\n return chain;\n}\n\n/**\n * Capture each `forward` callback as its source string so the migrations object\n * is plain JSON-serializable data.\n */\nfunction serializeMigrations(\n migrations: VersionMigrations | undefined,\n): SerializedVersionMigrations | undefined {\n if (migrations == null) return undefined;\n const result: SerializedVersionMigrations = {};\n for (const [modelKey, fields] of Object.entries(migrations)) {\n const fieldEntries: Record<string, SerializedFieldMigration> = {};\n for (const [fieldName, migration] of Object.entries(fields)) {\n fieldEntries[fieldName] = {\n derivedFrom: [...migration.derivedFrom],\n forwardSource: migration.forward.toString(),\n };\n }\n result[modelKey] = fieldEntries;\n }\n return result;\n}\n\n/**\n * Validate `minSupportedVersion` against an already-resolved chain and return\n * the effective `minVersion`. Throws on invalid input.\n */\nexport function resolveMinVersion(\n chain: VersionedIrEntry[],\n minSupportedVersion: number | undefined,\n): { latestVersion: number; minVersion: number } {\n if (chain.length === 0) {\n throw new Error(\"Schema version chain is empty\");\n }\n\n const latestVersion = chain[chain.length - 1]!.version;\n\n if (minSupportedVersion != null && !chain.some(c => c.version === minSupportedVersion)) {\n throw new Error(\n `minSupportedVersion ${minSupportedVersion} is not in the schema chain `\n + `(available versions: ${chain.map(c => c.version).join(\", \")})`,\n );\n }\n\n return {\n latestVersion,\n minVersion: minSupportedVersion ?? latestVersion,\n };\n}\n\n/**\n * Collect the version chain and resolve min/latest versions.\n * Each version's models are converted to IR (IRealTimeDocumentSchema).\n * Throws on empty chain or invalid minSupportedVersion.\n */\nexport function resolveSchemaChain(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n): ResolvedIrChain {\n const chain = collectVersionedIrChain(schema);\n const { latestVersion, minVersion } = resolveMinVersion(chain, minSupportedVersion);\n return { chain, latestVersion, minVersion };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,33 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { TypeKind as SchemaTypeKind } from "@palantir/pack.schema";
18
- export const TypeKind = {
19
- ...SchemaTypeKind,
20
- ANY: "any"
21
- };
22
- export const SchemaDefKind = {
23
- RECORD: "record",
24
- UNION: "union"
25
- };
26
-
27
- // Runtime types mirroring the schema structure
28
-
29
- export function isRecordSchema(item) {
30
- return item.type === SchemaDefKind.RECORD && "fields" in item;
31
- }
32
- export function isUnionSchema(item) {
33
- return item.type === SchemaDefKind.UNION && "variants" in item;
34
- }
35
- export function findRecordExportName(recordName, schema) {
36
- for (const [exportName, item] of Object.entries(schema)) {
37
- if (isRecordSchema(item) && item.name === recordName) {
38
- return exportName;
39
- }
40
- }
41
- return null;
42
- }
43
-
44
17
  /** Versioned read type name: `RecordName_vN` */
45
18
  export function versionedTypeName(exportName, version) {
46
19
  return `${exportName}_v${version}`;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeSchema.js","names":["TypeKind","SchemaTypeKind","ANY","SchemaDefKind","RECORD","UNION","isRecordSchema","item","type","isUnionSchema","findRecordExportName","recordName","schema","exportName","Object","entries","name","versionedTypeName","version","versionedWriteTypeName","versionedSchemaName","modelName","schemaName","typesFilePath","writeTypesFilePath","TYPES_REEXPORT_PATH","SCHEMA_REEXPORT_PATH","MODELS_PATH","INTERNAL_UPGRADES_PATH","VERSIONS_PATH","VERSIONED_DOC_REF_PATH"],"sources":["runtimeSchema.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 { TypeKind as SchemaTypeKind } from \"@palantir/pack.schema\";\n\nexport const TypeKind: typeof SchemaTypeKind & { readonly ANY: \"any\" } = {\n ...SchemaTypeKind,\n ANY: \"any\",\n};\n\nexport const SchemaDefKind = {\n RECORD: \"record\",\n UNION: \"union\",\n} as const;\n\n// Runtime types mirroring the schema structure\nexport interface SchemaField {\n readonly type: string;\n readonly items?: SchemaField;\n readonly item?: SchemaField;\n readonly refType?: \"record\" | \"union\";\n readonly name?: string;\n}\n\nexport interface RuntimeSchemaRecord {\n readonly type: typeof SchemaDefKind.RECORD;\n readonly name: string;\n readonly docs?: string;\n readonly fields: Readonly<Record<string, SchemaField>>;\n}\n\nexport interface RuntimeSchemaUnion {\n readonly type: typeof SchemaDefKind.UNION;\n readonly name?: string;\n readonly variants: Readonly<Record<string, SchemaField>>;\n readonly discriminant: string;\n}\n\nexport type RuntimeSchemaItem = RuntimeSchemaRecord | RuntimeSchemaUnion;\nexport type RuntimeSchema = Record<string, RuntimeSchemaItem>;\n\nexport function isRecordSchema(item: RuntimeSchemaItem): item is RuntimeSchemaRecord {\n return item.type === SchemaDefKind.RECORD && \"fields\" in item;\n}\n\nexport function isUnionSchema(item: RuntimeSchemaItem): item is RuntimeSchemaUnion {\n return item.type === SchemaDefKind.UNION && \"variants\" in item;\n}\n\nexport function findRecordExportName(recordName: string, schema: RuntimeSchema): string | null {\n for (const [exportName, item] of Object.entries(schema)) {\n if (isRecordSchema(item) && item.name === recordName) {\n return exportName;\n }\n }\n return null;\n}\n\n/** Versioned read type name: `RecordName_vN` */\nexport function versionedTypeName(exportName: string, version: number): string {\n return `${exportName}_v${version}`;\n}\n\n/** Versioned write type name: `RecordNameUpdate_vN` */\nexport function versionedWriteTypeName(exportName: string, version: number): string {\n return `${exportName}Update_v${version}`;\n}\n\n/** Versioned Zod schema name: `RecordNameSchema_vN` */\nexport function versionedSchemaName(exportName: string, version: number): string {\n return `${exportName}Schema_v${version}`;\n}\n\n/** Model constant name: `RecordNameModel` */\nexport function modelName(exportName: string): string {\n return `${exportName}Model`;\n}\n\n/** Unversioned Zod schema name: `RecordNameSchema` */\nexport function schemaName(exportName: string): string {\n return `${exportName}Schema`;\n}\n\n/** Per-version types file path: `./types_vN.js` */\nexport function typesFilePath(version: number): string {\n return `./types_v${version}.js`;\n}\n\n/** Per-version write types file path: `./writeTypes_vN.js` */\nexport function writeTypesFilePath(version: number): string {\n return `./writeTypes_v${version}.js`;\n}\n\n/** Types re-export file path: `./types.js` */\nexport const TYPES_REEXPORT_PATH = \"./types.js\";\n\n/** Schema re-export file path: `./schema.js` */\nexport const SCHEMA_REEXPORT_PATH = \"./schema.js\";\n\n/** Models file path: `./models.js` */\nexport const MODELS_PATH = \"./models.js\";\n\n/** Internal upgrades file path: `./_internal/upgrades.js` */\nexport const INTERNAL_UPGRADES_PATH = \"./_internal/upgrades.js\";\n\n/** Versions file path: `./versions.js` */\nexport const VERSIONS_PATH = \"./versions.js\";\n\n/** Versioned doc ref file path: `./versionedDocRef.js` */\nexport const VERSIONED_DOC_REF_PATH = \"./versionedDocRef.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,IAAIC,cAAc,QAAQ,uBAAuB;AAElE,OAAO,MAAMD,QAAyD,GAAG;EACvE,GAAGC,cAAc;EACjBC,GAAG,EAAE;AACP,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EAC3BC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE;AACT,CAAU;;AAEV;;AA0BA,OAAO,SAASC,cAAcA,CAACC,IAAuB,EAA+B;EACnF,OAAOA,IAAI,CAACC,IAAI,KAAKL,aAAa,CAACC,MAAM,IAAI,QAAQ,IAAIG,IAAI;AAC/D;AAEA,OAAO,SAASE,aAAaA,CAACF,IAAuB,EAA8B;EACjF,OAAOA,IAAI,CAACC,IAAI,KAAKL,aAAa,CAACE,KAAK,IAAI,UAAU,IAAIE,IAAI;AAChE;AAEA,OAAO,SAASG,oBAAoBA,CAACC,UAAkB,EAAEC,MAAqB,EAAiB;EAC7F,KAAK,MAAM,CAACC,UAAU,EAAEN,IAAI,CAAC,IAAIO,MAAM,CAACC,OAAO,CAACH,MAAM,CAAC,EAAE;IACvD,IAAIN,cAAc,CAACC,IAAI,CAAC,IAAIA,IAAI,CAACS,IAAI,KAAKL,UAAU,EAAE;MACpD,OAAOE,UAAU;IACnB;EACF;EACA,OAAO,IAAI;AACb;;AAEA;AACA,OAAO,SAASI,iBAAiBA,CAACJ,UAAkB,EAAEK,OAAe,EAAU;EAC7E,OAAO,GAAGL,UAAU,KAAKK,OAAO,EAAE;AACpC;;AAEA;AACA,OAAO,SAASC,sBAAsBA,CAACN,UAAkB,EAAEK,OAAe,EAAU;EAClF,OAAO,GAAGL,UAAU,WAAWK,OAAO,EAAE;AAC1C;;AAEA;AACA,OAAO,SAASE,mBAAmBA,CAACP,UAAkB,EAAEK,OAAe,EAAU;EAC/E,OAAO,GAAGL,UAAU,WAAWK,OAAO,EAAE;AAC1C;;AAEA;AACA,OAAO,SAASG,SAASA,CAACR,UAAkB,EAAU;EACpD,OAAO,GAAGA,UAAU,OAAO;AAC7B;;AAEA;AACA,OAAO,SAASS,UAAUA,CAACT,UAAkB,EAAU;EACrD,OAAO,GAAGA,UAAU,QAAQ;AAC9B;;AAEA;AACA,OAAO,SAASU,aAAaA,CAACL,OAAe,EAAU;EACrD,OAAO,YAAYA,OAAO,KAAK;AACjC;;AAEA;AACA,OAAO,SAASM,kBAAkBA,CAACN,OAAe,EAAU;EAC1D,OAAO,iBAAiBA,OAAO,KAAK;AACtC;;AAEA;AACA,OAAO,MAAMO,mBAAmB,GAAG,YAAY;;AAE/C;AACA,OAAO,MAAMC,oBAAoB,GAAG,aAAa;;AAEjD;AACA,OAAO,MAAMC,WAAW,GAAG,aAAa;;AAExC;AACA,OAAO,MAAMC,sBAAsB,GAAG,yBAAyB;;AAE/D;AACA,OAAO,MAAMC,aAAa,GAAG,eAAe;;AAE5C;AACA,OAAO,MAAMC,sBAAsB,GAAG,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"runtimeSchema.js","names":["versionedTypeName","exportName","version","versionedWriteTypeName","versionedSchemaName","modelName","schemaName","typesFilePath","writeTypesFilePath","TYPES_REEXPORT_PATH","SCHEMA_REEXPORT_PATH","MODELS_PATH","INTERNAL_UPGRADES_PATH","VERSIONS_PATH","VERSIONED_DOC_REF_PATH"],"sources":["runtimeSchema.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\n/** Versioned read type name: `RecordName_vN` */\nexport function versionedTypeName(exportName: string, version: number): string {\n return `${exportName}_v${version}`;\n}\n\n/** Versioned write type name: `RecordNameUpdate_vN` */\nexport function versionedWriteTypeName(exportName: string, version: number): string {\n return `${exportName}Update_v${version}`;\n}\n\n/** Versioned Zod schema name: `RecordNameSchema_vN` */\nexport function versionedSchemaName(exportName: string, version: number): string {\n return `${exportName}Schema_v${version}`;\n}\n\n/** Model constant name: `RecordNameModel` */\nexport function modelName(exportName: string): string {\n return `${exportName}Model`;\n}\n\n/** Unversioned Zod schema name: `RecordNameSchema` */\nexport function schemaName(exportName: string): string {\n return `${exportName}Schema`;\n}\n\n/** Per-version types file path: `./types_vN.js` */\nexport function typesFilePath(version: number): string {\n return `./types_v${version}.js`;\n}\n\n/** Per-version write types file path: `./writeTypes_vN.js` */\nexport function writeTypesFilePath(version: number): string {\n return `./writeTypes_v${version}.js`;\n}\n\n/** Types re-export file path: `./types.js` */\nexport const TYPES_REEXPORT_PATH = \"./types.js\";\n\n/** Schema re-export file path: `./schema.js` */\nexport const SCHEMA_REEXPORT_PATH = \"./schema.js\";\n\n/** Models file path: `./models.js` */\nexport const MODELS_PATH = \"./models.js\";\n\n/** Internal upgrades file path: `./_internal/upgrades.js` */\nexport const INTERNAL_UPGRADES_PATH = \"./_internal/upgrades.js\";\n\n/** Versions file path: `./versions.js` */\nexport const VERSIONS_PATH = \"./versions.js\";\n\n/** Versioned doc ref file path: `./versionedDocRef.js` */\nexport const VERSIONED_DOC_REF_PATH = \"./versionedDocRef.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,SAASA,iBAAiBA,CAACC,UAAkB,EAAEC,OAAe,EAAU;EAC7E,OAAO,GAAGD,UAAU,KAAKC,OAAO,EAAE;AACpC;;AAEA;AACA,OAAO,SAASC,sBAAsBA,CAACF,UAAkB,EAAEC,OAAe,EAAU;EAClF,OAAO,GAAGD,UAAU,WAAWC,OAAO,EAAE;AAC1C;;AAEA;AACA,OAAO,SAASE,mBAAmBA,CAACH,UAAkB,EAAEC,OAAe,EAAU;EAC/E,OAAO,GAAGD,UAAU,WAAWC,OAAO,EAAE;AAC1C;;AAEA;AACA,OAAO,SAASG,SAASA,CAACJ,UAAkB,EAAU;EACpD,OAAO,GAAGA,UAAU,OAAO;AAC7B;;AAEA;AACA,OAAO,SAASK,UAAUA,CAACL,UAAkB,EAAU;EACrD,OAAO,GAAGA,UAAU,QAAQ;AAC9B;;AAEA;AACA,OAAO,SAASM,aAAaA,CAACL,OAAe,EAAU;EACrD,OAAO,YAAYA,OAAO,KAAK;AACjC;;AAEA;AACA,OAAO,SAASM,kBAAkBA,CAACN,OAAe,EAAU;EAC1D,OAAO,iBAAiBA,OAAO,KAAK;AACtC;;AAEA;AACA,OAAO,MAAMO,mBAAmB,GAAG,YAAY;;AAE/C;AACA,OAAO,MAAMC,oBAAoB,GAAG,aAAa;;AAEjD;AACA,OAAO,MAAMC,WAAW,GAAG,aAAa;;AAExC;AACA,OAAO,MAAMC,sBAAsB,GAAG,yBAAyB;;AAE/D;AACA,OAAO,MAAMC,aAAa,GAAG,eAAe;;AAE5C;AACA,OAAO,MAAMC,sBAAsB,GAAG,sBAAsB","ignoreList":[]}
@@ -0,0 +1,111 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { consola } from "consola";
18
+ import fs from "fs-extra";
19
+ import path from "path";
20
+ import { generateIndexFromChain } from "./generateIndexFromSchema.js";
21
+ import { generateInternalFromChain } from "./generateInternalFromSchema.js";
22
+ import { generateModelMetadataFromChain } from "./generateModelMetadataFromSchema.js";
23
+ import { generateScopeFromChain } from "./generateScopeFromSchema.js";
24
+ import { generateVersionedTypesFromChain } from "./generateVersionedTypesFromSchema.js";
25
+ import { generateVersionedZodFromChain } from "./generateVersionedZodFromSchema.js";
26
+ import { generateVersionsFromChain } from "./generateVersionsFromSchema.js";
27
+ /**
28
+ * Generate every versioned SDK output file from a resolved IR chain and write
29
+ * them to `outputDir`.
30
+ */
31
+ export async function writeAllSdkFiles(resolved, outputDir, minSupportedVersion) {
32
+ await fs.ensureDir(outputDir);
33
+
34
+ // Versioned types
35
+ consola.info("Generating versioned types...");
36
+ const types = generateVersionedTypesFromChain(resolved, minSupportedVersion);
37
+ for (const [version, content] of types.readTypes) {
38
+ const filePath = path.join(outputDir, `types_v${version}.ts`);
39
+ await fs.writeFile(filePath, content, "utf8");
40
+ consola.success(`Generated read types: ${filePath}`);
41
+ }
42
+ for (const [version, content] of types.writeTypes) {
43
+ const filePath = path.join(outputDir, `writeTypes_v${version}.ts`);
44
+ await fs.writeFile(filePath, content, "utf8");
45
+ consola.success(`Generated write types: ${filePath}`);
46
+ }
47
+ const typesPath = path.join(outputDir, "types.ts");
48
+ await fs.writeFile(typesPath, types.typesReExport, "utf8");
49
+ consola.success(`Generated types re-export: ${typesPath}`);
50
+
51
+ // Versioned Zod
52
+ consola.info("Generating versioned Zod schemas...");
53
+ const zod = generateVersionedZodFromChain(resolved, minSupportedVersion);
54
+ for (const [version, content] of zod.zodSchemas) {
55
+ const filePath = path.join(outputDir, `schema_v${version}.ts`);
56
+ await fs.writeFile(filePath, content, "utf8");
57
+ consola.success(`Generated Zod schema: ${filePath}`);
58
+ }
59
+ const schemaPath = path.join(outputDir, "schema.ts");
60
+ await fs.writeFile(schemaPath, zod.schemaReExport, "utf8");
61
+ consola.success(`Generated schema re-export: ${schemaPath}`);
62
+
63
+ // Internal
64
+ consola.info("Generating internal types and upgrades...");
65
+ const internal = generateInternalFromChain(resolved);
66
+ const internalDir = path.join(outputDir, "_internal");
67
+ await fs.ensureDir(internalDir);
68
+ await fs.writeFile(path.join(internalDir, "types.ts"), internal.internalTypes, "utf8");
69
+ consola.success(`Generated internal types: ${path.join(internalDir, "types.ts")}`);
70
+ await fs.writeFile(path.join(internalDir, "upgrades.ts"), internal.upgrades, "utf8");
71
+ consola.success(`Generated upgrades: ${path.join(internalDir, "upgrades.ts")}`);
72
+ await fs.writeFile(path.join(internalDir, "schema.ts"), internal.internalSchema, "utf8");
73
+ consola.success(`Generated internal schema: ${path.join(internalDir, "schema.ts")}`);
74
+
75
+ // versions.ts
76
+ consola.info("Generating version types...");
77
+ const versionsContent = generateVersionsFromChain(resolved, minSupportedVersion);
78
+ const versionsPath = path.join(outputDir, "versions.ts");
79
+ await fs.writeFile(versionsPath, versionsContent, "utf8");
80
+ consola.success(`Generated versions: ${versionsPath}`);
81
+
82
+ // index.ts
83
+ consola.info("Generating index barrel export...");
84
+ const indexContent = generateIndexFromChain(resolved, minSupportedVersion);
85
+ const indexPath = path.join(outputDir, "index.ts");
86
+ await fs.writeFile(indexPath, indexContent, "utf8");
87
+ consola.success(`Generated index: ${indexPath}`);
88
+
89
+ // models.ts
90
+ consola.info("Generating model metadata...");
91
+ const modelMetadata = generateModelMetadataFromChain(resolved, minSupportedVersion);
92
+ const modelsPath = path.join(outputDir, "models.ts");
93
+ await fs.writeFile(modelsPath, modelMetadata.modelsFile, "utf8");
94
+ consola.success(`Generated models: ${modelsPath}`);
95
+
96
+ // versionedDocRef.ts
97
+ consola.info("Generating versioned document ref types...");
98
+ const versionedDocRefContent = generateScopeFromChain(resolved, minSupportedVersion);
99
+ const versionedDocRefPath = path.join(outputDir, "versionedDocRef.ts");
100
+ await fs.writeFile(versionedDocRefPath, versionedDocRefContent, "utf8");
101
+ consola.success(`Generated versioned doc ref: ${versionedDocRefPath}`);
102
+ }
103
+ export function parseMinVersion(minVersion) {
104
+ if (minVersion == null) return undefined;
105
+ const parsed = parseInt(minVersion, 10);
106
+ if (isNaN(parsed)) {
107
+ throw new Error(`--min-version must be a valid integer, got: "${minVersion}"`);
108
+ }
109
+ return parsed;
110
+ }
111
+ //# sourceMappingURL=writeAllSdkFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeAllSdkFiles.js","names":["consola","fs","path","generateIndexFromChain","generateInternalFromChain","generateModelMetadataFromChain","generateScopeFromChain","generateVersionedTypesFromChain","generateVersionedZodFromChain","generateVersionsFromChain","writeAllSdkFiles","resolved","outputDir","minSupportedVersion","ensureDir","info","types","version","content","readTypes","filePath","join","writeFile","success","writeTypes","typesPath","typesReExport","zod","zodSchemas","schemaPath","schemaReExport","internal","internalDir","internalTypes","upgrades","internalSchema","versionsContent","versionsPath","indexContent","indexPath","modelMetadata","modelsPath","modelsFile","versionedDocRefContent","versionedDocRefPath","parseMinVersion","minVersion","undefined","parsed","parseInt","isNaN","Error"],"sources":["writeAllSdkFiles.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 { consola } from \"consola\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport { generateIndexFromChain } from \"./generateIndexFromSchema.js\";\nimport { generateInternalFromChain } from \"./generateInternalFromSchema.js\";\nimport { generateModelMetadataFromChain } from \"./generateModelMetadataFromSchema.js\";\nimport { generateScopeFromChain } from \"./generateScopeFromSchema.js\";\nimport { generateVersionedTypesFromChain } from \"./generateVersionedTypesFromSchema.js\";\nimport { generateVersionedZodFromChain } from \"./generateVersionedZodFromSchema.js\";\nimport { generateVersionsFromChain } from \"./generateVersionsFromSchema.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\n\n/**\n * Generate every versioned SDK output file from a resolved IR chain and write\n * them to `outputDir`.\n */\nexport async function writeAllSdkFiles(\n resolved: ResolvedIrChain,\n outputDir: string,\n minSupportedVersion: number | undefined,\n): Promise<void> {\n await fs.ensureDir(outputDir);\n\n // Versioned types\n consola.info(\"Generating versioned types...\");\n const types = generateVersionedTypesFromChain(resolved, minSupportedVersion);\n for (const [version, content] of types.readTypes) {\n const filePath = path.join(outputDir, `types_v${version}.ts`);\n await fs.writeFile(filePath, content, \"utf8\");\n consola.success(`Generated read types: ${filePath}`);\n }\n for (const [version, content] of types.writeTypes) {\n const filePath = path.join(outputDir, `writeTypes_v${version}.ts`);\n await fs.writeFile(filePath, content, \"utf8\");\n consola.success(`Generated write types: ${filePath}`);\n }\n const typesPath = path.join(outputDir, \"types.ts\");\n await fs.writeFile(typesPath, types.typesReExport, \"utf8\");\n consola.success(`Generated types re-export: ${typesPath}`);\n\n // Versioned Zod\n consola.info(\"Generating versioned Zod schemas...\");\n const zod = generateVersionedZodFromChain(resolved, minSupportedVersion);\n for (const [version, content] of zod.zodSchemas) {\n const filePath = path.join(outputDir, `schema_v${version}.ts`);\n await fs.writeFile(filePath, content, \"utf8\");\n consola.success(`Generated Zod schema: ${filePath}`);\n }\n const schemaPath = path.join(outputDir, \"schema.ts\");\n await fs.writeFile(schemaPath, zod.schemaReExport, \"utf8\");\n consola.success(`Generated schema re-export: ${schemaPath}`);\n\n // Internal\n consola.info(\"Generating internal types and upgrades...\");\n const internal = generateInternalFromChain(resolved);\n const internalDir = path.join(outputDir, \"_internal\");\n await fs.ensureDir(internalDir);\n await fs.writeFile(path.join(internalDir, \"types.ts\"), internal.internalTypes, \"utf8\");\n consola.success(`Generated internal types: ${path.join(internalDir, \"types.ts\")}`);\n await fs.writeFile(path.join(internalDir, \"upgrades.ts\"), internal.upgrades, \"utf8\");\n consola.success(`Generated upgrades: ${path.join(internalDir, \"upgrades.ts\")}`);\n await fs.writeFile(path.join(internalDir, \"schema.ts\"), internal.internalSchema, \"utf8\");\n consola.success(`Generated internal schema: ${path.join(internalDir, \"schema.ts\")}`);\n\n // versions.ts\n consola.info(\"Generating version types...\");\n const versionsContent = generateVersionsFromChain(resolved, minSupportedVersion);\n const versionsPath = path.join(outputDir, \"versions.ts\");\n await fs.writeFile(versionsPath, versionsContent, \"utf8\");\n consola.success(`Generated versions: ${versionsPath}`);\n\n // index.ts\n consola.info(\"Generating index barrel export...\");\n const indexContent = generateIndexFromChain(resolved, minSupportedVersion);\n const indexPath = path.join(outputDir, \"index.ts\");\n await fs.writeFile(indexPath, indexContent, \"utf8\");\n consola.success(`Generated index: ${indexPath}`);\n\n // models.ts\n consola.info(\"Generating model metadata...\");\n const modelMetadata = generateModelMetadataFromChain(resolved, minSupportedVersion);\n const modelsPath = path.join(outputDir, \"models.ts\");\n await fs.writeFile(modelsPath, modelMetadata.modelsFile, \"utf8\");\n consola.success(`Generated models: ${modelsPath}`);\n\n // versionedDocRef.ts\n consola.info(\"Generating versioned document ref types...\");\n const versionedDocRefContent = generateScopeFromChain(resolved, minSupportedVersion);\n const versionedDocRefPath = path.join(outputDir, \"versionedDocRef.ts\");\n await fs.writeFile(versionedDocRefPath, versionedDocRefContent, \"utf8\");\n consola.success(`Generated versioned doc ref: ${versionedDocRefPath}`);\n}\n\nexport function parseMinVersion(minVersion: string | undefined): number | undefined {\n if (minVersion == null) return undefined;\n const parsed = parseInt(minVersion, 10);\n if (isNaN(parsed)) {\n throw new Error(`--min-version must be a valid integer, got: \"${minVersion}\"`);\n }\n return parsed;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"arrayFields.js","names":[],"sources":["arrayFields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\n\nexport interface Container {\n readonly items: readonly string[];\n readonly numbers: readonly number[];\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"arrayFields.js","names":[],"sources":["arrayFields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\n\nexport interface Container {\n readonly items: readonly string[];\n readonly numbers: readonly number[];\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */
2
2
 
3
3
  /**
4
4
  * A cat
@@ -1 +1 @@
1
- {"version":3,"file":"customDiscriminant.js","names":["isAnimalCat","value","kind","isAnimalDog"],"sources":["customDiscriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\n\n/**\n * A cat\n */\nexport interface Cat {\n readonly meow: string;\n readonly whiskers: number;\n}\n\n/**\n * A dog\n */\nexport interface Dog {\n readonly bark: string;\n readonly tailWags: number;\n}\n\nexport interface AnimalCat extends Cat {\n readonly kind: \"cat\";\n}\n\nexport interface AnimalDog extends Dog {\n readonly kind: \"dog\";\n}\n\nexport type Animal = AnimalCat | AnimalDog;\n\nexport function isAnimalCat(value: Animal): value is AnimalCat {\n return value.kind === \"cat\";\n}\n\nexport function isAnimalDog(value: Animal): value is AnimalDog {\n return value.kind === \"dog\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAgBA,OAAO,SAASA,WAAWA,CAACC,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B;AAEA,OAAO,SAASC,WAAWA,CAACF,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B","ignoreList":[]}
1
+ {"version":3,"file":"customDiscriminant.js","names":["isAnimalCat","value","kind","isAnimalDog"],"sources":["customDiscriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\n\n/**\n * A cat\n */\nexport interface Cat {\n readonly meow: string;\n readonly whiskers: number;\n}\n\n/**\n * A dog\n */\nexport interface Dog {\n readonly bark: string;\n readonly tailWags: number;\n}\n\nexport interface AnimalCat extends Cat {\n readonly kind: \"cat\";\n}\n\nexport interface AnimalDog extends Dog {\n readonly kind: \"dog\";\n}\n\nexport type Animal = AnimalCat | AnimalDog;\n\nexport function isAnimalCat(value: Animal): value is AnimalCat {\n return value.kind === \"cat\";\n}\n\nexport function isAnimalDog(value: Animal): value is AnimalDog {\n return value.kind === \"dog\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAgBA,OAAO,SAASA,WAAWA,CAACC,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B;AAEA,OAAO,SAASC,WAAWA,CAACF,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */
2
2
 
3
3
  /**
4
4
  * Represents an edge in a graph
@@ -1 +1 @@
1
- {"version":3,"file":"generateTypeScriptInterfaces.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["generateTypeScriptInterfaces.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\n\n/**\n * Represents an edge in a graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly label?: string;\n readonly color?: string;\n}\n\n/**\n * Represents a text box in a graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"text-box\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"text-box\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAiBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,UAAU;AAClC","ignoreList":[]}
1
+ {"version":3,"file":"generateTypeScriptInterfaces.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["generateTypeScriptInterfaces.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\n\n/**\n * Represents an edge in a graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly label?: string;\n readonly color?: string;\n}\n\n/**\n * Represents a text box in a graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"text-box\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"text-box\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAiBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,UAAU;AAClC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"refTypes.js","names":[],"sources":["refTypes.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\nimport type { DocumentRef, MediaRef, ObjectRef, UserRef } from \"@palantir/pack.document-schema.model-types\";\n\n/**\n * A record containing all reference types\n */\nexport interface Document {\n readonly id: string;\n readonly docRef: DocumentRef;\n readonly userRef: UserRef;\n readonly objectRef: ObjectRef;\n readonly mediaRef: MediaRef;\n readonly optionalDocRef?: DocumentRef;\n readonly docRefArray: readonly DocumentRef[];\n readonly userRefArray: readonly UserRef[];\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"refTypes.js","names":[],"sources":["refTypes.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\nimport type { DocumentRef, MediaRef, ObjectRef, UserRef } from \"@palantir/pack.document-schema.model-types\";\n\n/**\n * A record containing all reference types\n */\nexport interface Document {\n readonly id: string;\n readonly docRef: DocumentRef;\n readonly userRef: UserRef;\n readonly objectRef: ObjectRef;\n readonly mediaRef: MediaRef;\n readonly optionalDocRef?: DocumentRef;\n readonly docRefArray: readonly DocumentRef[];\n readonly userRefArray: readonly UserRef[];\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"simpleRecord.js","names":[],"sources":["simpleRecord.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\n\n/**\n * A person record\n */\nexport interface Person {\n readonly name: string;\n readonly age: number;\n readonly email?: string;\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"simpleRecord.js","names":[],"sources":["simpleRecord.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\n\n/**\n * A person record\n */\nexport interface Person {\n readonly name: string;\n readonly age: number;\n readonly email?: string;\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */
2
2
 
3
3
  /**
4
4
  * A node in the graph
@@ -1 +1 @@
1
- {"version":3,"file":"simpleSteps.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["simpleSteps.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.9.0 */\n\n\n/**\n * A node in the graph\n */\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly object: string;\n readonly label?: string;\n readonly edges: readonly Edge[];\n}\n\n/**\n * A text box in the graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\n/**\n * An edge in the graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"textBox\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"textBox\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AASA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,SAAS;AACjC","ignoreList":[]}
1
+ {"version":3,"file":"simpleSteps.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["simpleSteps.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.10.0 */\n\n\n/**\n * A node in the graph\n */\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly object: string;\n readonly label?: string;\n readonly edges: readonly Edge[];\n}\n\n/**\n * A text box in the graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\n/**\n * An edge in the graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"textBox\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"textBox\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AASA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,SAAS;AACjC","ignoreList":[]}