@palantir/pack.document-schema.type-gen 0.10.0 → 0.12.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 (111) hide show
  1. package/build/esm/commands/asset/assetDeployHandler.js +1 -1
  2. package/build/esm/commands/asset/assetDeployHandler.js.map +1 -1
  3. package/build/esm/commands/asset/assetUpdateSchemaHandler.js +84 -0
  4. package/build/esm/commands/asset/assetUpdateSchemaHandler.js.map +1 -0
  5. package/build/esm/commands/asset/registerAssetCommands.js +2 -0
  6. package/build/esm/commands/asset/registerAssetCommands.js.map +1 -1
  7. package/build/esm/commands/ir/irGenAssetHandler.js +81 -12
  8. package/build/esm/commands/ir/irGenAssetHandler.js.map +1 -1
  9. package/build/esm/commands/ir/irGenTypesHandler.js +4 -2
  10. package/build/esm/commands/ir/irGenTypesHandler.js.map +1 -1
  11. package/build/esm/commands/ir/registerIrCommands.js +2 -2
  12. package/build/esm/commands/ir/registerIrCommands.js.map +1 -1
  13. package/build/esm/commands/schema/__tests__/readPackConfig.test.js +112 -0
  14. package/build/esm/commands/schema/__tests__/readPackConfig.test.js.map +1 -0
  15. package/build/esm/commands/schema/registerSchemaCommands.js +1 -1
  16. package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
  17. package/build/esm/commands/schema/schemaIrHandler.js +77 -11
  18. package/build/esm/commands/schema/schemaIrHandler.js.map +1 -1
  19. package/build/esm/commands/types.js.map +1 -1
  20. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
  21. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
  22. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
  23. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
  24. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
  25. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
  26. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
  27. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
  28. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
  29. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
  30. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
  31. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
  32. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
  33. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
  34. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
  35. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
  36. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
  37. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
  38. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
  39. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
  40. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
  41. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
  42. package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js +9 -0
  43. package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js.map +1 -0
  44. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -1
  45. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -1
  46. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -1
  47. package/build/esm/utils/schema/__tests__/fixtures.js +2 -8
  48. package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -1
  49. package/build/esm/utils/schema/__tests__/generateDocumentTypeFromSchema.test.js +34 -0
  50. package/build/esm/utils/schema/__tests__/generateDocumentTypeFromSchema.test.js.map +1 -0
  51. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +5 -1
  52. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -1
  53. package/build/esm/utils/schema/__tests__/snapshotUtils.js +3 -0
  54. package/build/esm/utils/schema/__tests__/snapshotUtils.js.map +1 -1
  55. package/build/esm/utils/schema/generateDocumentTypeFromSchema.js +39 -0
  56. package/build/esm/utils/schema/generateDocumentTypeFromSchema.js.map +1 -0
  57. package/build/esm/utils/schema/generateIndexFromSchema.js +9 -2
  58. package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -1
  59. package/build/esm/utils/schema/generateInternalFromSchema.js +138 -11
  60. package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -1
  61. package/build/esm/utils/schema/generateModelMetadataFromSchema.js +45 -13
  62. package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -1
  63. package/build/esm/utils/schema/resolveSchemaChain.js +32 -16
  64. package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -1
  65. package/build/esm/utils/schema/runtimeSchema.js +6 -0
  66. package/build/esm/utils/schema/runtimeSchema.js.map +1 -1
  67. package/build/esm/utils/schema/writeAllSdkFiles.js +10 -8
  68. package/build/esm/utils/schema/writeAllSdkFiles.js.map +1 -1
  69. package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
  70. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
  71. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
  72. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
  73. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
  74. package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
  75. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
  76. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
  77. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
  78. package/build/types/commands/asset/assetUpdateSchemaHandler.d.ts +12 -0
  79. package/build/types/commands/asset/assetUpdateSchemaHandler.d.ts.map +1 -0
  80. package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -1
  81. package/build/types/commands/ir/irGenAssetHandler.d.ts +16 -5
  82. package/build/types/commands/ir/irGenAssetHandler.d.ts.map +1 -1
  83. package/build/types/commands/ir/irGenTypesHandler.d.ts +0 -1
  84. package/build/types/commands/ir/irGenTypesHandler.d.ts.map +1 -1
  85. package/build/types/commands/ir/registerIrCommands.d.ts.map +1 -1
  86. package/build/types/commands/schema/__tests__/readPackConfig.test.d.ts +2 -0
  87. package/build/types/commands/schema/__tests__/readPackConfig.test.d.ts.map +1 -0
  88. package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
  89. package/build/types/commands/schema/schemaIrHandler.d.ts +28 -6
  90. package/build/types/commands/schema/schemaIrHandler.d.ts.map +1 -1
  91. package/build/types/commands/types.d.ts +3 -1
  92. package/build/types/commands/types.d.ts.map +1 -1
  93. package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -1
  94. package/build/types/utils/schema/__tests__/generateDocumentTypeFromSchema.test.d.ts +2 -0
  95. package/build/types/utils/schema/__tests__/generateDocumentTypeFromSchema.test.d.ts.map +1 -0
  96. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts +2 -0
  97. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts.map +1 -1
  98. package/build/types/utils/schema/generateDocumentTypeFromSchema.d.ts +17 -0
  99. package/build/types/utils/schema/generateDocumentTypeFromSchema.d.ts.map +1 -0
  100. package/build/types/utils/schema/generateIndexFromSchema.d.ts +4 -1
  101. package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -1
  102. package/build/types/utils/schema/generateInternalFromSchema.d.ts +5 -3
  103. package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -1
  104. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -1
  105. package/build/types/utils/schema/resolveSchemaChain.d.ts +21 -8
  106. package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -1
  107. package/build/types/utils/schema/runtimeSchema.d.ts +4 -0
  108. package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -1
  109. package/build/types/utils/schema/writeAllSdkFiles.d.ts +0 -1
  110. package/build/types/utils/schema/writeAllSdkFiles.d.ts.map +1 -1
  111. package/package.json +4 -4
@@ -17,8 +17,8 @@
17
17
  import { formatVariantName } from "../formatVariantName.js";
18
18
  import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
19
19
  import { findExternalRefType } from "../ir/irFieldHelpers.js";
20
- import { resolveMinVersion } from "./resolveSchemaChain.js";
21
- import { INTERNAL_UPGRADES_PATH, modelName, SCHEMA_REEXPORT_PATH, schemaName, TYPES_REEXPORT_PATH } from "./runtimeSchema.js";
20
+ import { chainHasDerivedFields, resolveMinVersion } from "./resolveSchemaChain.js";
21
+ import { INTERNAL_UPGRADE_FNS_PATH, INTERNAL_UPGRADES_PATH, modelName, SCHEMA_REEXPORT_PATH, schemaName, TYPES_REEXPORT_PATH } from "./runtimeSchema.js";
22
22
  function extractExternalRefFieldTypes(record) {
23
23
  const refs = [];
24
24
  for (const field of record.fields) {
@@ -42,6 +42,7 @@ export function generateModelMetadataFromChain(resolved, minSupportedVersion) {
42
42
  minVersion
43
43
  } = resolveMinVersion(chain, minSupportedVersion);
44
44
  const latestIr = chain[chain.length - 1].ir;
45
+ const hasDerivedFields = chainHasDerivedFields(chain);
45
46
 
46
47
  // --- Generate models.ts ---
47
48
  let output = GENERATED_FILE_HEADER;
@@ -66,6 +67,7 @@ export function generateModelMetadataFromChain(resolved, minSupportedVersion) {
66
67
  const modelTypesImports = ["DocumentSchema"];
67
68
  if (recordNames.length > 0) modelTypesImports.push("RecordModel");
68
69
  if (unionNames.length > 0) modelTypesImports.push("UnionModel");
70
+ if (hasDerivedFields) modelTypesImports.push("UpgradeFns");
69
71
  output += `import type { ${modelTypesImports.sort().join(", ")} } from "@palantir/pack.document-schema.model-types";\n`;
70
72
  output += `import { Metadata } from "@palantir/pack.document-schema.model-types";\n`;
71
73
  if (allModelNames.length > 0) {
@@ -83,6 +85,11 @@ export function generateModelMetadataFromChain(resolved, minSupportedVersion) {
83
85
  if (chain.length > 1 && upgradeNames.length > 0) {
84
86
  output += `import { ${upgradeNames.join(", ")} } from "${INTERNAL_UPGRADES_PATH}";\n`;
85
87
  }
88
+
89
+ // DocumentUpgradeFns type is needed by the factory's parameter signature.
90
+ if (hasDerivedFields) {
91
+ output += `import type { DocumentUpgradeFns } from "${INTERNAL_UPGRADE_FNS_PATH}";\n`;
92
+ }
86
93
  output += "\n";
87
94
 
88
95
  // Generate model constants
@@ -149,22 +156,47 @@ export function generateModelMetadataFromChain(resolved, minSupportedVersion) {
149
156
  let upgradesBlock;
150
157
  const allUpgradeNames = [...recordNames, ...unionNames];
151
158
  if (chain.length > 1 && allUpgradeNames.length > 0) {
152
- const upgradeEntries = allUpgradeNames.map(n => ` ${n}: ${n}Upgrades,`).join("\n");
153
- upgradesBlock = ` upgrades: {\n${upgradeEntries}\n },\n`;
159
+ const upgradeEntries = allUpgradeNames.map(n => ` ${n}: ${n}Upgrades,`).join("\n");
160
+ upgradesBlock = ` upgrades: {\n${upgradeEntries}\n },\n`;
154
161
  } else {
155
162
  upgradesBlock = "";
156
163
  }
157
- output += `export const DocumentModel = {\n`;
158
- output += `${modelEntries.join(",\n")},\n`;
159
- output += ` [Metadata]: {\n`;
160
- output += ` version: ${latestVersion},\n`;
164
+
165
+ // Common metadata literal: shared between the const and factory forms.
166
+ let metadataBody = ` [Metadata]: {\n`;
167
+ metadataBody += ` version: ${latestVersion},\n`;
161
168
  if (minVersion !== latestVersion) {
162
- output += ` minSupportedVersion: ${minVersion},\n`;
169
+ metadataBody += ` minSupportedVersion: ${minVersion},\n`;
170
+ }
171
+ metadataBody += upgradesBlock;
172
+ const modelEntriesBody = modelEntries.map(e => ` ${e}`).join(",\n");
173
+ if (hasDerivedFields) {
174
+ // Factory form: schema has derived fields, so the runtime requires the app
175
+ // to supply typed upgrade functions. The factory makes this a compile-time
176
+ // requirement — apps can't get a DocumentSchema value without passing them.
177
+ output += `/**\n`;
178
+ output += ` * Construct the DocumentModel for this SDK, wiring in the typed forward\n`;
179
+ output += ` * functions the runtime needs to materialize derived fields.\n`;
180
+ output += ` */\n`;
181
+ output += `export function DocumentModel(upgradeFns: DocumentUpgradeFns): DocumentSchema {\n`;
182
+ output += ` return {\n`;
183
+ output += `${modelEntriesBody},\n`;
184
+ output += metadataBody;
185
+ output += ` upgradeFns: upgradeFns as unknown as UpgradeFns,\n`;
186
+ output += ` },\n`;
187
+ output += ` };\n`;
188
+ output += `}\n\n`;
189
+ output += `export type DocumentModel = ReturnType<typeof DocumentModel>;\n`;
190
+ } else {
191
+ // Const form: no derived fields means no upgrade functions are required.
192
+ output += `export const DocumentModel = {\n`;
193
+ output += `${modelEntriesBody},\n`;
194
+ // Const form indents one level less than the factory body.
195
+ output += metadataBody.replace(/^ {4}/gm, " ");
196
+ output += ` },\n`;
197
+ output += `} as const satisfies DocumentSchema;\n\n`;
198
+ output += `export type DocumentModel = typeof DocumentModel;\n`;
163
199
  }
164
- output += upgradesBlock;
165
- output += ` },\n`;
166
- output += `} as const satisfies DocumentSchema;\n\n`;
167
- output += `export type DocumentModel = typeof DocumentModel;\n`;
168
200
  return {
169
201
  modelsFile: output
170
202
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generateModelMetadataFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","findExternalRefType","resolveMinVersion","INTERNAL_UPGRADES_PATH","modelName","SCHEMA_REEXPORT_PATH","schemaName","TYPES_REEXPORT_PATH","extractExternalRefFieldTypes","record","refs","field","fields","refType","fieldType","push","key","generateModelMetadataFromChain","resolved","minSupportedVersion","chain","latestVersion","minVersion","latestIr","length","ir","output","recordNames","unionNames","variantNames","modelKey","modelDef","Object","entries","models","type","variantName","keys","union","variants","allModelNames","sort","modelTypesImports","join","schemaNames","map","n","upgradeNames","externalRefs","metadataFields","discriminant","formattedVariant","variantTypeName","variantMetadata","modelEntries","upgradesBlock","allUpgradeNames","upgradeEntries","modelsFile"],"sources":["generateModelMetadataFromSchema.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 { IRecordDef } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport { findExternalRefType } from \"../ir/irFieldHelpers.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\nimport { resolveMinVersion } from \"./resolveSchemaChain.js\";\nimport {\n INTERNAL_UPGRADES_PATH,\n modelName,\n SCHEMA_REEXPORT_PATH,\n schemaName,\n TYPES_REEXPORT_PATH,\n} from \"./runtimeSchema.js\";\n\nexport interface ModelMetadataOutput {\n /** models.ts content -- DocumentModel with version metadata and upgrade references */\n modelsFile: string;\n}\n\nfunction extractExternalRefFieldTypes(\n record: IRecordDef,\n): Array<[string, string]> {\n const refs: Array<[string, string]> = [];\n for (const field of record.fields) {\n const refType = findExternalRefType(field.fieldType);\n if (refType != null) {\n refs.push([field.key, refType]);\n }\n }\n return refs;\n}\n\n/**\n * Generate models.ts from an already-resolved versioned IR chain.\n */\nexport function generateModelMetadataFromChain(\n resolved: ResolvedIrChain,\n minSupportedVersion?: number,\n): ModelMetadataOutput {\n const { chain } = resolved;\n const { latestVersion, minVersion } = resolveMinVersion(chain, minSupportedVersion);\n const latestIr = chain[chain.length - 1]!.ir;\n\n // --- Generate models.ts ---\n let output = GENERATED_FILE_HEADER;\n\n // Collect model names for imports\n const recordNames: string[] = [];\n const unionNames: string[] = [];\n const variantNames: string[] = [];\n\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n recordNames.push(modelKey);\n } else if (modelDef.type === \"union\") {\n unionNames.push(modelKey);\n for (const variantName of Object.keys(modelDef.union.variants)) {\n variantNames.push(`${modelKey}${formatVariantName(variantName)}`);\n }\n }\n }\n\n const allModelNames = [...recordNames, ...unionNames, ...variantNames].sort();\n\n // Imports\n const modelTypesImports: string[] = [\"DocumentSchema\"];\n if (recordNames.length > 0) modelTypesImports.push(\"RecordModel\");\n if (unionNames.length > 0) modelTypesImports.push(\"UnionModel\");\n\n output += `import type { ${\n modelTypesImports.sort().join(\", \")\n } } from \"@palantir/pack.document-schema.model-types\";\\n`;\n output += `import { Metadata } from \"@palantir/pack.document-schema.model-types\";\\n`;\n\n if (allModelNames.length > 0) {\n output += `import type { ${allModelNames.join(\", \")} } from \"${TYPES_REEXPORT_PATH}\";\\n`;\n }\n\n // Schema imports\n const schemaNames = allModelNames.map(n => schemaName(n));\n if (schemaNames.length > 0) {\n output += `import { ${schemaNames.join(\", \")} } from \"${SCHEMA_REEXPORT_PATH}\";\\n`;\n }\n\n // Upgrade imports (only if there are upgrades)\n const upgradeNames = [...recordNames, ...unionNames].map(n => `${n}Upgrades`);\n if (chain.length > 1 && upgradeNames.length > 0) {\n output += `import { ${upgradeNames.join(\", \")} } from \"${INTERNAL_UPGRADES_PATH}\";\\n`;\n }\n\n output += \"\\n\";\n\n // Generate model constants\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n const externalRefs = extractExternalRefFieldTypes(modelDef.record);\n const metadataFields: string[] = [];\n\n if (externalRefs.length > 0) {\n const entries = externalRefs.map(([field, type]) => ` ${field}: \"${type}\",`).join(\n \"\\n\",\n );\n metadataFields.push(` externalRefFieldTypes: {\\n${entries}\\n },`);\n }\n metadataFields.push(` name: \"${modelKey}\",`);\n\n output += `export interface ${modelName(modelKey)} extends RecordModel<${modelKey}, typeof ${\n schemaName(modelKey)\n }> {}\\n`;\n output += `export const ${modelName(modelKey)}: ${modelName(modelKey)} = {\\n`;\n output += ` __type: {} as ${modelKey},\\n`;\n output += ` zodSchema: ${schemaName(modelKey)},\\n`;\n output += ` [Metadata]: {\\n${metadataFields.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n } else if (modelDef.type === \"union\") {\n const union = modelDef.union;\n const metadataFields: string[] = [];\n metadataFields.push(` discriminant: \"${union.discriminant}\",`);\n metadataFields.push(` name: \"${modelKey}\",`);\n\n output += `export interface ${modelName(modelKey)} extends UnionModel<${modelKey}, typeof ${\n schemaName(modelKey)\n }> {}\\n`;\n output += `export const ${modelName(modelKey)}: ${modelName(modelKey)} = {\\n`;\n output += ` __type: {} as ${modelKey},\\n`;\n output += ` zodSchema: ${schemaName(modelKey)},\\n`;\n output += ` [Metadata]: {\\n${metadataFields.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n\n // Generate variant models\n for (const variantName of Object.keys(union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantTypeName = `${modelKey}${formattedVariant}`;\n const variantMetadata: string[] = [];\n variantMetadata.push(` discriminant: \"${union.discriminant}\",`);\n variantMetadata.push(` name: \"${variantTypeName}\",`);\n\n output += `export interface ${\n modelName(variantTypeName)\n } extends UnionModel<${variantTypeName}, typeof ${schemaName(variantTypeName)}> {}\\n`;\n output += `export const ${modelName(variantTypeName)}: ${modelName(variantTypeName)} = {\\n`;\n output += ` __type: {} as ${variantTypeName},\\n`;\n output += ` zodSchema: ${schemaName(variantTypeName)},\\n`;\n output += ` [Metadata]: {\\n${variantMetadata.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n }\n }\n }\n\n // Generate DocumentModel\n const modelEntries: string[] = [];\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n modelEntries.push(` ${modelKey}: ${modelName(modelKey)}`);\n } else if (modelDef.type === \"union\") {\n modelEntries.push(` ${modelKey}: ${modelName(modelKey)}`);\n for (const variantName of Object.keys(modelDef.union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantTypeName = `${modelKey}${formattedVariant}`;\n modelEntries.push(` ${variantTypeName}: ${modelName(variantTypeName)}`);\n }\n }\n }\n\n // Build upgrades map (includes both record and union entries)\n let upgradesBlock: string;\n const allUpgradeNames = [...recordNames, ...unionNames];\n if (chain.length > 1 && allUpgradeNames.length > 0) {\n const upgradeEntries = allUpgradeNames.map(n => ` ${n}: ${n}Upgrades,`).join(\"\\n\");\n upgradesBlock = ` upgrades: {\\n${upgradeEntries}\\n },\\n`;\n } else {\n upgradesBlock = \"\";\n }\n\n output += `export const DocumentModel = {\\n`;\n output += `${modelEntries.join(\",\\n\")},\\n`;\n output += ` [Metadata]: {\\n`;\n output += ` version: ${latestVersion},\\n`;\n if (minVersion !== latestVersion) {\n output += ` minSupportedVersion: ${minVersion},\\n`;\n }\n output += upgradesBlock;\n output += ` },\\n`;\n output += `} as const satisfies DocumentSchema;\\n\\n`;\n output += `export type DocumentModel = typeof DocumentModel;\\n`;\n\n return { modelsFile: output };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateModelMetadataFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","findExternalRefType","chainHasDerivedFields","resolveMinVersion","INTERNAL_UPGRADE_FNS_PATH","INTERNAL_UPGRADES_PATH","modelName","SCHEMA_REEXPORT_PATH","schemaName","TYPES_REEXPORT_PATH","extractExternalRefFieldTypes","record","refs","field","fields","refType","fieldType","push","key","generateModelMetadataFromChain","resolved","minSupportedVersion","chain","latestVersion","minVersion","latestIr","length","ir","hasDerivedFields","output","recordNames","unionNames","variantNames","modelKey","modelDef","Object","entries","models","type","variantName","keys","union","variants","allModelNames","sort","modelTypesImports","join","schemaNames","map","n","upgradeNames","externalRefs","metadataFields","discriminant","formattedVariant","variantTypeName","variantMetadata","modelEntries","upgradesBlock","allUpgradeNames","upgradeEntries","metadataBody","modelEntriesBody","e","replace","modelsFile"],"sources":["generateModelMetadataFromSchema.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 { IRecordDef } from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport { findExternalRefType } from \"../ir/irFieldHelpers.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\nimport { chainHasDerivedFields, resolveMinVersion } from \"./resolveSchemaChain.js\";\nimport {\n INTERNAL_UPGRADE_FNS_PATH,\n INTERNAL_UPGRADES_PATH,\n modelName,\n SCHEMA_REEXPORT_PATH,\n schemaName,\n TYPES_REEXPORT_PATH,\n} from \"./runtimeSchema.js\";\n\nexport interface ModelMetadataOutput {\n /** models.ts content -- DocumentModel with version metadata and upgrade references */\n modelsFile: string;\n}\n\nfunction extractExternalRefFieldTypes(\n record: IRecordDef,\n): Array<[string, string]> {\n const refs: Array<[string, string]> = [];\n for (const field of record.fields) {\n const refType = findExternalRefType(field.fieldType);\n if (refType != null) {\n refs.push([field.key, refType]);\n }\n }\n return refs;\n}\n\n/**\n * Generate models.ts from an already-resolved versioned IR chain.\n */\nexport function generateModelMetadataFromChain(\n resolved: ResolvedIrChain,\n minSupportedVersion?: number,\n): ModelMetadataOutput {\n const { chain } = resolved;\n const { latestVersion, minVersion } = resolveMinVersion(chain, minSupportedVersion);\n const latestIr = chain[chain.length - 1]!.ir;\n const hasDerivedFields = chainHasDerivedFields(chain);\n\n // --- Generate models.ts ---\n let output = GENERATED_FILE_HEADER;\n\n // Collect model names for imports\n const recordNames: string[] = [];\n const unionNames: string[] = [];\n const variantNames: string[] = [];\n\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n recordNames.push(modelKey);\n } else if (modelDef.type === \"union\") {\n unionNames.push(modelKey);\n for (const variantName of Object.keys(modelDef.union.variants)) {\n variantNames.push(`${modelKey}${formatVariantName(variantName)}`);\n }\n }\n }\n\n const allModelNames = [...recordNames, ...unionNames, ...variantNames].sort();\n\n // Imports\n const modelTypesImports: string[] = [\"DocumentSchema\"];\n if (recordNames.length > 0) modelTypesImports.push(\"RecordModel\");\n if (unionNames.length > 0) modelTypesImports.push(\"UnionModel\");\n if (hasDerivedFields) modelTypesImports.push(\"UpgradeFns\");\n\n output += `import type { ${\n modelTypesImports.sort().join(\", \")\n } } from \"@palantir/pack.document-schema.model-types\";\\n`;\n output += `import { Metadata } from \"@palantir/pack.document-schema.model-types\";\\n`;\n\n if (allModelNames.length > 0) {\n output += `import type { ${allModelNames.join(\", \")} } from \"${TYPES_REEXPORT_PATH}\";\\n`;\n }\n\n // Schema imports\n const schemaNames = allModelNames.map(n => schemaName(n));\n if (schemaNames.length > 0) {\n output += `import { ${schemaNames.join(\", \")} } from \"${SCHEMA_REEXPORT_PATH}\";\\n`;\n }\n\n // Upgrade imports (only if there are upgrades)\n const upgradeNames = [...recordNames, ...unionNames].map(n => `${n}Upgrades`);\n if (chain.length > 1 && upgradeNames.length > 0) {\n output += `import { ${upgradeNames.join(\", \")} } from \"${INTERNAL_UPGRADES_PATH}\";\\n`;\n }\n\n // DocumentUpgradeFns type is needed by the factory's parameter signature.\n if (hasDerivedFields) {\n output += `import type { DocumentUpgradeFns } from \"${INTERNAL_UPGRADE_FNS_PATH}\";\\n`;\n }\n\n output += \"\\n\";\n\n // Generate model constants\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n const externalRefs = extractExternalRefFieldTypes(modelDef.record);\n const metadataFields: string[] = [];\n\n if (externalRefs.length > 0) {\n const entries = externalRefs.map(([field, type]) => ` ${field}: \"${type}\",`).join(\n \"\\n\",\n );\n metadataFields.push(` externalRefFieldTypes: {\\n${entries}\\n },`);\n }\n metadataFields.push(` name: \"${modelKey}\",`);\n\n output += `export interface ${modelName(modelKey)} extends RecordModel<${modelKey}, typeof ${\n schemaName(modelKey)\n }> {}\\n`;\n output += `export const ${modelName(modelKey)}: ${modelName(modelKey)} = {\\n`;\n output += ` __type: {} as ${modelKey},\\n`;\n output += ` zodSchema: ${schemaName(modelKey)},\\n`;\n output += ` [Metadata]: {\\n${metadataFields.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n } else if (modelDef.type === \"union\") {\n const union = modelDef.union;\n const metadataFields: string[] = [];\n metadataFields.push(` discriminant: \"${union.discriminant}\",`);\n metadataFields.push(` name: \"${modelKey}\",`);\n\n output += `export interface ${modelName(modelKey)} extends UnionModel<${modelKey}, typeof ${\n schemaName(modelKey)\n }> {}\\n`;\n output += `export const ${modelName(modelKey)}: ${modelName(modelKey)} = {\\n`;\n output += ` __type: {} as ${modelKey},\\n`;\n output += ` zodSchema: ${schemaName(modelKey)},\\n`;\n output += ` [Metadata]: {\\n${metadataFields.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n\n // Generate variant models\n for (const variantName of Object.keys(union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantTypeName = `${modelKey}${formattedVariant}`;\n const variantMetadata: string[] = [];\n variantMetadata.push(` discriminant: \"${union.discriminant}\",`);\n variantMetadata.push(` name: \"${variantTypeName}\",`);\n\n output += `export interface ${\n modelName(variantTypeName)\n } extends UnionModel<${variantTypeName}, typeof ${schemaName(variantTypeName)}> {}\\n`;\n output += `export const ${modelName(variantTypeName)}: ${modelName(variantTypeName)} = {\\n`;\n output += ` __type: {} as ${variantTypeName},\\n`;\n output += ` zodSchema: ${schemaName(variantTypeName)},\\n`;\n output += ` [Metadata]: {\\n${variantMetadata.join(\"\\n\")}\\n },\\n`;\n output += `};\\n\\n`;\n }\n }\n }\n\n // Generate DocumentModel\n const modelEntries: string[] = [];\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type === \"record\") {\n modelEntries.push(` ${modelKey}: ${modelName(modelKey)}`);\n } else if (modelDef.type === \"union\") {\n modelEntries.push(` ${modelKey}: ${modelName(modelKey)}`);\n for (const variantName of Object.keys(modelDef.union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n const variantTypeName = `${modelKey}${formattedVariant}`;\n modelEntries.push(` ${variantTypeName}: ${modelName(variantTypeName)}`);\n }\n }\n }\n\n // Build upgrades map (includes both record and union entries)\n let upgradesBlock: string;\n const allUpgradeNames = [...recordNames, ...unionNames];\n if (chain.length > 1 && allUpgradeNames.length > 0) {\n const upgradeEntries = allUpgradeNames.map(n => ` ${n}: ${n}Upgrades,`).join(\"\\n\");\n upgradesBlock = ` upgrades: {\\n${upgradeEntries}\\n },\\n`;\n } else {\n upgradesBlock = \"\";\n }\n\n // Common metadata literal: shared between the const and factory forms.\n let metadataBody = ` [Metadata]: {\\n`;\n metadataBody += ` version: ${latestVersion},\\n`;\n if (minVersion !== latestVersion) {\n metadataBody += ` minSupportedVersion: ${minVersion},\\n`;\n }\n metadataBody += upgradesBlock;\n\n const modelEntriesBody = modelEntries.map(e => ` ${e}`).join(\",\\n\");\n\n if (hasDerivedFields) {\n // Factory form: schema has derived fields, so the runtime requires the app\n // to supply typed upgrade functions. The factory makes this a compile-time\n // requirement — apps can't get a DocumentSchema value without passing them.\n output += `/**\\n`;\n output += ` * Construct the DocumentModel for this SDK, wiring in the typed forward\\n`;\n output += ` * functions the runtime needs to materialize derived fields.\\n`;\n output += ` */\\n`;\n output += `export function DocumentModel(upgradeFns: DocumentUpgradeFns): DocumentSchema {\\n`;\n output += ` return {\\n`;\n output += `${modelEntriesBody},\\n`;\n output += metadataBody;\n output += ` upgradeFns: upgradeFns as unknown as UpgradeFns,\\n`;\n output += ` },\\n`;\n output += ` };\\n`;\n output += `}\\n\\n`;\n output += `export type DocumentModel = ReturnType<typeof DocumentModel>;\\n`;\n } else {\n // Const form: no derived fields means no upgrade functions are required.\n output += `export const DocumentModel = {\\n`;\n output += `${modelEntriesBody},\\n`;\n // Const form indents one level less than the factory body.\n output += metadataBody.replace(/^ {4}/gm, \" \");\n output += ` },\\n`;\n output += `} as const satisfies DocumentSchema;\\n\\n`;\n output += `export type DocumentModel = typeof DocumentModel;\\n`;\n }\n\n return { modelsFile: output };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,22 +16,20 @@
16
16
 
17
17
  import { convertSchemaToIr } from "../steps/convertStepsToIr.js";
18
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
- */
19
+ /** JSON-serializable form of a single field migration. */
24
20
 
25
21
  /** Serialized migrations keyed by `[recordModelName][fieldName]`. */
26
22
 
27
- function collectVersionedIrChain(input) {
23
+ function collectVersionedIrChain(input, identity) {
28
24
  const chain = [];
29
25
  let current = input;
30
26
  while (current.type === "versioned") {
31
27
  chain.unshift({
32
28
  version: current.version,
33
29
  ir: convertSchemaToIr(current.models, {
34
- version: current.version
30
+ version: current.version,
31
+ name: identity.name,
32
+ description: identity.description
35
33
  }),
36
34
  migrations: serializeMigrations(current.migrations)
37
35
  });
@@ -40,16 +38,15 @@ function collectVersionedIrChain(input) {
40
38
  chain.unshift({
41
39
  version: current.version,
42
40
  ir: convertSchemaToIr(current.models, {
43
- version: current.version
41
+ version: current.version,
42
+ name: identity.name,
43
+ description: identity.description
44
44
  })
45
45
  });
46
46
  return chain;
47
47
  }
48
48
 
49
- /**
50
- * Capture each `forward` callback as its source string so the migrations object
51
- * is plain JSON-serializable data.
52
- */
49
+ /** Convert schema-builder migrations to their JSON-serializable form. */
53
50
  function serializeMigrations(migrations) {
54
51
  if (migrations == null) return undefined;
55
52
  const result = {};
@@ -57,8 +54,7 @@ function serializeMigrations(migrations) {
57
54
  const fieldEntries = {};
58
55
  for (const [fieldName, migration] of Object.entries(fields)) {
59
56
  fieldEntries[fieldName] = {
60
- derivedFrom: [...migration.derivedFrom],
61
- forwardSource: migration.forward.toString()
57
+ derivedFrom: [...migration.derivedFrom]
62
58
  };
63
59
  }
64
60
  result[modelKey] = fieldEntries;
@@ -87,10 +83,13 @@ export function resolveMinVersion(chain, minSupportedVersion) {
87
83
  /**
88
84
  * Collect the version chain and resolve min/latest versions.
89
85
  * Each version's models are converted to IR (IRealTimeDocumentSchema).
86
+ * `identity.name` / `identity.description` are embedded into each chain entry's
87
+ * IR; when omitted (e.g. test callers), `convertSchemaToIr` falls back to its
88
+ * defaults.
90
89
  * Throws on empty chain or invalid minSupportedVersion.
91
90
  */
92
- export function resolveSchemaChain(schema, minSupportedVersion) {
93
- const chain = collectVersionedIrChain(schema);
91
+ export function resolveSchemaChain(schema, minSupportedVersion, identity = {}) {
92
+ const chain = collectVersionedIrChain(schema, identity);
94
93
  const {
95
94
  latestVersion,
96
95
  minVersion
@@ -101,4 +100,21 @@ export function resolveSchemaChain(schema, minSupportedVersion) {
101
100
  minVersion
102
101
  };
103
102
  }
103
+
104
+ /**
105
+ * True if any migration in the chain declares a non-empty `derivedFrom`. Drives
106
+ * whether the generated SDK emits `DocumentModel` as a factory (requires the
107
+ * app to supply typed upgrade functions) or as a const (no upgrade functions needed).
108
+ */
109
+ export function chainHasDerivedFields(chain) {
110
+ for (const entry of chain) {
111
+ if (entry.migrations == null) continue;
112
+ for (const recordMigrations of Object.values(entry.migrations)) {
113
+ for (const fieldMigration of Object.values(recordMigrations)) {
114
+ if (fieldMigration.derivedFrom.length > 0) return true;
115
+ }
116
+ }
117
+ }
118
+ return false;
119
+ }
104
120
  //# sourceMappingURL=resolveSchemaChain.js.map
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"file":"resolveSchemaChain.js","names":["convertSchemaToIr","collectVersionedIrChain","input","identity","chain","current","type","unshift","version","ir","models","name","description","migrations","serializeMigrations","previous","undefined","result","modelKey","fields","Object","entries","fieldEntries","fieldName","migration","derivedFrom","resolveMinVersion","minSupportedVersion","length","Error","latestVersion","some","c","map","join","minVersion","resolveSchemaChain","schema","chainHasDerivedFields","entry","recordMigrations","values","fieldMigration"],"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/** JSON-serializable form of a single field migration. */\nexport interface SerializedFieldMigration {\n readonly derivedFrom: readonly 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\nexport interface IrChainPayload {\n __comment?: string;\n latestVersion: number;\n minSupportedVersion?: number;\n chain: VersionedIrEntry[];\n}\n\nexport interface SchemaIdentity {\n readonly name?: string;\n readonly description?: string;\n}\n\nfunction collectVersionedIrChain(\n input: SchemaDefinition,\n identity: SchemaIdentity,\n): 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, {\n version: current.version,\n name: identity.name,\n description: identity.description,\n }),\n migrations: serializeMigrations(current.migrations),\n });\n current = current.previous;\n }\n chain.unshift({\n version: current.version,\n ir: convertSchemaToIr(current.models, {\n version: current.version,\n name: identity.name,\n description: identity.description,\n }),\n });\n\n return chain;\n}\n\n/** Convert schema-builder migrations to their JSON-serializable form. */\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 };\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 * `identity.name` / `identity.description` are embedded into each chain entry's\n * IR; when omitted (e.g. test callers), `convertSchemaToIr` falls back to its\n * defaults.\n * Throws on empty chain or invalid minSupportedVersion.\n */\nexport function resolveSchemaChain(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n identity: SchemaIdentity = {},\n): ResolvedIrChain {\n const chain = collectVersionedIrChain(schema, identity);\n const { latestVersion, minVersion } = resolveMinVersion(chain, minSupportedVersion);\n return { chain, latestVersion, minVersion };\n}\n\n/**\n * True if any migration in the chain declares a non-empty `derivedFrom`. Drives\n * whether the generated SDK emits `DocumentModel` as a factory (requires the\n * app to supply typed upgrade functions) or as a const (no upgrade functions needed).\n */\nexport function chainHasDerivedFields(chain: VersionedIrEntry[]): boolean {\n for (const entry of chain) {\n if (entry.migrations == null) continue;\n for (const recordMigrations of Object.values(entry.migrations)) {\n for (const fieldMigration of Object.values(recordMigrations)) {\n if (fieldMigration.derivedFrom.length > 0) return true;\n }\n }\n }\n return false;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -61,9 +61,15 @@ export const MODELS_PATH = "./models.js";
61
61
  /** Internal upgrades file path: `./_internal/upgrades.js` */
62
62
  export const INTERNAL_UPGRADES_PATH = "./_internal/upgrades.js";
63
63
 
64
+ /** Internal upgrade-functions file path: `./_internal/upgradeFns.js` */
65
+ export const INTERNAL_UPGRADE_FNS_PATH = "./_internal/upgradeFns.js";
66
+
64
67
  /** Versions file path: `./versions.js` */
65
68
  export const VERSIONS_PATH = "./versions.js";
66
69
 
67
70
  /** Versioned doc ref file path: `./versionedDocRef.js` */
68
71
  export const VERSIONED_DOC_REF_PATH = "./versionedDocRef.js";
72
+
73
+ /** Document type identity constants file path: `./documentType.js` */
74
+ export const DOCUMENT_TYPE_PATH = "./documentType.js";
69
75
  //# sourceMappingURL=runtimeSchema.js.map
@@ -1 +1 @@
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":[]}
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","INTERNAL_UPGRADE_FNS_PATH","VERSIONS_PATH","VERSIONED_DOC_REF_PATH","DOCUMENT_TYPE_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/** Internal upgrade-functions file path: `./_internal/upgradeFns.js` */\nexport const INTERNAL_UPGRADE_FNS_PATH = \"./_internal/upgradeFns.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\n/** Document type identity constants file path: `./documentType.js` */\nexport const DOCUMENT_TYPE_PATH = \"./documentType.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,yBAAyB,GAAG,2BAA2B;;AAEpE;AACA,OAAO,MAAMC,aAAa,GAAG,eAAe;;AAE5C;AACA,OAAO,MAAMC,sBAAsB,GAAG,sBAAsB;;AAE5D;AACA,OAAO,MAAMC,kBAAkB,GAAG,mBAAmB","ignoreList":[]}
@@ -17,6 +17,7 @@
17
17
  import { consola } from "consola";
18
18
  import fs from "fs-extra";
19
19
  import path from "path";
20
+ import { generateDocumentTypeFromChain } from "./generateDocumentTypeFromSchema.js";
20
21
  import { generateIndexFromChain } from "./generateIndexFromSchema.js";
21
22
  import { generateInternalFromChain } from "./generateInternalFromSchema.js";
22
23
  import { generateModelMetadataFromChain } from "./generateModelMetadataFromSchema.js";
@@ -71,6 +72,8 @@ export async function writeAllSdkFiles(resolved, outputDir, minSupportedVersion)
71
72
  consola.success(`Generated upgrades: ${path.join(internalDir, "upgrades.ts")}`);
72
73
  await fs.writeFile(path.join(internalDir, "schema.ts"), internal.internalSchema, "utf8");
73
74
  consola.success(`Generated internal schema: ${path.join(internalDir, "schema.ts")}`);
75
+ await fs.writeFile(path.join(internalDir, "upgradeFns.ts"), internal.internalUpgradeFns, "utf8");
76
+ consola.success(`Generated upgrade functions: ${path.join(internalDir, "upgradeFns.ts")}`);
74
77
 
75
78
  // versions.ts
76
79
  consola.info("Generating version types...");
@@ -99,13 +102,12 @@ export async function writeAllSdkFiles(resolved, outputDir, minSupportedVersion)
99
102
  const versionedDocRefPath = path.join(outputDir, "versionedDocRef.ts");
100
103
  await fs.writeFile(versionedDocRefPath, versionedDocRefContent, "utf8");
101
104
  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;
105
+
106
+ // documentType.ts
107
+ consola.info("Generating document type identity constants...");
108
+ const documentTypeContent = generateDocumentTypeFromChain(resolved);
109
+ const documentTypePath = path.join(outputDir, "documentType.ts");
110
+ await fs.writeFile(documentTypePath, documentTypeContent, "utf8");
111
+ consola.success(`Generated document type: ${documentTypePath}`);
110
112
  }
111
113
  //# sourceMappingURL=writeAllSdkFiles.js.map
@@ -1 +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
+ {"version":3,"file":"writeAllSdkFiles.js","names":["consola","fs","path","generateDocumentTypeFromChain","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","internalUpgradeFns","versionsContent","versionsPath","indexContent","indexPath","modelMetadata","modelsPath","modelsFile","versionedDocRefContent","versionedDocRefPath","documentTypeContent","documentTypePath"],"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 { generateDocumentTypeFromChain } from \"./generateDocumentTypeFromSchema.js\";\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 await fs.writeFile(path.join(internalDir, \"upgradeFns.ts\"), internal.internalUpgradeFns, \"utf8\");\n consola.success(`Generated upgrade functions: ${path.join(internalDir, \"upgradeFns.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 // documentType.ts\n consola.info(\"Generating document type identity constants...\");\n const documentTypeContent = generateDocumentTypeFromChain(resolved);\n const documentTypePath = path.join(outputDir, \"documentType.ts\");\n await fs.writeFile(documentTypePath, documentTypeContent, \"utf8\");\n consola.success(`Generated document type: ${documentTypePath}`);\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.10.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.12.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.10.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.12.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.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
+ {"version":3,"file":"customDiscriminant.js","names":["isAnimalCat","value","kind","isAnimalDog"],"sources":["customDiscriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.12.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.10.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.12.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.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
+ {"version":3,"file":"generateTypeScriptInterfaces.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["generateTypeScriptInterfaces.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.12.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.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
+ {"version":3,"file":"refTypes.js","names":[],"sources":["refTypes.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.12.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.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
+ {"version":3,"file":"simpleRecord.js","names":[],"sources":["simpleRecord.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.12.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.10.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.12.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.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":[]}
1
+ {"version":3,"file":"simpleSteps.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["simpleSteps.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.12.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":[]}
@@ -0,0 +1,12 @@
1
+ interface AssetUpdateSchemaOptions {
2
+ readonly input: string;
3
+ readonly baseUrl: string;
4
+ readonly auth: string;
5
+ readonly ontologyRid: string;
6
+ readonly forceOverwrite?: boolean;
7
+ readonly firstPartyPrefix?: string;
8
+ }
9
+ /** Updates the schema of an existing document type using a generated asset JSON file. */
10
+ export declare function assetUpdateSchemaHandler(options: AssetUpdateSchemaOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=assetUpdateSchemaHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetUpdateSchemaHandler.d.ts","sourceRoot":"","sources":["../../../../src/commands/asset/assetUpdateSchemaHandler.ts"],"names":[],"mappings":"AA0BA,UAAU,wBAAwB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAID,yFAAyF;AACzF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerAssetCommands.d.ts","sourceRoot":"","sources":["../../../../src/commands/asset/registerAssetCommands.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB5D"}
1
+ {"version":3,"file":"registerAssetCommands.d.ts","sourceRoot":"","sources":["../../../../src/commands/asset/registerAssetCommands.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC5D"}
@@ -3,14 +3,25 @@ interface IrGenAssetOptions {
3
3
  readonly ir: string;
4
4
  readonly output: string;
5
5
  readonly fileSystemType?: FileSystemType;
6
+ readonly compatibilityRangeOutput?: string;
6
7
  }
7
8
  /**
8
- * Generates a document type asset JSON file from an IR schema.
9
+ * Generates a document type asset JSON file (and a sibling schema
10
+ * compatibility range JSON file) from an IR schema.
9
11
  *
10
- * This command is intended for internal platform applications where the document
11
- * type asset must exist on disk so the platform can discover it and register the
12
- * document type automatically at deploy time. Most users should use `ir deploy`
13
- * to register document types via the Foundry API instead.
12
+ * The input IR may be either:
13
+ * - a chain payload `{ latestVersion, minSupportedVersion?, chain }` produced
14
+ * by `schema ir`. The latest entry's `ir` is used as the wire schema; the
15
+ * asset's `schemaVersion` is `latestVersion`; the compatibility range is
16
+ * `{ min: minSupportedVersion ?? latestVersion, max: latestVersion }`.
17
+ * - a bare single-version `IRealTimeDocumentSchema` (legacy). The compat
18
+ * range defaults to `{ min: version, max: version }` since no chain
19
+ * information is available.
20
+ *
21
+ * This command is intended for internal platform applications where the
22
+ * document type asset must exist on disk so the platform can discover it and
23
+ * register the document type automatically at deploy time. Most users should
24
+ * use `ir deploy` to register document types via the Foundry API instead.
14
25
  *
15
26
  * If you are unsure whether you need this command, you almost certainly do not.
16
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"irGenAssetHandler.d.ts","sourceRoot":"","sources":["../../../../src/commands/ir/irGenAssetHandler.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAuDlE"}
1
+ {"version":3,"file":"irGenAssetHandler.d.ts","sourceRoot":"","sources":["../../../../src/commands/ir/irGenAssetHandler.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAwDD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAmFlE"}
@@ -1,7 +1,6 @@
1
1
  interface IrGenTypesOptions {
2
2
  schema: string;
3
3
  output: string;
4
- minVersion?: string;
5
4
  }
6
5
  export declare function irGenTypesHandler(options: IrGenTypesOptions): Promise<void>;
7
6
  export {};