@palantir/pack.document-schema.type-gen 0.9.0 → 0.11.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 (156) 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/assetUpdateSchemaHandler.js +84 -0
  6. package/build/esm/commands/asset/assetUpdateSchemaHandler.js.map +1 -0
  7. package/build/esm/commands/asset/registerAssetCommands.js +3 -1
  8. package/build/esm/commands/asset/registerAssetCommands.js.map +1 -1
  9. package/build/esm/commands/ir/irGenTypesHandler.js +49 -0
  10. package/build/esm/commands/ir/irGenTypesHandler.js.map +1 -0
  11. package/build/esm/commands/ir/registerIrCommands.js +2 -0
  12. package/build/esm/commands/ir/registerIrCommands.js.map +1 -1
  13. package/build/esm/commands/schema/registerSchemaCommands.js +2 -2
  14. package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
  15. package/build/esm/commands/schema/schemaIrHandler.js +56 -0
  16. package/build/esm/commands/schema/schemaIrHandler.js.map +1 -0
  17. package/build/esm/index.js +0 -6
  18. package/build/esm/index.js.map +1 -1
  19. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
  20. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
  21. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
  22. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
  23. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
  24. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
  25. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
  26. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
  27. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
  28. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
  29. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
  30. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
  31. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
  32. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
  33. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
  34. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
  35. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
  36. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
  37. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
  38. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
  39. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
  40. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
  41. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js +23 -0
  42. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -1
  43. package/build/esm/utils/ir/irFieldHelpers.js +383 -0
  44. package/build/esm/utils/ir/irFieldHelpers.js.map +1 -0
  45. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -1
  46. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -1
  47. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -1
  48. package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js +13 -0
  49. package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js.map +1 -1
  50. package/build/esm/utils/schema/__tests__/fixtures.js +78 -13
  51. package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -1
  52. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +19 -7
  53. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -1
  54. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +12 -7
  55. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -1
  56. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +6 -5
  57. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -1
  58. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +19 -10
  59. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -1
  60. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +15 -10
  61. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -1
  62. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +6 -5
  63. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -1
  64. package/build/esm/utils/schema/__tests__/snapshotUtils.js +3 -0
  65. package/build/esm/utils/schema/__tests__/snapshotUtils.js.map +1 -1
  66. package/build/esm/utils/schema/convertSchemaToSteps.js +6 -0
  67. package/build/esm/utils/schema/convertSchemaToSteps.js.map +1 -1
  68. package/build/esm/utils/schema/generateIndexFromSchema.js +21 -14
  69. package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -1
  70. package/build/esm/utils/schema/generateInternalFromSchema.js +202 -191
  71. package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -1
  72. package/build/esm/utils/schema/generateModelMetadataFromSchema.js +89 -80
  73. package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -1
  74. package/build/esm/utils/schema/generateScopeFromSchema.js +29 -33
  75. package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -1
  76. package/build/esm/utils/schema/generateTypesFromSchema.js +9 -1
  77. package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
  78. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +61 -155
  79. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -1
  80. package/build/esm/utils/schema/generateVersionedZodFromSchema.js +58 -94
  81. package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -1
  82. package/build/esm/utils/schema/generateVersionsFromSchema.js +7 -5
  83. package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -1
  84. package/build/esm/utils/schema/loadSchemaModule.js +53 -0
  85. package/build/esm/utils/schema/loadSchemaModule.js.map +1 -0
  86. package/build/esm/utils/schema/resolveSchemaChain.js +68 -9
  87. package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -1
  88. package/build/esm/utils/schema/runtimeSchema.js +3 -27
  89. package/build/esm/utils/schema/runtimeSchema.js.map +1 -1
  90. package/build/esm/utils/schema/writeAllSdkFiles.js +113 -0
  91. package/build/esm/utils/schema/writeAllSdkFiles.js.map +1 -0
  92. package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
  93. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
  94. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
  95. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
  96. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
  97. package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
  98. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
  99. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
  100. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
  101. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js +93 -1
  102. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
  103. package/build/esm/utils/steps/convertStepsToIr.js +43 -35
  104. package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
  105. package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts +2 -0
  106. package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts.map +1 -0
  107. package/build/types/commands/asset/assetDeployHandler.d.ts +15 -0
  108. package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -1
  109. package/build/types/commands/asset/assetUpdateSchemaHandler.d.ts +12 -0
  110. package/build/types/commands/asset/assetUpdateSchemaHandler.d.ts.map +1 -0
  111. package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -1
  112. package/build/types/commands/ir/irGenTypesHandler.d.ts +8 -0
  113. package/build/types/commands/ir/irGenTypesHandler.d.ts.map +1 -0
  114. package/build/types/commands/ir/registerIrCommands.d.ts.map +1 -1
  115. package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
  116. package/build/types/commands/schema/schemaIrHandler.d.ts +19 -0
  117. package/build/types/commands/schema/schemaIrHandler.d.ts.map +1 -0
  118. package/build/types/index.d.ts +1 -6
  119. package/build/types/index.d.ts.map +1 -1
  120. package/build/types/utils/ir/irFieldHelpers.d.ts +36 -0
  121. package/build/types/utils/ir/irFieldHelpers.d.ts.map +1 -0
  122. package/build/types/utils/schema/__tests__/fixtures.d.ts +10 -1
  123. package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -1
  124. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts +2 -0
  125. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts.map +1 -1
  126. package/build/types/utils/schema/convertSchemaToSteps.d.ts.map +1 -1
  127. package/build/types/utils/schema/generateIndexFromSchema.d.ts +5 -3
  128. package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -1
  129. package/build/types/utils/schema/generateInternalFromSchema.d.ts +6 -7
  130. package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -1
  131. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +3 -8
  132. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -1
  133. package/build/types/utils/schema/generateScopeFromSchema.d.ts +2 -2
  134. package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -1
  135. package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
  136. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +4 -7
  137. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -1
  138. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +3 -7
  139. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -1
  140. package/build/types/utils/schema/generateVersionsFromSchema.d.ts +3 -3
  141. package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -1
  142. package/build/types/utils/schema/loadSchemaModule.d.ts +14 -0
  143. package/build/types/utils/schema/loadSchemaModule.d.ts.map +1 -0
  144. package/build/types/utils/schema/resolveSchemaChain.d.ts +29 -8
  145. package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -1
  146. package/build/types/utils/schema/runtimeSchema.d.ts +2 -32
  147. package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -1
  148. package/build/types/utils/schema/writeAllSdkFiles.d.ts +8 -0
  149. package/build/types/utils/schema/writeAllSdkFiles.d.ts.map +1 -0
  150. package/build/types/utils/steps/convertStepsToIr.d.ts +3 -3
  151. package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
  152. package/package.json +4 -4
  153. package/build/esm/commands/schema/schemaGenTypesHandler.js +0 -147
  154. package/build/esm/commands/schema/schemaGenTypesHandler.js.map +0 -1
  155. package/build/types/commands/schema/schemaGenTypesHandler.d.ts +0 -8
  156. package/build/types/commands/schema/schemaGenTypesHandler.d.ts.map +0 -1
@@ -70,6 +70,12 @@ function convertUnionToYaml(unionDef) {
70
70
  return result;
71
71
  }
72
72
  export function convertSchemaToSteps(schema) {
73
+ // Reject aliased schemas: the YAML step format cannot represent exportKey !== declaredName
74
+ for (const [exportKey, def] of Object.entries(schema)) {
75
+ if (exportKey !== def.name) {
76
+ throw new Error(`Schema entry "${exportKey}" has declared model name "${def.name}". ` + `The migration-step YAML format cannot represent aliases (exportKey !== declaredName). ` + `Use the same name for both, or use the IR pipeline instead.`);
77
+ }
78
+ }
73
79
  const steps = [];
74
80
  const records = {};
75
81
  const unions = {};
@@ -1 +1 @@
1
- {"version":3,"file":"convertSchemaToSteps.js","names":["yaml","convertFieldType","field","type","items","item","name","Error","convertRecordToYaml","recordDef","result","fields","docs","fieldName","fieldDef","Object","entries","fieldType","convertUnionToYaml","unionDef","variants","variantName","variantRef","discriminant","convertSchemaToSteps","schema","steps","records","unions","def","values","keys","length","push","convertStepsToYamlString","dump","flowLevel","lineWidth","noRefs","quotingType","forceQuotes","skipInvalid"],"sources":["convertSchemaToSteps.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport yaml from \"js-yaml\";\nimport type { MigrationStep, UnionDefinition } from \"../steps/parseMigrationSteps.js\";\nimport type { P } from \"./validateSchemaModule.js\";\n\nfunction convertFieldType(field: P.Type): string {\n switch (field.type) {\n case \"array\":\n return `array<${convertFieldType(field.items as P.Type)}>`;\n case \"boolean\":\n return \"boolean\";\n case \"docRef\":\n return \"docRef\";\n case \"double\":\n return \"double\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"objectRef\":\n return \"objectRef\";\n case \"optional\":\n return `optional<${convertFieldType(field.item as P.Type)}>`;\n case \"ref\":\n return field.name;\n case \"string\":\n return \"string\";\n case \"unknown\":\n return \"unknown\";\n case \"userRef\":\n return \"userRef\";\n default:\n field satisfies never;\n throw new Error(`Unsupported field type: ${(field as P.Type).type}`);\n }\n}\n\nfunction convertRecordToYaml(\n recordDef: P.RecordDef,\n): { docs?: string; fields: Record<string, string> } {\n const result: { docs?: string; fields: Record<string, string> } = {\n fields: {},\n };\n\n if (recordDef.docs) {\n result.docs = recordDef.docs;\n }\n\n for (const [fieldName, fieldDef] of Object.entries(recordDef.fields)) {\n const fieldType = convertFieldType(fieldDef);\n result.fields[fieldName] = fieldType;\n }\n\n return result;\n}\n\nfunction convertUnionToYaml(unionDef: P.UnionDef): UnionDefinition {\n const variants: Record<string, string> = {};\n\n for (const [variantName, variantRef] of Object.entries(unionDef.variants)) {\n variants[variantName] = variantRef.name;\n }\n\n const result: UnionDefinition = {\n variants,\n };\n\n if (unionDef.discriminant !== \"type\") {\n result.discriminant = unionDef.discriminant;\n }\n\n return result;\n}\n\nexport function convertSchemaToSteps(schema: P.ReturnedSchema): MigrationStep[] {\n const steps: MigrationStep[] = [];\n const records: Record<string, { docs?: string; fields: Record<string, string> }> = {};\n const unions: Record<string, UnionDefinition> = {};\n\n for (const def of Object.values(schema)) {\n switch (def.type) {\n case \"record\": {\n records[def.name] = convertRecordToYaml(def);\n break;\n }\n case \"union\": {\n unions[def.name] = convertUnionToYaml(def);\n break;\n }\n }\n }\n\n if (Object.keys(records).length > 0) {\n steps.push({ \"add-records\": records });\n }\n\n if (Object.keys(unions).length > 0) {\n steps.push({ \"add-union\": unions });\n }\n\n return steps;\n}\n\nexport function convertStepsToYamlString(steps: MigrationStep[]): string {\n return yaml.dump(steps, {\n flowLevel: -1,\n lineWidth: -1,\n noRefs: true,\n quotingType: \"'\",\n forceQuotes: false,\n skipInvalid: false,\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"convertSchemaToSteps.js","names":["yaml","convertFieldType","field","type","items","item","name","Error","convertRecordToYaml","recordDef","result","fields","docs","fieldName","fieldDef","Object","entries","fieldType","convertUnionToYaml","unionDef","variants","variantName","variantRef","discriminant","convertSchemaToSteps","schema","exportKey","def","steps","records","unions","values","keys","length","push","convertStepsToYamlString","dump","flowLevel","lineWidth","noRefs","quotingType","forceQuotes","skipInvalid"],"sources":["convertSchemaToSteps.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport yaml from \"js-yaml\";\nimport type { MigrationStep, UnionDefinition } from \"../steps/parseMigrationSteps.js\";\nimport type { P } from \"./validateSchemaModule.js\";\n\nfunction convertFieldType(field: P.Type): string {\n switch (field.type) {\n case \"array\":\n return `array<${convertFieldType(field.items as P.Type)}>`;\n case \"boolean\":\n return \"boolean\";\n case \"docRef\":\n return \"docRef\";\n case \"double\":\n return \"double\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"objectRef\":\n return \"objectRef\";\n case \"optional\":\n return `optional<${convertFieldType(field.item as P.Type)}>`;\n case \"ref\":\n return field.name;\n case \"string\":\n return \"string\";\n case \"unknown\":\n return \"unknown\";\n case \"userRef\":\n return \"userRef\";\n default:\n field satisfies never;\n throw new Error(`Unsupported field type: ${(field as P.Type).type}`);\n }\n}\n\nfunction convertRecordToYaml(\n recordDef: P.RecordDef,\n): { docs?: string; fields: Record<string, string> } {\n const result: { docs?: string; fields: Record<string, string> } = {\n fields: {},\n };\n\n if (recordDef.docs) {\n result.docs = recordDef.docs;\n }\n\n for (const [fieldName, fieldDef] of Object.entries(recordDef.fields)) {\n const fieldType = convertFieldType(fieldDef);\n result.fields[fieldName] = fieldType;\n }\n\n return result;\n}\n\nfunction convertUnionToYaml(unionDef: P.UnionDef): UnionDefinition {\n const variants: Record<string, string> = {};\n\n for (const [variantName, variantRef] of Object.entries(unionDef.variants)) {\n variants[variantName] = variantRef.name;\n }\n\n const result: UnionDefinition = {\n variants,\n };\n\n if (unionDef.discriminant !== \"type\") {\n result.discriminant = unionDef.discriminant;\n }\n\n return result;\n}\n\nexport function convertSchemaToSteps(schema: P.ReturnedSchema): MigrationStep[] {\n // Reject aliased schemas: the YAML step format cannot represent exportKey !== declaredName\n for (const [exportKey, def] of Object.entries(schema)) {\n if (exportKey !== def.name) {\n throw new Error(\n `Schema entry \"${exportKey}\" has declared model name \"${def.name}\". `\n + `The migration-step YAML format cannot represent aliases (exportKey !== declaredName). `\n + `Use the same name for both, or use the IR pipeline instead.`,\n );\n }\n }\n\n const steps: MigrationStep[] = [];\n const records: Record<string, { docs?: string; fields: Record<string, string> }> = {};\n const unions: Record<string, UnionDefinition> = {};\n\n for (const def of Object.values(schema)) {\n switch (def.type) {\n case \"record\": {\n records[def.name] = convertRecordToYaml(def);\n break;\n }\n case \"union\": {\n unions[def.name] = convertUnionToYaml(def);\n break;\n }\n }\n }\n\n if (Object.keys(records).length > 0) {\n steps.push({ \"add-records\": records });\n }\n\n if (Object.keys(unions).length > 0) {\n steps.push({ \"add-union\": unions });\n }\n\n return steps;\n}\n\nexport function convertStepsToYamlString(steps: MigrationStep[]): string {\n return yaml.dump(steps, {\n flowLevel: -1,\n lineWidth: -1,\n noRefs: true,\n quotingType: \"'\",\n forceQuotes: false,\n skipInvalid: false,\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,25 +16,29 @@
16
16
 
17
17
  import { formatVariantName } from "../formatVariantName.js";
18
18
  import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
19
- import { resolveSchemaChain } from "./resolveSchemaChain.js";
20
- import { isRecordSchema, isUnionSchema, MODELS_PATH, TYPES_REEXPORT_PATH, typesFilePath, VERSIONED_DOC_REF_PATH, versionedTypeName, VERSIONS_PATH } from "./runtimeSchema.js";
19
+ import { resolveMinVersion } from "./resolveSchemaChain.js";
20
+ import { INTERNAL_UPGRADE_FNS_PATH, MODELS_PATH, TYPES_REEXPORT_PATH, typesFilePath, VERSIONED_DOC_REF_PATH, versionedTypeName, VERSIONS_PATH } from "./runtimeSchema.js";
21
21
 
22
22
  /**
23
23
  * Generate the index.ts barrel export from a versioned schema.
24
24
  *
25
25
  * Exports:
26
- * - `models.js` (star export — model constants and DocumentModel)
26
+ * - `models.js` (star export — model constants and `DocumentModel`; emitted
27
+ * as a factory function when the schema has derived fields, otherwise a const)
27
28
  * - `types.js` (star export — latest-version type aliases)
28
29
  * - `versions.js` (star export — SupportedVersions, LatestVersion, MinSupportedVersion)
29
30
  * - `versionedDocRef.js` (star export — VersionedDocRef types and factory)
31
+ * - `DocumentUpgradeFns` type (the typed shape the factory accepts)
30
32
  * - Per supported version: explicit named type exports from `types_vN.js`
31
33
  * (not star exports, to avoid polluting autocomplete for read-only consumers)
32
34
  */
33
- export function generateIndexFromSchema(schema, minSupportedVersion) {
35
+ export function generateIndexFromChain(resolved, minSupportedVersion) {
36
+ const {
37
+ chain
38
+ } = resolved;
34
39
  const {
35
- chain,
36
40
  minVersion
37
- } = resolveSchemaChain(schema, minSupportedVersion);
41
+ } = resolveMinVersion(chain, minSupportedVersion);
38
42
  let output = GENERATED_FILE_HEADER;
39
43
 
40
44
  // Star exports for core modules
@@ -42,24 +46,27 @@ export function generateIndexFromSchema(schema, minSupportedVersion) {
42
46
  output += `export * from "${TYPES_REEXPORT_PATH}";\n`;
43
47
  output += `export * from "${VERSIONS_PATH}";\n`;
44
48
  output += `export * from "${VERSIONED_DOC_REF_PATH}";\n`;
49
+ // The typed upgrade-function table shape. Apps reference this type when
50
+ // constructing the value passed to `DocumentModel(...)`.
51
+ output += `export { type DocumentUpgradeFns } from "${INTERNAL_UPGRADE_FNS_PATH}";\n`;
45
52
 
46
53
  // Per-version explicit named type exports
47
54
  for (const {
48
55
  version,
49
- schema: versionSchema
56
+ ir
50
57
  } of chain) {
51
58
  if (version < minVersion) continue;
52
59
  const typeNames = [];
53
- for (const [exportName, item] of Object.entries(versionSchema)) {
54
- if (isRecordSchema(item)) {
55
- typeNames.push(versionedTypeName(exportName, version));
56
- } else if (isUnionSchema(item)) {
57
- typeNames.push(versionedTypeName(exportName, version));
60
+ for (const [modelKey, modelDef] of Object.entries(ir.models)) {
61
+ if (modelDef.type === "record") {
62
+ typeNames.push(versionedTypeName(modelKey, version));
63
+ } else if (modelDef.type === "union") {
64
+ typeNames.push(versionedTypeName(modelKey, version));
58
65
 
59
66
  // Union variant types
60
- for (const variantName of Object.keys(item.variants)) {
67
+ for (const variantName of Object.keys(modelDef.union.variants)) {
61
68
  const formattedVariant = formatVariantName(variantName);
62
- typeNames.push(`${versionedTypeName(exportName, version)}${formattedVariant}`);
69
+ typeNames.push(`${versionedTypeName(modelKey, version)}${formattedVariant}`);
63
70
  }
64
71
  }
65
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateIndexFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","resolveSchemaChain","isRecordSchema","isUnionSchema","MODELS_PATH","TYPES_REEXPORT_PATH","typesFilePath","VERSIONED_DOC_REF_PATH","versionedTypeName","VERSIONS_PATH","generateIndexFromSchema","schema","minSupportedVersion","chain","minVersion","output","version","versionSchema","typeNames","exportName","item","Object","entries","push","variantName","keys","variants","formattedVariant","length","sort","join"],"sources":["generateIndexFromSchema.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 { resolveSchemaChain } from \"./resolveSchemaChain.js\";\nimport {\n isRecordSchema,\n isUnionSchema,\n MODELS_PATH,\n TYPES_REEXPORT_PATH,\n typesFilePath,\n VERSIONED_DOC_REF_PATH,\n versionedTypeName,\n VERSIONS_PATH,\n} from \"./runtimeSchema.js\";\n\n/**\n * Generate the index.ts barrel export from a versioned schema.\n *\n * Exports:\n * - `models.js` (star export — model constants and DocumentModel)\n * - `types.js` (star export — latest-version type aliases)\n * - `versions.js` (star export — SupportedVersions, LatestVersion, MinSupportedVersion)\n * - `versionedDocRef.js` (star export — VersionedDocRef types and factory)\n * - Per supported version: explicit named type exports from `types_vN.js`\n * (not star exports, to avoid polluting autocomplete for read-only consumers)\n */\nexport function generateIndexFromSchema(\n schema: SchemaDefinition,\n minSupportedVersion?: number,\n): string {\n const { chain, minVersion } = resolveSchemaChain(schema, minSupportedVersion);\n\n let output = GENERATED_FILE_HEADER;\n\n // Star exports for core modules\n output += `export * from \"${MODELS_PATH}\";\\n`;\n output += `export * from \"${TYPES_REEXPORT_PATH}\";\\n`;\n output += `export * from \"${VERSIONS_PATH}\";\\n`;\n output += `export * from \"${VERSIONED_DOC_REF_PATH}\";\\n`;\n\n // Per-version explicit named type exports\n for (const { version, schema: versionSchema } of chain) {\n if (version < minVersion) continue;\n\n const typeNames: string[] = [];\n\n for (const [exportName, item] of Object.entries(versionSchema)) {\n if (isRecordSchema(item)) {\n typeNames.push(versionedTypeName(exportName, version));\n } else if (isUnionSchema(item)) {\n typeNames.push(versionedTypeName(exportName, version));\n\n // Union variant types\n for (const variantName of Object.keys(item.variants)) {\n const formattedVariant = formatVariantName(variantName);\n typeNames.push(`${versionedTypeName(exportName, version)}${formattedVariant}`);\n }\n }\n }\n\n if (typeNames.length > 0) {\n output += `export type { ${typeNames.sort().join(\", \")} } from \"${\n typesFilePath(version)\n }\";\\n`;\n }\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,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,qBAAqB,QAAQ,2BAA2B;AACjE,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SACEC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,mBAAmB,EACnBC,aAAa,EACbC,sBAAsB,EACtBC,iBAAiB,EACjBC,aAAa,QACR,oBAAoB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,MAAwB,EACxBC,mBAA4B,EACpB;EACR,MAAM;IAAEC,KAAK;IAAEC;EAAW,CAAC,GAAGb,kBAAkB,CAACU,MAAM,EAAEC,mBAAmB,CAAC;EAE7E,IAAIG,MAAM,GAAGf,qBAAqB;;EAElC;EACAe,MAAM,IAAI,kBAAkBX,WAAW,MAAM;EAC7CW,MAAM,IAAI,kBAAkBV,mBAAmB,MAAM;EACrDU,MAAM,IAAI,kBAAkBN,aAAa,MAAM;EAC/CM,MAAM,IAAI,kBAAkBR,sBAAsB,MAAM;;EAExD;EACA,KAAK,MAAM;IAAES,OAAO;IAAEL,MAAM,EAAEM;EAAc,CAAC,IAAIJ,KAAK,EAAE;IACtD,IAAIG,OAAO,GAAGF,UAAU,EAAE;IAE1B,MAAMI,SAAmB,GAAG,EAAE;IAE9B,KAAK,MAAM,CAACC,UAAU,EAAEC,IAAI,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,aAAa,CAAC,EAAE;MAC9D,IAAIf,cAAc,CAACkB,IAAI,CAAC,EAAE;QACxBF,SAAS,CAACK,IAAI,CAACf,iBAAiB,CAACW,UAAU,EAAEH,OAAO,CAAC,CAAC;MACxD,CAAC,MAAM,IAAIb,aAAa,CAACiB,IAAI,CAAC,EAAE;QAC9BF,SAAS,CAACK,IAAI,CAACf,iBAAiB,CAACW,UAAU,EAAEH,OAAO,CAAC,CAAC;;QAEtD;QACA,KAAK,MAAMQ,WAAW,IAAIH,MAAM,CAACI,IAAI,CAACL,IAAI,CAACM,QAAQ,CAAC,EAAE;UACpD,MAAMC,gBAAgB,GAAG5B,iBAAiB,CAACyB,WAAW,CAAC;UACvDN,SAAS,CAACK,IAAI,CAAC,GAAGf,iBAAiB,CAACW,UAAU,EAAEH,OAAO,CAAC,GAAGW,gBAAgB,EAAE,CAAC;QAChF;MACF;IACF;IAEA,IAAIT,SAAS,CAACU,MAAM,GAAG,CAAC,EAAE;MACxBb,MAAM,IAAI,iBAAiBG,SAAS,CAACW,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,YACpDxB,aAAa,CAACU,OAAO,CAAC,MAClB;IACR;EACF;EAEA,OAAOD,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"file":"generateIndexFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","resolveMinVersion","INTERNAL_UPGRADE_FNS_PATH","MODELS_PATH","TYPES_REEXPORT_PATH","typesFilePath","VERSIONED_DOC_REF_PATH","versionedTypeName","VERSIONS_PATH","generateIndexFromChain","resolved","minSupportedVersion","chain","minVersion","output","version","ir","typeNames","modelKey","modelDef","Object","entries","models","type","push","variantName","keys","union","variants","formattedVariant","length","sort","join"],"sources":["generateIndexFromSchema.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 { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\nimport { resolveMinVersion } from \"./resolveSchemaChain.js\";\nimport {\n INTERNAL_UPGRADE_FNS_PATH,\n MODELS_PATH,\n TYPES_REEXPORT_PATH,\n typesFilePath,\n VERSIONED_DOC_REF_PATH,\n versionedTypeName,\n VERSIONS_PATH,\n} from \"./runtimeSchema.js\";\n\n/**\n * Generate the index.ts barrel export from a versioned schema.\n *\n * Exports:\n * - `models.js` (star export — model constants and `DocumentModel`; emitted\n * as a factory function when the schema has derived fields, otherwise a const)\n * - `types.js` (star export — latest-version type aliases)\n * - `versions.js` (star export — SupportedVersions, LatestVersion, MinSupportedVersion)\n * - `versionedDocRef.js` (star export — VersionedDocRef types and factory)\n * - `DocumentUpgradeFns` type (the typed shape the factory accepts)\n * - Per supported version: explicit named type exports from `types_vN.js`\n * (not star exports, to avoid polluting autocomplete for read-only consumers)\n */\nexport function generateIndexFromChain(\n resolved: ResolvedIrChain,\n minSupportedVersion?: number,\n): string {\n const { chain } = resolved;\n const { minVersion } = resolveMinVersion(chain, minSupportedVersion);\n\n let output = GENERATED_FILE_HEADER;\n\n // Star exports for core modules\n output += `export * from \"${MODELS_PATH}\";\\n`;\n output += `export * from \"${TYPES_REEXPORT_PATH}\";\\n`;\n output += `export * from \"${VERSIONS_PATH}\";\\n`;\n output += `export * from \"${VERSIONED_DOC_REF_PATH}\";\\n`;\n // The typed upgrade-function table shape. Apps reference this type when\n // constructing the value passed to `DocumentModel(...)`.\n output += `export { type DocumentUpgradeFns } from \"${INTERNAL_UPGRADE_FNS_PATH}\";\\n`;\n\n // Per-version explicit named type exports\n for (const { version, ir } of chain) {\n if (version < minVersion) continue;\n\n const typeNames: string[] = [];\n\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\n // Union variant types\n for (const variantName of Object.keys(modelDef.union.variants)) {\n const formattedVariant = formatVariantName(variantName);\n typeNames.push(`${versionedTypeName(modelKey, version)}${formattedVariant}`);\n }\n }\n }\n\n if (typeNames.length > 0) {\n output += `export type { ${typeNames.sort().join(\", \")} } from \"${\n typesFilePath(version)\n }\";\\n`;\n }\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,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,qBAAqB,QAAQ,2BAA2B;AAEjE,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SACEC,yBAAyB,EACzBC,WAAW,EACXC,mBAAmB,EACnBC,aAAa,EACbC,sBAAsB,EACtBC,iBAAiB,EACjBC,aAAa,QACR,oBAAoB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,QAAyB,EACzBC,mBAA4B,EACpB;EACR,MAAM;IAAEC;EAAM,CAAC,GAAGF,QAAQ;EAC1B,MAAM;IAAEG;EAAW,CAAC,GAAGZ,iBAAiB,CAACW,KAAK,EAAED,mBAAmB,CAAC;EAEpE,IAAIG,MAAM,GAAGd,qBAAqB;;EAElC;EACAc,MAAM,IAAI,kBAAkBX,WAAW,MAAM;EAC7CW,MAAM,IAAI,kBAAkBV,mBAAmB,MAAM;EACrDU,MAAM,IAAI,kBAAkBN,aAAa,MAAM;EAC/CM,MAAM,IAAI,kBAAkBR,sBAAsB,MAAM;EACxD;EACA;EACAQ,MAAM,IAAI,4CAA4CZ,yBAAyB,MAAM;;EAErF;EACA,KAAK,MAAM;IAAEa,OAAO;IAAEC;EAAG,CAAC,IAAIJ,KAAK,EAAE;IACnC,IAAIG,OAAO,GAAGF,UAAU,EAAE;IAE1B,MAAMI,SAAmB,GAAG,EAAE;IAE9B,KAAK,MAAM,CAACC,QAAQ,EAAEC,QAAQ,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,EAAE,CAACM,MAAM,CAAC,EAAE;MAC5D,IAAIH,QAAQ,CAACI,IAAI,KAAK,QAAQ,EAAE;QAC9BN,SAAS,CAACO,IAAI,CAACjB,iBAAiB,CAACW,QAAQ,EAAEH,OAAO,CAAC,CAAC;MACtD,CAAC,MAAM,IAAII,QAAQ,CAACI,IAAI,KAAK,OAAO,EAAE;QACpCN,SAAS,CAACO,IAAI,CAACjB,iBAAiB,CAACW,QAAQ,EAAEH,OAAO,CAAC,CAAC;;QAEpD;QACA,KAAK,MAAMU,WAAW,IAAIL,MAAM,CAACM,IAAI,CAACP,QAAQ,CAACQ,KAAK,CAACC,QAAQ,CAAC,EAAE;UAC9D,MAAMC,gBAAgB,GAAG9B,iBAAiB,CAAC0B,WAAW,CAAC;UACvDR,SAAS,CAACO,IAAI,CAAC,GAAGjB,iBAAiB,CAACW,QAAQ,EAAEH,OAAO,CAAC,GAAGc,gBAAgB,EAAE,CAAC;QAC9E;MACF;IACF;IAEA,IAAIZ,SAAS,CAACa,MAAM,GAAG,CAAC,EAAE;MACxBhB,MAAM,IAAI,iBAAiBG,SAAS,CAACc,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,YACpD3B,aAAa,CAACU,OAAO,CAAC,MAClB;IACR;EACF;EAEA,OAAOD,MAAM;AACf","ignoreList":[]}