@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
@@ -18,7 +18,7 @@ import path from "path";
18
18
  import { describe, expect, it } from "vitest";
19
19
  import { generateModelMetadataFromChain } from "../generateModelMetadataFromSchema.js";
20
20
  import { resolveSchemaChain } from "../resolveSchemaChain.js";
21
- import { singleVersionSchema, threeVersionChainSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from "./fixtures.js";
21
+ import { singleVersionSchema, threeVersionChainSchema, twoVersionDerivedFieldsSchema, twoVersionFieldRemovalSchema, unionTypesSchema } from "./fixtures.js";
22
22
  import { formatModelMetadataSnapshot } from "./snapshotUtils.js";
23
23
  describe("generateModelMetadataFromChain", () => {
24
24
  const snapshotDir = path.join(__dirname, "__snapshots__", "generateModelMetadataFromSchema");
@@ -38,5 +38,9 @@ describe("generateModelMetadataFromChain", () => {
38
38
  const result = generateModelMetadataFromChain(resolveSchemaChain(unionTypesSchema));
39
39
  await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "union-types.snap"));
40
40
  });
41
+ it("two-version schema with derived fields emits DocumentModel as a factory", async () => {
42
+ const result = generateModelMetadataFromChain(resolveSchemaChain(twoVersionDerivedFieldsSchema, 1), 1);
43
+ await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(path.join(snapshotDir, "two-version-derived-fields.snap"));
44
+ });
41
45
  });
42
46
  //# sourceMappingURL=generateModelMetadataFromSchema.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateModelMetadataFromSchema.test.js","names":["path","describe","expect","it","generateModelMetadataFromChain","resolveSchemaChain","singleVersionSchema","threeVersionChainSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatModelMetadataSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot"],"sources":["generateModelMetadataFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { generateModelMetadataFromChain } from \"../generateModelMetadataFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n singleVersionSchema,\n threeVersionChainSchema,\n twoVersionFieldRemovalSchema,\n unionTypesSchema,\n} from \"./fixtures.js\";\nimport { formatModelMetadataSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateModelMetadataFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateModelMetadataFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(twoVersionFieldRemovalSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"three-version chain\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(threeVersionChainSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"three-version-chain.snap\"),\n );\n });\n\n it(\"union types schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,8BAA8B,QAAQ,uCAAuC;AACtF,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,4BAA4B,EAC5BC,gBAAgB,QACX,eAAe;AACtB,SAASC,2BAA2B,QAAQ,oBAAoB;AAEhET,QAAQ,CAAC,gCAAgC,EAAE,MAAM;EAC/C,MAAMU,WAAW,GAAGX,IAAI,CAACY,IAAI,CAACC,SAAS,EAAE,eAAe,EAAE,iCAAiC,CAAC;EAE5FV,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMW,MAAM,GAAGV,8BAA8B,CAACC,kBAAkB,CAACC,mBAAmB,CAAC,CAAC;IACtF,MAAMJ,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,qBAAqB,CAC9C,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMW,MAAM,GAAGV,8BAA8B,CAC3CC,kBAAkB,CAACG,4BAA4B,EAAE,CAAC,CAAC,EACnD,CACF,CAAC;IACD,MAAMN,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,gCAAgC,CACzD,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,qBAAqB,EAAE,YAAY;IACpC,MAAMW,MAAM,GAAGV,8BAA8B,CAC3CC,kBAAkB,CAACE,uBAAuB,EAAE,CAAC,CAAC,EAC9C,CACF,CAAC;IACD,MAAML,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,0BAA0B,CACnD,CAAC;EACH,CAAC,CAAC;EAEFR,EAAE,CAAC,oBAAoB,EAAE,YAAY;IACnC,MAAMW,MAAM,GAAGV,8BAA8B,CAACC,kBAAkB,CAACI,gBAAgB,CAAC,CAAC;IACnF,MAAMP,MAAM,CAAC,MAAMQ,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEf,IAAI,CAACY,IAAI,CAACD,WAAW,EAAE,kBAAkB,CAC3C,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"generateModelMetadataFromSchema.test.js","names":["path","describe","expect","it","generateModelMetadataFromChain","resolveSchemaChain","singleVersionSchema","threeVersionChainSchema","twoVersionDerivedFieldsSchema","twoVersionFieldRemovalSchema","unionTypesSchema","formatModelMetadataSnapshot","snapshotDir","join","__dirname","result","toMatchFileSnapshot"],"sources":["generateModelMetadataFromSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { generateModelMetadataFromChain } from \"../generateModelMetadataFromSchema.js\";\nimport { resolveSchemaChain } from \"../resolveSchemaChain.js\";\nimport {\n singleVersionSchema,\n threeVersionChainSchema,\n twoVersionDerivedFieldsSchema,\n twoVersionFieldRemovalSchema,\n unionTypesSchema,\n} from \"./fixtures.js\";\nimport { formatModelMetadataSnapshot } from \"./snapshotUtils.js\";\n\ndescribe(\"generateModelMetadataFromChain\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateModelMetadataFromSchema\");\n\n it(\"single-version schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(singleVersionSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"single-version.snap\"),\n );\n });\n\n it(\"two-version field removal\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(twoVersionFieldRemovalSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-field-removal.snap\"),\n );\n });\n\n it(\"three-version chain\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(threeVersionChainSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"three-version-chain.snap\"),\n );\n });\n\n it(\"union types schema\", async () => {\n const result = generateModelMetadataFromChain(resolveSchemaChain(unionTypesSchema));\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"union-types.snap\"),\n );\n });\n\n it(\"two-version schema with derived fields emits DocumentModel as a factory\", async () => {\n const result = generateModelMetadataFromChain(\n resolveSchemaChain(twoVersionDerivedFieldsSchema, 1),\n 1,\n );\n await expect(await formatModelMetadataSnapshot(result)).toMatchFileSnapshot(\n path.join(snapshotDir, \"two-version-derived-fields.snap\"),\n );\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,8BAA8B,QAAQ,uCAAuC;AACtF,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,6BAA6B,EAC7BC,4BAA4B,EAC5BC,gBAAgB,QACX,eAAe;AACtB,SAASC,2BAA2B,QAAQ,oBAAoB;AAEhEV,QAAQ,CAAC,gCAAgC,EAAE,MAAM;EAC/C,MAAMW,WAAW,GAAGZ,IAAI,CAACa,IAAI,CAACC,SAAS,EAAE,eAAe,EAAE,iCAAiC,CAAC;EAE5FX,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMY,MAAM,GAAGX,8BAA8B,CAACC,kBAAkB,CAACC,mBAAmB,CAAC,CAAC;IACtF,MAAMJ,MAAM,CAAC,MAAMS,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEhB,IAAI,CAACa,IAAI,CAACD,WAAW,EAAE,qBAAqB,CAC9C,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMY,MAAM,GAAGX,8BAA8B,CAC3CC,kBAAkB,CAACI,4BAA4B,EAAE,CAAC,CAAC,EACnD,CACF,CAAC;IACD,MAAMP,MAAM,CAAC,MAAMS,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEhB,IAAI,CAACa,IAAI,CAACD,WAAW,EAAE,gCAAgC,CACzD,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,qBAAqB,EAAE,YAAY;IACpC,MAAMY,MAAM,GAAGX,8BAA8B,CAC3CC,kBAAkB,CAACE,uBAAuB,EAAE,CAAC,CAAC,EAC9C,CACF,CAAC;IACD,MAAML,MAAM,CAAC,MAAMS,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEhB,IAAI,CAACa,IAAI,CAACD,WAAW,EAAE,0BAA0B,CACnD,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,oBAAoB,EAAE,YAAY;IACnC,MAAMY,MAAM,GAAGX,8BAA8B,CAACC,kBAAkB,CAACK,gBAAgB,CAAC,CAAC;IACnF,MAAMR,MAAM,CAAC,MAAMS,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEhB,IAAI,CAACa,IAAI,CAACD,WAAW,EAAE,kBAAkB,CAC3C,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,yEAAyE,EAAE,YAAY;IACxF,MAAMY,MAAM,GAAGX,8BAA8B,CAC3CC,kBAAkB,CAACG,6BAA6B,EAAE,CAAC,CAAC,EACpD,CACF,CAAC;IACD,MAAMN,MAAM,CAAC,MAAMS,2BAA2B,CAACI,MAAM,CAAC,CAAC,CAACC,mBAAmB,CACzEhB,IAAI,CAACa,IAAI,CAACD,WAAW,EAAE,iCAAiC,CAC1D,CAAC;EACH,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -95,12 +95,15 @@ export async function formatVersionedZodSnapshot(result) {
95
95
  * ...
96
96
  * // === _internal/schema.ts ===
97
97
  * ...
98
+ * // === _internal/upgradeFns.ts ===
99
+ * ...
98
100
  */
99
101
  export async function formatInternalTypesSnapshot(result) {
100
102
  const sections = [];
101
103
  sections.push(section("_internal/types.ts", await fmt(result.internalTypes)));
102
104
  sections.push(section("_internal/upgrades.ts", await fmt(result.upgrades)));
103
105
  sections.push(section("_internal/schema.ts", await fmt(result.internalSchema)));
106
+ sections.push(section("_internal/upgradeFns.ts", await fmt(result.internalUpgradeFns)));
104
107
  return sections.join("\n");
105
108
  }
106
109
  //# sourceMappingURL=snapshotUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotUtils.js","names":["format","prettierOpts","parser","singleQuote","trailingComma","fmt","code","section","filename","content","bar","repeat","formatVersionedTypesSnapshot","result","sections","sortedVersions","readTypes","keys","sort","a","b","version","push","get","writeTypes","typesReExport","join","formatModelMetadataSnapshot","modelsFile","formatSingleSnapshot","formatVersionedZodSnapshot","zodSchemas","schemaReExport","formatInternalTypesSnapshot","internalTypes","upgrades","internalSchema"],"sources":["snapshotUtils.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 { format } from \"prettier\";\nimport type { InternalTypesOutput } from \"../generateInternalFromSchema.js\";\nimport type { ModelMetadataOutput } from \"../generateModelMetadataFromSchema.js\";\nimport type { VersionedTypesOutput } from \"../generateVersionedTypesFromSchema.js\";\nimport type { VersionedZodOutput } from \"../generateVersionedZodFromSchema.js\";\n\nconst prettierOpts = {\n parser: \"typescript\" as const,\n singleQuote: true,\n trailingComma: \"es5\" as const,\n};\n\nasync function fmt(code: string): Promise<string> {\n return format(code, prettierOpts);\n}\n\nfunction section(filename: string, content: string): string {\n const bar = \"=\".repeat(60);\n return `// ${bar}\\n// ${filename}\\n// ${bar}\\n\\n${content}`;\n}\n\n/**\n * Combine a VersionedTypesOutput into a single snapshot string.\n *\n * Layout:\n * // === types_v1.ts ===\n * ...formatted code...\n * // === writeTypes_v1.ts ===\n * ...\n * // === types.ts ===\n * ...\n */\nexport async function formatVersionedTypesSnapshot(\n result: VersionedTypesOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n const sortedVersions = [...result.readTypes.keys()].sort((a, b) => a - b);\n\n for (const version of sortedVersions) {\n sections.push(section(`types_v${version}.ts`, await fmt(result.readTypes.get(version)!)));\n }\n for (const version of sortedVersions) {\n sections.push(section(`writeTypes_v${version}.ts`, await fmt(result.writeTypes.get(version)!)));\n }\n sections.push(section(\"types.ts\", await fmt(result.typesReExport)));\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Format a ModelMetadataOutput into a snapshot string.\n */\nexport async function formatModelMetadataSnapshot(\n result: ModelMetadataOutput,\n): Promise<string> {\n return section(\"models.ts\", await fmt(result.modelsFile));\n}\n\n/**\n * Format a single generated string into a snapshot.\n */\nexport async function formatSingleSnapshot(\n filename: string,\n code: string,\n): Promise<string> {\n return section(filename, await fmt(code));\n}\n\n/**\n * Combine a VersionedZodOutput into a single snapshot string.\n *\n * Layout:\n * // === schema_v1.ts ===\n * ...formatted code...\n * // === schema.ts ===\n * ...\n */\nexport async function formatVersionedZodSnapshot(\n result: VersionedZodOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n const sortedVersions = [...result.zodSchemas.keys()].sort((a, b) => a - b);\n\n for (const version of sortedVersions) {\n sections.push(section(`schema_v${version}.ts`, await fmt(result.zodSchemas.get(version)!)));\n }\n sections.push(section(\"schema.ts\", await fmt(result.schemaReExport)));\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Combine an InternalTypesOutput into a single snapshot string.\n *\n * Layout:\n * // === _internal/types.ts ===\n * ...formatted code...\n * // === _internal/upgrades.ts ===\n * ...\n * // === _internal/schema.ts ===\n * ...\n */\nexport async function formatInternalTypesSnapshot(\n result: InternalTypesOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n sections.push(section(\"_internal/types.ts\", await fmt(result.internalTypes)));\n sections.push(section(\"_internal/upgrades.ts\", await fmt(result.upgrades)));\n sections.push(section(\"_internal/schema.ts\", await fmt(result.internalSchema)));\n\n return sections.join(\"\\n\");\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"snapshotUtils.js","names":["format","prettierOpts","parser","singleQuote","trailingComma","fmt","code","section","filename","content","bar","repeat","formatVersionedTypesSnapshot","result","sections","sortedVersions","readTypes","keys","sort","a","b","version","push","get","writeTypes","typesReExport","join","formatModelMetadataSnapshot","modelsFile","formatSingleSnapshot","formatVersionedZodSnapshot","zodSchemas","schemaReExport","formatInternalTypesSnapshot","internalTypes","upgrades","internalSchema","internalUpgradeFns"],"sources":["snapshotUtils.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 { format } from \"prettier\";\nimport type { InternalTypesOutput } from \"../generateInternalFromSchema.js\";\nimport type { ModelMetadataOutput } from \"../generateModelMetadataFromSchema.js\";\nimport type { VersionedTypesOutput } from \"../generateVersionedTypesFromSchema.js\";\nimport type { VersionedZodOutput } from \"../generateVersionedZodFromSchema.js\";\n\nconst prettierOpts = {\n parser: \"typescript\" as const,\n singleQuote: true,\n trailingComma: \"es5\" as const,\n};\n\nasync function fmt(code: string): Promise<string> {\n return format(code, prettierOpts);\n}\n\nfunction section(filename: string, content: string): string {\n const bar = \"=\".repeat(60);\n return `// ${bar}\\n// ${filename}\\n// ${bar}\\n\\n${content}`;\n}\n\n/**\n * Combine a VersionedTypesOutput into a single snapshot string.\n *\n * Layout:\n * // === types_v1.ts ===\n * ...formatted code...\n * // === writeTypes_v1.ts ===\n * ...\n * // === types.ts ===\n * ...\n */\nexport async function formatVersionedTypesSnapshot(\n result: VersionedTypesOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n const sortedVersions = [...result.readTypes.keys()].sort((a, b) => a - b);\n\n for (const version of sortedVersions) {\n sections.push(section(`types_v${version}.ts`, await fmt(result.readTypes.get(version)!)));\n }\n for (const version of sortedVersions) {\n sections.push(section(`writeTypes_v${version}.ts`, await fmt(result.writeTypes.get(version)!)));\n }\n sections.push(section(\"types.ts\", await fmt(result.typesReExport)));\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Format a ModelMetadataOutput into a snapshot string.\n */\nexport async function formatModelMetadataSnapshot(\n result: ModelMetadataOutput,\n): Promise<string> {\n return section(\"models.ts\", await fmt(result.modelsFile));\n}\n\n/**\n * Format a single generated string into a snapshot.\n */\nexport async function formatSingleSnapshot(\n filename: string,\n code: string,\n): Promise<string> {\n return section(filename, await fmt(code));\n}\n\n/**\n * Combine a VersionedZodOutput into a single snapshot string.\n *\n * Layout:\n * // === schema_v1.ts ===\n * ...formatted code...\n * // === schema.ts ===\n * ...\n */\nexport async function formatVersionedZodSnapshot(\n result: VersionedZodOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n const sortedVersions = [...result.zodSchemas.keys()].sort((a, b) => a - b);\n\n for (const version of sortedVersions) {\n sections.push(section(`schema_v${version}.ts`, await fmt(result.zodSchemas.get(version)!)));\n }\n sections.push(section(\"schema.ts\", await fmt(result.schemaReExport)));\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Combine an InternalTypesOutput into a single snapshot string.\n *\n * Layout:\n * // === _internal/types.ts ===\n * ...formatted code...\n * // === _internal/upgrades.ts ===\n * ...\n * // === _internal/schema.ts ===\n * ...\n * // === _internal/upgradeFns.ts ===\n * ...\n */\nexport async function formatInternalTypesSnapshot(\n result: InternalTypesOutput,\n): Promise<string> {\n const sections: string[] = [];\n\n sections.push(section(\"_internal/types.ts\", await fmt(result.internalTypes)));\n sections.push(section(\"_internal/upgrades.ts\", await fmt(result.upgrades)));\n sections.push(section(\"_internal/schema.ts\", await fmt(result.internalSchema)));\n sections.push(section(\"_internal/upgradeFns.ts\", await fmt(result.internalUpgradeFns)));\n\n return sections.join(\"\\n\");\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,UAAU;AAMjC,MAAMC,YAAY,GAAG;EACnBC,MAAM,EAAE,YAAqB;EAC7BC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE;AACjB,CAAC;AAED,eAAeC,GAAGA,CAACC,IAAY,EAAmB;EAChD,OAAON,MAAM,CAACM,IAAI,EAAEL,YAAY,CAAC;AACnC;AAEA,SAASM,OAAOA,CAACC,QAAgB,EAAEC,OAAe,EAAU;EAC1D,MAAMC,GAAG,GAAG,GAAG,CAACC,MAAM,CAAC,EAAE,CAAC;EAC1B,OAAO,MAAMD,GAAG,QAAQF,QAAQ,QAAQE,GAAG,OAAOD,OAAO,EAAE;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,4BAA4BA,CAChDC,MAA4B,EACX;EACjB,MAAMC,QAAkB,GAAG,EAAE;EAE7B,MAAMC,cAAc,GAAG,CAAC,GAAGF,MAAM,CAACG,SAAS,CAACC,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAEzE,KAAK,MAAMC,OAAO,IAAIN,cAAc,EAAE;IACpCD,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,UAAUc,OAAO,KAAK,EAAE,MAAMhB,GAAG,CAACQ,MAAM,CAACG,SAAS,CAACO,GAAG,CAACF,OAAO,CAAE,CAAC,CAAC,CAAC;EAC3F;EACA,KAAK,MAAMA,OAAO,IAAIN,cAAc,EAAE;IACpCD,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,eAAec,OAAO,KAAK,EAAE,MAAMhB,GAAG,CAACQ,MAAM,CAACW,UAAU,CAACD,GAAG,CAACF,OAAO,CAAE,CAAC,CAAC,CAAC;EACjG;EACAP,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,UAAU,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACY,aAAa,CAAC,CAAC,CAAC;EAEnE,OAAOX,QAAQ,CAACY,IAAI,CAAC,IAAI,CAAC;AAC5B;;AAEA;AACA;AACA;AACA,OAAO,eAAeC,2BAA2BA,CAC/Cd,MAA2B,EACV;EACjB,OAAON,OAAO,CAAC,WAAW,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACe,UAAU,CAAC,CAAC;AAC3D;;AAEA;AACA;AACA;AACA,OAAO,eAAeC,oBAAoBA,CACxCrB,QAAgB,EAChBF,IAAY,EACK;EACjB,OAAOC,OAAO,CAACC,QAAQ,EAAE,MAAMH,GAAG,CAACC,IAAI,CAAC,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAewB,0BAA0BA,CAC9CjB,MAA0B,EACT;EACjB,MAAMC,QAAkB,GAAG,EAAE;EAE7B,MAAMC,cAAc,GAAG,CAAC,GAAGF,MAAM,CAACkB,UAAU,CAACd,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAE1E,KAAK,MAAMC,OAAO,IAAIN,cAAc,EAAE;IACpCD,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,WAAWc,OAAO,KAAK,EAAE,MAAMhB,GAAG,CAACQ,MAAM,CAACkB,UAAU,CAACR,GAAG,CAACF,OAAO,CAAE,CAAC,CAAC,CAAC;EAC7F;EACAP,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,WAAW,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACmB,cAAc,CAAC,CAAC,CAAC;EAErE,OAAOlB,QAAQ,CAACY,IAAI,CAAC,IAAI,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeO,2BAA2BA,CAC/CpB,MAA2B,EACV;EACjB,MAAMC,QAAkB,GAAG,EAAE;EAE7BA,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,oBAAoB,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACqB,aAAa,CAAC,CAAC,CAAC;EAC7EpB,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,uBAAuB,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACsB,QAAQ,CAAC,CAAC,CAAC;EAC3ErB,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,qBAAqB,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACuB,cAAc,CAAC,CAAC,CAAC;EAC/EtB,QAAQ,CAACQ,IAAI,CAACf,OAAO,CAAC,yBAAyB,EAAE,MAAMF,GAAG,CAACQ,MAAM,CAACwB,kBAAkB,CAAC,CAAC,CAAC;EAEvF,OAAOvB,QAAQ,CAACY,IAAI,CAAC,IAAI,CAAC;AAC5B","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
18
+ /**
19
+ * Generate documentType.ts: runtime constants for the document type's user-facing
20
+ * identity, sourced from the IR's top-level `name` and `description`.
21
+ *
22
+ * Output:
23
+ * ```
24
+ * export const DOCUMENT_TYPE_NAME = "Canvas Document";
25
+ * export const DOCUMENT_TYPE_DESCRIPTION = "Schema for the Demo Canvas Application";
26
+ * ```
27
+ *
28
+ * Identity is read off the latest chain entry's IR — it is the same string on
29
+ * every entry (populated by `resolveSchemaChain` from pack-config), so the
30
+ * choice of entry is incidental.
31
+ */
32
+ export function generateDocumentTypeFromChain(resolved) {
33
+ const latestIr = resolved.chain[resolved.chain.length - 1].ir;
34
+ let output = GENERATED_FILE_HEADER;
35
+ output += `export const DOCUMENT_TYPE_NAME = ${JSON.stringify(latestIr.name)};\n`;
36
+ output += `export const DOCUMENT_TYPE_DESCRIPTION = ${JSON.stringify(latestIr.description)};\n`;
37
+ return output;
38
+ }
39
+ //# sourceMappingURL=generateDocumentTypeFromSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateDocumentTypeFromSchema.js","names":["GENERATED_FILE_HEADER","generateDocumentTypeFromChain","resolved","latestIr","chain","length","ir","output","JSON","stringify","name","description"],"sources":["generateDocumentTypeFromSchema.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport type { ResolvedIrChain } from \"./resolveSchemaChain.js\";\n\n/**\n * Generate documentType.ts: runtime constants for the document type's user-facing\n * identity, sourced from the IR's top-level `name` and `description`.\n *\n * Output:\n * ```\n * export const DOCUMENT_TYPE_NAME = \"Canvas Document\";\n * export const DOCUMENT_TYPE_DESCRIPTION = \"Schema for the Demo Canvas Application\";\n * ```\n *\n * Identity is read off the latest chain entry's IR — it is the same string on\n * every entry (populated by `resolveSchemaChain` from pack-config), so the\n * choice of entry is incidental.\n */\nexport function generateDocumentTypeFromChain(resolved: ResolvedIrChain): string {\n const latestIr = resolved.chain[resolved.chain.length - 1]!.ir;\n\n let output = GENERATED_FILE_HEADER;\n output += `export const DOCUMENT_TYPE_NAME = ${JSON.stringify(latestIr.name)};\\n`;\n output += `export const DOCUMENT_TYPE_DESCRIPTION = ${JSON.stringify(latestIr.description)};\\n`;\n return output;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,qBAAqB,QAAQ,2BAA2B;AAGjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAACC,QAAyB,EAAU;EAC/E,MAAMC,QAAQ,GAAGD,QAAQ,CAACE,KAAK,CAACF,QAAQ,CAACE,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,CAAEC,EAAE;EAE9D,IAAIC,MAAM,GAAGP,qBAAqB;EAClCO,MAAM,IAAI,qCAAqCC,IAAI,CAACC,SAAS,CAACN,QAAQ,CAACO,IAAI,CAAC,KAAK;EACjFH,MAAM,IAAI,4CAA4CC,IAAI,CAACC,SAAS,CAACN,QAAQ,CAACQ,WAAW,CAAC,KAAK;EAC/F,OAAOJ,MAAM;AACf","ignoreList":[]}
@@ -17,16 +17,19 @@
17
17
  import { formatVariantName } from "../formatVariantName.js";
18
18
  import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
19
19
  import { resolveMinVersion } from "./resolveSchemaChain.js";
20
- import { MODELS_PATH, TYPES_REEXPORT_PATH, typesFilePath, VERSIONED_DOC_REF_PATH, versionedTypeName, VERSIONS_PATH } from "./runtimeSchema.js";
20
+ import { DOCUMENT_TYPE_PATH, 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
+ * - `documentType.js` (star export — DOCUMENT_TYPE_NAME and DOCUMENT_TYPE_DESCRIPTION)
32
+ * - `DocumentUpgradeFns` type (the typed shape the factory accepts)
30
33
  * - Per supported version: explicit named type exports from `types_vN.js`
31
34
  * (not star exports, to avoid polluting autocomplete for read-only consumers)
32
35
  */
@@ -44,6 +47,10 @@ export function generateIndexFromChain(resolved, minSupportedVersion) {
44
47
  output += `export * from "${TYPES_REEXPORT_PATH}";\n`;
45
48
  output += `export * from "${VERSIONS_PATH}";\n`;
46
49
  output += `export * from "${VERSIONED_DOC_REF_PATH}";\n`;
50
+ output += `export * from "${DOCUMENT_TYPE_PATH}";\n`;
51
+ // The typed upgrade-function table shape. Apps reference this type when
52
+ // constructing the value passed to `DocumentModel(...)`.
53
+ output += `export { type DocumentUpgradeFns } from "${INTERNAL_UPGRADE_FNS_PATH}";\n`;
47
54
 
48
55
  // Per-version explicit named type exports
49
56
  for (const {
@@ -1 +1 @@
1
- {"version":3,"file":"generateIndexFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","resolveMinVersion","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 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 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\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,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,sBAAsBA,CACpCC,QAAyB,EACzBC,mBAA4B,EACpB;EACR,MAAM;IAAEC;EAAM,CAAC,GAAGF,QAAQ;EAC1B,MAAM;IAAEG;EAAW,CAAC,GAAGX,iBAAiB,CAACU,KAAK,EAAED,mBAAmB,CAAC;EAEpE,IAAIG,MAAM,GAAGb,qBAAqB;;EAElC;EACAa,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;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,GAAG7B,iBAAiB,CAACyB,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":[]}
1
+ {"version":3,"file":"generateIndexFromSchema.js","names":["formatVariantName","GENERATED_FILE_HEADER","resolveMinVersion","DOCUMENT_TYPE_PATH","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 DOCUMENT_TYPE_PATH,\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 * - `documentType.js` (star export — DOCUMENT_TYPE_NAME and DOCUMENT_TYPE_DESCRIPTION)\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 output += `export * from \"${DOCUMENT_TYPE_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,kBAAkB,EAClBC,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;AACA,OAAO,SAASC,sBAAsBA,CACpCC,QAAyB,EACzBC,mBAA4B,EACpB;EACR,MAAM;IAAEC;EAAM,CAAC,GAAGF,QAAQ;EAC1B,MAAM;IAAEG;EAAW,CAAC,GAAGb,iBAAiB,CAACY,KAAK,EAAED,mBAAmB,CAAC;EAEpE,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;EACxDQ,MAAM,IAAI,kBAAkBb,kBAAkB,MAAM;EACpD;EACA;EACAa,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,GAAG/B,iBAAiB,CAAC2B,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":[]}
@@ -16,6 +16,7 @@
16
16
 
17
17
  import { GENERATED_FILE_HEADER } from "../generatedFileHeader.js";
18
18
  import { convertFieldTypeToDescriptor, convertFieldTypeToInternalTypeScript, convertFieldTypeToInternalZod } from "../ir/irFieldHelpers.js";
19
+ import { chainHasDerivedFields } from "./resolveSchemaChain.js";
19
20
 
20
21
  /** Collected info about all fields for a model across all versions. */
21
22
 
@@ -94,13 +95,11 @@ function collectRecordModels(chain) {
94
95
  const annotation = recordUpgrades?.[fieldKey];
95
96
  if (annotation != null) {
96
97
  addedFields.set(fieldKey, {
97
- derivedFrom: [...annotation.derivedFrom],
98
- forwardSource: annotation.forwardSource
98
+ derivedFrom: [...annotation.derivedFrom]
99
99
  });
100
100
  } else {
101
101
  addedFields.set(fieldKey, {
102
- derivedFrom: [],
103
- forwardSource: "() => undefined"
102
+ derivedFrom: []
104
103
  });
105
104
  }
106
105
  }
@@ -115,7 +114,6 @@ function collectRecordModels(chain) {
115
114
  }
116
115
  if (addedFields.size > 0 || removedFields.length > 0) {
117
116
  model.steps.push({
118
- name: `v${currEntry.version}`,
119
117
  addedInVersion: currEntry.version,
120
118
  fields: addedFields,
121
119
  removedFields
@@ -155,6 +153,56 @@ function generateInternalTypes(allRecordModels) {
155
153
  return output;
156
154
  }
157
155
 
156
+ /**
157
+ * Generate per-version internal interfaces (e.g. `ShapeBox__v1`, `ShapeBox__v2`).
158
+ *
159
+ * Each interface contains only the fields present in that version, with their
160
+ * actual optionality taken straight from that version's IR. The downstream
161
+ * `DocumentUpgradeFns` generator uses these so each upgrade function's
162
+ * parameter can `Pick` the prior version's fields and its return type can
163
+ * index the current version's field type precisely.
164
+ */
165
+ function generatePerVersionInternalTypes(chain) {
166
+ // Group by model so each model's versions appear together in ascending order.
167
+ const perModelVersions = new Map();
168
+ for (const {
169
+ version,
170
+ ir
171
+ } of chain) {
172
+ for (const [modelKey, modelDef] of Object.entries(ir.models)) {
173
+ if (modelDef.type !== "record") continue;
174
+ let list = perModelVersions.get(modelKey);
175
+ if (list == null) {
176
+ list = [];
177
+ perModelVersions.set(modelKey, list);
178
+ }
179
+ list.push({
180
+ version,
181
+ fields: modelDef.record.fields
182
+ });
183
+ }
184
+ }
185
+ let output = "";
186
+ const sortedModels = Array.from(perModelVersions.entries()).sort(([a], [b]) => a.localeCompare(b));
187
+ for (const [modelKey, versions] of sortedModels) {
188
+ for (const {
189
+ version,
190
+ fields
191
+ } of versions) {
192
+ output += `/** Internal representation of ${modelKey} at schema version ${version}. */\n`;
193
+ output += `export interface ${modelKey}__v${version} {\n`;
194
+ const sortedFields = [...fields].sort((a, b) => a.key.localeCompare(b.key));
195
+ for (const field of sortedFields) {
196
+ const tsType = convertFieldTypeToInternalTypeScript(field.fieldType, field.isOptional === true);
197
+ const optional = field.isOptional === true ? "?" : "";
198
+ output += ` readonly ${field.key}${optional}: ${tsType};\n`;
199
+ }
200
+ output += "}\n\n";
201
+ }
202
+ }
203
+ return output;
204
+ }
205
+
158
206
  /**
159
207
  * Generate _internal/upgrades.ts content.
160
208
  */
@@ -184,13 +232,11 @@ function generateUpgrades(allRecordModels, latestIr) {
184
232
  output += ` steps: [\n`;
185
233
  for (const step of model.steps) {
186
234
  output += ` {\n`;
187
- output += ` name: "${step.name}",\n`;
188
235
  output += ` addedInVersion: ${step.addedInVersion},\n`;
189
236
  output += ` fields: {\n`;
190
237
  for (const [fieldName, fieldMeta] of step.fields) {
191
238
  output += ` ${fieldName}: {\n`;
192
239
  output += ` derivedFrom: [${fieldMeta.derivedFrom.map(d => `"${d}"`).join(", ")}],\n`;
193
- output += ` forward: ${fieldMeta.forwardSource},\n`;
194
240
  if (fieldMeta.default !== undefined) {
195
241
  output += ` default: ${JSON.stringify(fieldMeta.default)},\n`;
196
242
  }
@@ -243,8 +289,87 @@ function generateInternalSchemaContent(allRecordModels) {
243
289
  }
244
290
 
245
291
  /**
246
- * Generate _internal/types.ts, _internal/upgrades.ts, and _internal/schema.ts
247
- * from an already-resolved versioned IR chain.
292
+ * Generate _internal/upgradeFns.ts content: a typed `DocumentUpgradeFns`
293
+ * interface enumerating every upgrade function the app must supply at boot.
294
+ *
295
+ * For every `(modelName, v${version}, fieldName)` triple where `derivedFrom` is
296
+ * non-empty, emit a property typed
297
+ * `(oldFields: Pick<<Model>__v<prior>, derivedFrom[number]>) => <Model>__v<current>[fieldName]`.
298
+ * Additive fields (empty `derivedFrom`) are intentionally absent — they are
299
+ * handled by the structural `default` in `_internal/upgrades.ts`.
300
+ *
301
+ * The interface is consumed by the generated `DocumentModel` factory in
302
+ * `models.ts`, which requires it as a parameter when the schema has any
303
+ * derived fields. Schemas without derived fields emit an empty interface
304
+ * (still exported for type-uniformity in downstream code).
305
+ */
306
+ function generateUpgradeFns(chain, allRecordModels) {
307
+ const perModel = new Map();
308
+ const neededTypes = new Set();
309
+ for (const [modelKey, model] of sortedEntries(allRecordModels)) {
310
+ for (const step of model.steps) {
311
+ const currentIdx = chain.findIndex(c => c.version === step.addedInVersion);
312
+ if (currentIdx <= 0) continue;
313
+ const priorVersion = chain[currentIdx - 1].version;
314
+ const fields = [];
315
+ for (const [fieldName, fieldMeta] of step.fields) {
316
+ if (fieldMeta.derivedFrom.length === 0) continue;
317
+ fields.push({
318
+ fieldName,
319
+ derivedFrom: [...fieldMeta.derivedFrom]
320
+ });
321
+ }
322
+ if (fields.length === 0) continue;
323
+ let list = perModel.get(modelKey);
324
+ if (list == null) {
325
+ list = [];
326
+ perModel.set(modelKey, list);
327
+ }
328
+ list.push({
329
+ currentVersion: step.addedInVersion,
330
+ priorVersion,
331
+ fields
332
+ });
333
+ neededTypes.add(`${modelKey}__v${priorVersion}`);
334
+ neededTypes.add(`${modelKey}__v${step.addedInVersion}`);
335
+ }
336
+ }
337
+ let output = GENERATED_FILE_HEADER;
338
+ output += `\n`;
339
+ if (neededTypes.size > 0) {
340
+ const sorted = Array.from(neededTypes).sort();
341
+ output += `import type { ${sorted.join(", ")} } from "./types.js";\n\n`;
342
+ }
343
+ output += `/**\n`;
344
+ output += ` * Typed upgrade functions the application must supply at boot. Coverage is\n`;
345
+ output += ` * exhaustive: missing or extra entries fail type-check at the \`DocumentModel(...)\`\n`;
346
+ output += ` * call site. Additive fields (empty \`derivedFrom\`) are intentionally absent.\n`;
347
+ output += ` */\n`;
348
+ if (perModel.size === 0) {
349
+ output += `// eslint-disable-next-line @typescript-eslint/no-empty-object-type\n`;
350
+ output += `export interface DocumentUpgradeFns {}\n`;
351
+ } else {
352
+ output += `export interface DocumentUpgradeFns {\n`;
353
+ for (const [modelKey, steps] of Array.from(perModel.entries()).sort(([a], [b]) => a.localeCompare(b))) {
354
+ output += ` ${modelKey}: {\n`;
355
+ for (const step of steps) {
356
+ output += ` v${step.currentVersion}: {\n`;
357
+ for (const f of step.fields) {
358
+ const pickKeys = f.derivedFrom.map(d => `"${d}"`).join(" | ");
359
+ output += ` ${f.fieldName}: (oldFields: Pick<${modelKey}__v${step.priorVersion}, ${pickKeys}>) => ${modelKey}__v${step.currentVersion}["${f.fieldName}"];\n`;
360
+ }
361
+ output += ` };\n`;
362
+ }
363
+ output += ` };\n`;
364
+ }
365
+ output += `}\n`;
366
+ }
367
+ return output;
368
+ }
369
+
370
+ /**
371
+ * Generate _internal/types.ts, _internal/upgrades.ts, _internal/schema.ts and
372
+ * _internal/upgradeFns.ts from an already-resolved versioned IR chain.
248
373
  */
249
374
  export function generateInternalFromChain(resolved) {
250
375
  const {
@@ -252,13 +377,15 @@ export function generateInternalFromChain(resolved) {
252
377
  } = resolved;
253
378
  const latestIr = chain[chain.length - 1].ir;
254
379
  const allRecordModels = collectRecordModels(chain);
255
- const internalTypes = generateInternalTypes(allRecordModels);
380
+ const internalTypes = generateInternalTypes(allRecordModels) + (chainHasDerivedFields(chain) ? generatePerVersionInternalTypes(chain) : "");
256
381
  const upgrades = generateUpgrades(allRecordModels, latestIr);
257
382
  const internalSchema = generateInternalSchemaContent(allRecordModels);
383
+ const internalUpgradeFns = generateUpgradeFns(chain, allRecordModels);
258
384
  return {
259
385
  internalTypes,
260
386
  upgrades,
261
- internalSchema
387
+ internalSchema,
388
+ internalUpgradeFns
262
389
  };
263
390
  }
264
391
  //# sourceMappingURL=generateInternalFromSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateInternalFromSchema.js","names":["GENERATED_FILE_HEADER","convertFieldTypeToDescriptor","convertFieldTypeToInternalTypeScript","convertFieldTypeToInternalZod","sortedEntries","map","Array","from","entries","sort","a","b","localeCompare","collectRecordModels","chain","allRecordModels","Map","version","ir","modelKey","modelDef","Object","models","type","has","set","allFields","steps","model","get","field","record","fields","existing","key","fieldType","isOptional","presentInVersions","Set","alwaysOptional","everOptional","add","i","length","prevEntry","currEntry","currModelDef","prevModelDef","prevFields","f","currFields","addedFields","recordUpgrades","migrations","fieldKey","annotation","derivedFrom","forwardSource","removedFields","push","size","name","addedInVersion","totalVersions","values","fieldInfo","generateInternalTypes","output","fieldName","tsType","optional","generateUpgrades","latestIr","hasRecords","hasUnions","some","m","imports","join","typeDescriptor","step","fieldMeta","d","default","undefined","JSON","stringify","union","discriminant","variantKey","variantModelKey","variants","generateInternalSchemaContent","zodType","generateInternalFromChain","resolved","internalTypes","upgrades","internalSchema"],"sources":["generateInternalFromSchema.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 {\n IFieldTypeUnion,\n IRealTimeDocumentSchema,\n} from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport {\n convertFieldTypeToDescriptor,\n convertFieldTypeToInternalTypeScript,\n convertFieldTypeToInternalZod,\n} from \"../ir/irFieldHelpers.js\";\nimport type { ResolvedIrChain, VersionedIrEntry } from \"./resolveSchemaChain.js\";\n\nexport interface InternalTypesOutput {\n /** _internal/types.ts content */\n internalTypes: string;\n /** _internal/upgrades.ts content */\n upgrades: string;\n /** _internal/schema.ts content */\n internalSchema: string;\n}\n\n/** Collected info about all fields for a model across all versions. */\ninterface AllFieldInfo {\n fieldType: IFieldTypeUnion;\n isOptional: boolean;\n /** Versions where this field exists. */\n presentInVersions: Set<number>;\n /** Whether field is always optional. */\n alwaysOptional: boolean;\n /** Whether field is optional in at least one version. */\n everOptional: boolean;\n}\n\n/**\n * Represents an upgrade step for a model between version transitions.\n */\ninterface UpgradeStep {\n name: string;\n addedInVersion: number;\n fields: Map<string, { derivedFrom: string[]; forwardSource: string; default?: unknown }>;\n removedFields: string[];\n}\n\ninterface RecordModelInfo {\n allFields: Map<string, AllFieldInfo>;\n steps: UpgradeStep[];\n}\n\n/**\n * Helper to iterate sorted entries of a Map.\n */\nfunction sortedEntries<V>(map: Map<string, V>): [string, V][] {\n return Array.from(map.entries()).sort(([a], [b]) => a.localeCompare(b));\n}\n\n/**\n * Collect all record model info across all versions and compute upgrade steps.\n */\nfunction collectRecordModels(\n chain: VersionedIrEntry[],\n): Map<string, RecordModelInfo> {\n const allRecordModels = new Map<string, RecordModelInfo>();\n\n // Initialize models from all versions\n for (const { version, ir } of chain) {\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type !== \"record\") continue;\n\n if (!allRecordModels.has(modelKey)) {\n allRecordModels.set(modelKey, {\n allFields: new Map(),\n steps: [],\n });\n }\n\n const model = allRecordModels.get(modelKey)!;\n\n for (const field of modelDef.record.fields) {\n const existing = model.allFields.get(field.key);\n if (existing == null) {\n model.allFields.set(field.key, {\n fieldType: field.fieldType,\n isOptional: field.isOptional === true,\n presentInVersions: new Set([version]),\n alwaysOptional: field.isOptional === true,\n everOptional: field.isOptional === true,\n });\n } else {\n existing.presentInVersions.add(version);\n if (field.isOptional !== true) {\n existing.alwaysOptional = false;\n }\n if (field.isOptional === true) {\n existing.everOptional = true;\n }\n }\n }\n }\n }\n\n // Compute upgrade steps from version diffs\n for (let i = 1; i < chain.length; i++) {\n const prevEntry = chain[i - 1]!;\n const currEntry = chain[i]!;\n\n for (const [modelKey, currModelDef] of Object.entries(currEntry.ir.models)) {\n if (currModelDef.type !== \"record\") continue;\n\n const prevModelDef = prevEntry.ir.models[modelKey];\n if (prevModelDef == null || prevModelDef.type !== \"record\") continue;\n\n const model = allRecordModels.get(modelKey);\n if (model == null) continue;\n\n const prevFields = new Set(prevModelDef.record.fields.map(f => f.key));\n const currFields = new Set(currModelDef.record.fields.map(f => f.key));\n\n // Fields added in this version\n const addedFields = new Map<\n string,\n { derivedFrom: string[]; forwardSource: string; default?: unknown }\n >();\n const recordUpgrades = currEntry.migrations?.[modelKey];\n for (const fieldKey of currFields) {\n if (!prevFields.has(fieldKey)) {\n const annotation = recordUpgrades?.[fieldKey];\n if (annotation != null) {\n addedFields.set(fieldKey, {\n derivedFrom: [...annotation.derivedFrom],\n forwardSource: annotation.forwardSource,\n });\n } else {\n addedFields.set(fieldKey, {\n derivedFrom: [],\n forwardSource: \"() => undefined\",\n });\n }\n }\n }\n\n // Fields removed in this version\n const removedFields: string[] = [];\n for (const fieldKey of prevFields) {\n if (!currFields.has(fieldKey)) {\n removedFields.push(fieldKey);\n }\n }\n\n if (addedFields.size > 0 || removedFields.length > 0) {\n model.steps.push({\n name: `v${currEntry.version}`,\n addedInVersion: currEntry.version,\n fields: addedFields,\n removedFields,\n });\n }\n }\n }\n\n // Mark fields that are not present in ALL versions as optional in internal type\n const totalVersions = chain.length;\n for (const model of allRecordModels.values()) {\n for (const [, fieldInfo] of model.allFields) {\n if (fieldInfo.presentInVersions.size < totalVersions) {\n fieldInfo.alwaysOptional = true;\n }\n }\n }\n\n return allRecordModels;\n}\n\n/**\n * Generate _internal/types.ts content.\n */\nfunction generateInternalTypes(\n allRecordModels: Map<string, RecordModelInfo>,\n): string {\n let output = GENERATED_FILE_HEADER;\n output += \"\\n\";\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `/** Internal representation containing all fields across all schema versions. */\\n`;\n output += `export interface ${modelKey}__Internal {\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const tsType = convertFieldTypeToInternalTypeScript(\n fieldInfo.fieldType,\n fieldInfo.isOptional,\n );\n const optional = fieldInfo.alwaysOptional ? \"?\" : \"\";\n output += ` readonly ${fieldName}${optional}: ${tsType};\\n`;\n }\n\n output += \"}\\n\\n\";\n }\n\n return output;\n}\n\n/**\n * Generate _internal/upgrades.ts content.\n */\nfunction generateUpgrades(\n allRecordModels: Map<string, RecordModelInfo>,\n latestIr: IRealTimeDocumentSchema,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n const hasRecords = allRecordModels.size > 0;\n const hasUnions = Object.values(latestIr.models).some(m => m.type === \"union\");\n\n const imports: string[] = [];\n if (hasRecords) imports.push(\"UpgradeRegistry\");\n if (hasUnions) imports.push(\"UnionUpgradeRegistry\");\n\n if (imports.length > 0) {\n output += `import type { ${\n imports.join(\", \")\n } } from \"@palantir/pack.document-schema.model-types\";\\n\\n`;\n }\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `export const ${modelKey}Upgrades: UpgradeRegistry<\"${modelKey}\"> = {\\n`;\n output += ` modelName: \"${modelKey}\",\\n`;\n\n // allFields\n output += ` allFields: {\\n`;\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const typeDescriptor = convertFieldTypeToDescriptor(\n fieldInfo.fieldType,\n fieldInfo.isOptional,\n );\n output += ` ${fieldName}: { type: ${typeDescriptor} },\\n`;\n }\n output += ` },\\n`;\n\n // steps\n output += ` steps: [\\n`;\n for (const step of model.steps) {\n output += ` {\\n`;\n output += ` name: \"${step.name}\",\\n`;\n output += ` addedInVersion: ${step.addedInVersion},\\n`;\n output += ` fields: {\\n`;\n for (const [fieldName, fieldMeta] of step.fields) {\n output += ` ${fieldName}: {\\n`;\n output += ` derivedFrom: [${\n fieldMeta.derivedFrom.map(d => `\"${d}\"`).join(\", \")\n }],\\n`;\n output += ` forward: ${fieldMeta.forwardSource},\\n`;\n if (fieldMeta.default !== undefined) {\n output += ` default: ${JSON.stringify(fieldMeta.default)},\\n`;\n }\n output += ` },\\n`;\n }\n output += ` },\\n`;\n if (step.removedFields.length > 0) {\n output += ` removedFields: [${step.removedFields.map(f => `\"${f}\"`).join(\", \")}],\\n`;\n }\n output += ` },\\n`;\n }\n output += ` ],\\n`;\n\n output += `};\\n\\n`;\n }\n\n // Generate UnionUpgradeRegistry entries for union models\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type !== \"union\") continue;\n\n const union = modelDef.union;\n output += `export const ${modelKey}Upgrades: UnionUpgradeRegistry<\"${modelKey}\"> = {\\n`;\n output += ` modelName: \"${modelKey}\",\\n`;\n output += ` discriminant: \"${union.discriminant}\",\\n`;\n output += ` variants: {\\n`;\n for (const [variantKey, variantModelKey] of Object.entries(union.variants)) {\n output += ` \"${variantKey}\": \"${variantModelKey}\",\\n`;\n }\n output += ` },\\n`;\n output += `};\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate _internal/schema.ts content.\n */\nfunction generateInternalSchemaContent(\n allRecordModels: Map<string, RecordModelInfo>,\n): string {\n let output = GENERATED_FILE_HEADER;\n output += `import { z } from \"zod\";\\n\\n`;\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `export const ${modelKey}InternalSchema = z.object({\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n // Use everOptional: a field optional in ANY version must stay optional\n // in the internal schema because older documents may legitimately omit it.\n const zodType = convertFieldTypeToInternalZod(\n fieldInfo.fieldType,\n fieldInfo.alwaysOptional || fieldInfo.everOptional,\n );\n output += ` ${fieldName}: ${zodType},\\n`;\n }\n\n output += `}).passthrough();\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate _internal/types.ts, _internal/upgrades.ts, and _internal/schema.ts\n * from an already-resolved versioned IR chain.\n */\nexport function generateInternalFromChain(\n resolved: ResolvedIrChain,\n): InternalTypesOutput {\n const { chain } = resolved;\n const latestIr = chain[chain.length - 1]!.ir;\n\n const allRecordModels = collectRecordModels(chain);\n\n const internalTypes = generateInternalTypes(allRecordModels);\n const upgrades = generateUpgrades(allRecordModels, latestIr);\n const internalSchema = generateInternalSchemaContent(allRecordModels);\n\n return { internalTypes, upgrades, internalSchema };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateInternalFromSchema.js","names":["GENERATED_FILE_HEADER","convertFieldTypeToDescriptor","convertFieldTypeToInternalTypeScript","convertFieldTypeToInternalZod","chainHasDerivedFields","sortedEntries","map","Array","from","entries","sort","a","b","localeCompare","collectRecordModels","chain","allRecordModels","Map","version","ir","modelKey","modelDef","Object","models","type","has","set","allFields","steps","model","get","field","record","fields","existing","key","fieldType","isOptional","presentInVersions","Set","alwaysOptional","everOptional","add","i","length","prevEntry","currEntry","currModelDef","prevModelDef","prevFields","f","currFields","addedFields","recordUpgrades","migrations","fieldKey","annotation","derivedFrom","removedFields","push","size","addedInVersion","totalVersions","values","fieldInfo","generateInternalTypes","output","fieldName","tsType","optional","generatePerVersionInternalTypes","perModelVersions","list","sortedModels","versions","sortedFields","generateUpgrades","latestIr","hasRecords","hasUnions","some","m","imports","join","typeDescriptor","step","fieldMeta","d","default","undefined","JSON","stringify","union","discriminant","variantKey","variantModelKey","variants","generateInternalSchemaContent","zodType","generateUpgradeFns","perModel","neededTypes","currentIdx","findIndex","c","priorVersion","currentVersion","sorted","pickKeys","generateInternalFromChain","resolved","internalTypes","upgrades","internalSchema","internalUpgradeFns"],"sources":["generateInternalFromSchema.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 {\n IFieldDef,\n IFieldTypeUnion,\n IRealTimeDocumentSchema,\n} from \"../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport {\n convertFieldTypeToDescriptor,\n convertFieldTypeToInternalTypeScript,\n convertFieldTypeToInternalZod,\n} from \"../ir/irFieldHelpers.js\";\nimport {\n chainHasDerivedFields,\n type ResolvedIrChain,\n type VersionedIrEntry,\n} from \"./resolveSchemaChain.js\";\n\nexport interface InternalTypesOutput {\n /** _internal/types.ts content */\n internalTypes: string;\n /** _internal/upgrades.ts content */\n upgrades: string;\n /** _internal/schema.ts content */\n internalSchema: string;\n /** _internal/upgradeFns.ts content */\n internalUpgradeFns: string;\n}\n\n/** Collected info about all fields for a model across all versions. */\ninterface AllFieldInfo {\n fieldType: IFieldTypeUnion;\n isOptional: boolean;\n /** Versions where this field exists. */\n presentInVersions: Set<number>;\n /** Whether field is always optional. */\n alwaysOptional: boolean;\n /** Whether field is optional in at least one version. */\n everOptional: boolean;\n}\n\n/**\n * Represents an upgrade step for a model between version transitions.\n */\ninterface UpgradeStep {\n addedInVersion: number;\n fields: Map<string, { derivedFrom: string[]; default?: unknown }>;\n removedFields: string[];\n}\n\ninterface RecordModelInfo {\n allFields: Map<string, AllFieldInfo>;\n steps: UpgradeStep[];\n}\n\n/**\n * Helper to iterate sorted entries of a Map.\n */\nfunction sortedEntries<V>(map: Map<string, V>): [string, V][] {\n return Array.from(map.entries()).sort(([a], [b]) => a.localeCompare(b));\n}\n\n/**\n * Collect all record model info across all versions and compute upgrade steps.\n */\nfunction collectRecordModels(\n chain: VersionedIrEntry[],\n): Map<string, RecordModelInfo> {\n const allRecordModels = new Map<string, RecordModelInfo>();\n\n // Initialize models from all versions\n for (const { version, ir } of chain) {\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type !== \"record\") continue;\n\n if (!allRecordModels.has(modelKey)) {\n allRecordModels.set(modelKey, {\n allFields: new Map(),\n steps: [],\n });\n }\n\n const model = allRecordModels.get(modelKey)!;\n\n for (const field of modelDef.record.fields) {\n const existing = model.allFields.get(field.key);\n if (existing == null) {\n model.allFields.set(field.key, {\n fieldType: field.fieldType,\n isOptional: field.isOptional === true,\n presentInVersions: new Set([version]),\n alwaysOptional: field.isOptional === true,\n everOptional: field.isOptional === true,\n });\n } else {\n existing.presentInVersions.add(version);\n if (field.isOptional !== true) {\n existing.alwaysOptional = false;\n }\n if (field.isOptional === true) {\n existing.everOptional = true;\n }\n }\n }\n }\n }\n\n // Compute upgrade steps from version diffs\n for (let i = 1; i < chain.length; i++) {\n const prevEntry = chain[i - 1]!;\n const currEntry = chain[i]!;\n\n for (const [modelKey, currModelDef] of Object.entries(currEntry.ir.models)) {\n if (currModelDef.type !== \"record\") continue;\n\n const prevModelDef = prevEntry.ir.models[modelKey];\n if (prevModelDef == null || prevModelDef.type !== \"record\") continue;\n\n const model = allRecordModels.get(modelKey);\n if (model == null) continue;\n\n const prevFields = new Set(prevModelDef.record.fields.map(f => f.key));\n const currFields = new Set(currModelDef.record.fields.map(f => f.key));\n\n // Fields added in this version\n const addedFields = new Map<\n string,\n { derivedFrom: string[]; default?: unknown }\n >();\n const recordUpgrades = currEntry.migrations?.[modelKey];\n for (const fieldKey of currFields) {\n if (!prevFields.has(fieldKey)) {\n const annotation = recordUpgrades?.[fieldKey];\n if (annotation != null) {\n addedFields.set(fieldKey, {\n derivedFrom: [...annotation.derivedFrom],\n });\n } else {\n addedFields.set(fieldKey, {\n derivedFrom: [],\n });\n }\n }\n }\n\n // Fields removed in this version\n const removedFields: string[] = [];\n for (const fieldKey of prevFields) {\n if (!currFields.has(fieldKey)) {\n removedFields.push(fieldKey);\n }\n }\n\n if (addedFields.size > 0 || removedFields.length > 0) {\n model.steps.push({\n addedInVersion: currEntry.version,\n fields: addedFields,\n removedFields,\n });\n }\n }\n }\n\n // Mark fields that are not present in ALL versions as optional in internal type\n const totalVersions = chain.length;\n for (const model of allRecordModels.values()) {\n for (const [, fieldInfo] of model.allFields) {\n if (fieldInfo.presentInVersions.size < totalVersions) {\n fieldInfo.alwaysOptional = true;\n }\n }\n }\n\n return allRecordModels;\n}\n\n/**\n * Generate _internal/types.ts content.\n */\nfunction generateInternalTypes(\n allRecordModels: Map<string, RecordModelInfo>,\n): string {\n let output = GENERATED_FILE_HEADER;\n output += \"\\n\";\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `/** Internal representation containing all fields across all schema versions. */\\n`;\n output += `export interface ${modelKey}__Internal {\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const tsType = convertFieldTypeToInternalTypeScript(\n fieldInfo.fieldType,\n fieldInfo.isOptional,\n );\n const optional = fieldInfo.alwaysOptional ? \"?\" : \"\";\n output += ` readonly ${fieldName}${optional}: ${tsType};\\n`;\n }\n\n output += \"}\\n\\n\";\n }\n\n return output;\n}\n\n/**\n * Generate per-version internal interfaces (e.g. `ShapeBox__v1`, `ShapeBox__v2`).\n *\n * Each interface contains only the fields present in that version, with their\n * actual optionality taken straight from that version's IR. The downstream\n * `DocumentUpgradeFns` generator uses these so each upgrade function's\n * parameter can `Pick` the prior version's fields and its return type can\n * index the current version's field type precisely.\n */\nfunction generatePerVersionInternalTypes(\n chain: VersionedIrEntry[],\n): string {\n // Group by model so each model's versions appear together in ascending order.\n const perModelVersions = new Map<\n string,\n { version: number; fields: readonly IFieldDef[] }[]\n >();\n\n for (const { version, ir } of chain) {\n for (const [modelKey, modelDef] of Object.entries(ir.models)) {\n if (modelDef.type !== \"record\") continue;\n let list = perModelVersions.get(modelKey);\n if (list == null) {\n list = [];\n perModelVersions.set(modelKey, list);\n }\n list.push({ version, fields: modelDef.record.fields });\n }\n }\n\n let output = \"\";\n const sortedModels = Array.from(perModelVersions.entries()).sort(([a], [b]) =>\n a.localeCompare(b)\n );\n for (const [modelKey, versions] of sortedModels) {\n for (const { version, fields } of versions) {\n output += `/** Internal representation of ${modelKey} at schema version ${version}. */\\n`;\n output += `export interface ${modelKey}__v${version} {\\n`;\n const sortedFields = [...fields].sort((a, b) => a.key.localeCompare(b.key));\n for (const field of sortedFields) {\n const tsType = convertFieldTypeToInternalTypeScript(\n field.fieldType,\n field.isOptional === true,\n );\n const optional = field.isOptional === true ? \"?\" : \"\";\n output += ` readonly ${field.key}${optional}: ${tsType};\\n`;\n }\n output += \"}\\n\\n\";\n }\n }\n return output;\n}\n\n/**\n * Generate _internal/upgrades.ts content.\n */\nfunction generateUpgrades(\n allRecordModels: Map<string, RecordModelInfo>,\n latestIr: IRealTimeDocumentSchema,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n const hasRecords = allRecordModels.size > 0;\n const hasUnions = Object.values(latestIr.models).some(m => m.type === \"union\");\n\n const imports: string[] = [];\n if (hasRecords) imports.push(\"UpgradeRegistry\");\n if (hasUnions) imports.push(\"UnionUpgradeRegistry\");\n\n if (imports.length > 0) {\n output += `import type { ${\n imports.join(\", \")\n } } from \"@palantir/pack.document-schema.model-types\";\\n\\n`;\n }\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `export const ${modelKey}Upgrades: UpgradeRegistry<\"${modelKey}\"> = {\\n`;\n output += ` modelName: \"${modelKey}\",\\n`;\n\n // allFields\n output += ` allFields: {\\n`;\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const typeDescriptor = convertFieldTypeToDescriptor(\n fieldInfo.fieldType,\n fieldInfo.isOptional,\n );\n output += ` ${fieldName}: { type: ${typeDescriptor} },\\n`;\n }\n output += ` },\\n`;\n\n // steps\n output += ` steps: [\\n`;\n for (const step of model.steps) {\n output += ` {\\n`;\n output += ` addedInVersion: ${step.addedInVersion},\\n`;\n output += ` fields: {\\n`;\n for (const [fieldName, fieldMeta] of step.fields) {\n output += ` ${fieldName}: {\\n`;\n output += ` derivedFrom: [${\n fieldMeta.derivedFrom.map(d => `\"${d}\"`).join(\", \")\n }],\\n`;\n if (fieldMeta.default !== undefined) {\n output += ` default: ${JSON.stringify(fieldMeta.default)},\\n`;\n }\n output += ` },\\n`;\n }\n output += ` },\\n`;\n if (step.removedFields.length > 0) {\n output += ` removedFields: [${step.removedFields.map(f => `\"${f}\"`).join(\", \")}],\\n`;\n }\n output += ` },\\n`;\n }\n output += ` ],\\n`;\n\n output += `};\\n\\n`;\n }\n\n // Generate UnionUpgradeRegistry entries for union models\n for (const [modelKey, modelDef] of Object.entries(latestIr.models)) {\n if (modelDef.type !== \"union\") continue;\n\n const union = modelDef.union;\n output += `export const ${modelKey}Upgrades: UnionUpgradeRegistry<\"${modelKey}\"> = {\\n`;\n output += ` modelName: \"${modelKey}\",\\n`;\n output += ` discriminant: \"${union.discriminant}\",\\n`;\n output += ` variants: {\\n`;\n for (const [variantKey, variantModelKey] of Object.entries(union.variants)) {\n output += ` \"${variantKey}\": \"${variantModelKey}\",\\n`;\n }\n output += ` },\\n`;\n output += `};\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate _internal/schema.ts content.\n */\nfunction generateInternalSchemaContent(\n allRecordModels: Map<string, RecordModelInfo>,\n): string {\n let output = GENERATED_FILE_HEADER;\n output += `import { z } from \"zod\";\\n\\n`;\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n output += `export const ${modelKey}InternalSchema = z.object({\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n // Use everOptional: a field optional in ANY version must stay optional\n // in the internal schema because older documents may legitimately omit it.\n const zodType = convertFieldTypeToInternalZod(\n fieldInfo.fieldType,\n fieldInfo.alwaysOptional || fieldInfo.everOptional,\n );\n output += ` ${fieldName}: ${zodType},\\n`;\n }\n\n output += `}).passthrough();\\n\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate _internal/upgradeFns.ts content: a typed `DocumentUpgradeFns`\n * interface enumerating every upgrade function the app must supply at boot.\n *\n * For every `(modelName, v${version}, fieldName)` triple where `derivedFrom` is\n * non-empty, emit a property typed\n * `(oldFields: Pick<<Model>__v<prior>, derivedFrom[number]>) => <Model>__v<current>[fieldName]`.\n * Additive fields (empty `derivedFrom`) are intentionally absent — they are\n * handled by the structural `default` in `_internal/upgrades.ts`.\n *\n * The interface is consumed by the generated `DocumentModel` factory in\n * `models.ts`, which requires it as a parameter when the schema has any\n * derived fields. Schemas without derived fields emit an empty interface\n * (still exported for type-uniformity in downstream code).\n */\nfunction generateUpgradeFns(\n chain: VersionedIrEntry[],\n allRecordModels: Map<string, RecordModelInfo>,\n): string {\n interface UpgradeFnEntry {\n fieldName: string;\n derivedFrom: readonly string[];\n }\n interface StepEntry {\n currentVersion: number;\n priorVersion: number;\n fields: UpgradeFnEntry[];\n }\n\n const perModel = new Map<string, StepEntry[]>();\n const neededTypes = new Set<string>();\n\n for (const [modelKey, model] of sortedEntries(allRecordModels)) {\n for (const step of model.steps) {\n const currentIdx = chain.findIndex(c => c.version === step.addedInVersion);\n if (currentIdx <= 0) continue;\n const priorVersion = chain[currentIdx - 1]!.version;\n\n const fields: UpgradeFnEntry[] = [];\n for (const [fieldName, fieldMeta] of step.fields) {\n if (fieldMeta.derivedFrom.length === 0) continue;\n fields.push({ fieldName, derivedFrom: [...fieldMeta.derivedFrom] });\n }\n if (fields.length === 0) continue;\n\n let list = perModel.get(modelKey);\n if (list == null) {\n list = [];\n perModel.set(modelKey, list);\n }\n list.push({\n currentVersion: step.addedInVersion,\n priorVersion,\n fields,\n });\n neededTypes.add(`${modelKey}__v${priorVersion}`);\n neededTypes.add(`${modelKey}__v${step.addedInVersion}`);\n }\n }\n\n let output = GENERATED_FILE_HEADER;\n output += `\\n`;\n\n if (neededTypes.size > 0) {\n const sorted = Array.from(neededTypes).sort();\n output += `import type { ${sorted.join(\", \")} } from \"./types.js\";\\n\\n`;\n }\n\n output += `/**\\n`;\n output += ` * Typed upgrade functions the application must supply at boot. Coverage is\\n`;\n output +=\n ` * exhaustive: missing or extra entries fail type-check at the \\`DocumentModel(...)\\`\\n`;\n output += ` * call site. Additive fields (empty \\`derivedFrom\\`) are intentionally absent.\\n`;\n output += ` */\\n`;\n if (perModel.size === 0) {\n output += `// eslint-disable-next-line @typescript-eslint/no-empty-object-type\\n`;\n output += `export interface DocumentUpgradeFns {}\\n`;\n } else {\n output += `export interface DocumentUpgradeFns {\\n`;\n for (\n const [modelKey, steps] of Array.from(perModel.entries()).sort(([a], [b]) =>\n a.localeCompare(b)\n )\n ) {\n output += ` ${modelKey}: {\\n`;\n for (const step of steps) {\n output += ` v${step.currentVersion}: {\\n`;\n for (const f of step.fields) {\n const pickKeys = f.derivedFrom.map(d => `\"${d}\"`).join(\" | \");\n output +=\n ` ${f.fieldName}: (oldFields: Pick<${modelKey}__v${step.priorVersion}, ${pickKeys}>) => ${modelKey}__v${step.currentVersion}[\"${f.fieldName}\"];\\n`;\n }\n output += ` };\\n`;\n }\n output += ` };\\n`;\n }\n output += `}\\n`;\n }\n\n return output;\n}\n\n/**\n * Generate _internal/types.ts, _internal/upgrades.ts, _internal/schema.ts and\n * _internal/upgradeFns.ts from an already-resolved versioned IR chain.\n */\nexport function generateInternalFromChain(\n resolved: ResolvedIrChain,\n): InternalTypesOutput {\n const { chain } = resolved;\n const latestIr = chain[chain.length - 1]!.ir;\n\n const allRecordModels = collectRecordModels(chain);\n\n const internalTypes = generateInternalTypes(allRecordModels)\n + (chainHasDerivedFields(chain) ? generatePerVersionInternalTypes(chain) : \"\");\n const upgrades = generateUpgrades(allRecordModels, latestIr);\n const internalSchema = generateInternalSchemaContent(allRecordModels);\n const internalUpgradeFns = generateUpgradeFns(chain, allRecordModels);\n\n return { internalTypes, upgrades, internalSchema, internalUpgradeFns };\n}\n"],"mappings":"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","ignoreList":[]}