@palantir/pack.document-schema.type-gen 0.7.0 → 0.9.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 (195) hide show
  1. package/build/esm/cli.js +2 -0
  2. package/build/esm/cli.js.map +1 -1
  3. package/build/esm/commands/asset/assetDeployHandler.js +60 -0
  4. package/build/esm/commands/asset/assetDeployHandler.js.map +1 -0
  5. package/build/esm/commands/asset/registerAssetCommands.js +22 -0
  6. package/build/esm/commands/asset/registerAssetCommands.js.map +1 -0
  7. package/build/esm/commands/ir/irDeployHandler.js +5 -4
  8. package/build/esm/commands/ir/irDeployHandler.js.map +1 -1
  9. package/build/esm/commands/ir/irGenAssetHandler.js +19 -13
  10. package/build/esm/commands/ir/irGenAssetHandler.js.map +1 -1
  11. package/build/esm/commands/schema/registerSchemaCommands.js +2 -0
  12. package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
  13. package/build/esm/commands/schema/schemaGenTypesHandler.js +147 -0
  14. package/build/esm/commands/schema/schemaGenTypesHandler.js.map +1 -0
  15. package/build/esm/commands/steps/stepsGenIrHandler.js +6 -1
  16. package/build/esm/commands/steps/stepsGenIrHandler.js.map +1 -1
  17. package/build/esm/commands/types.js +2 -0
  18. package/build/esm/commands/types.js.map +1 -0
  19. package/build/esm/index.js +6 -0
  20. package/build/esm/index.js.map +1 -1
  21. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldDef.js.map +1 -1
  22. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.js.map +1 -1
  23. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.js.map +1 -1
  24. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.js.map +1 -1
  25. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/recordDef.js.map +1 -1
  26. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.js.map +1 -1
  27. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/unionDef.js.map +1 -1
  28. package/build/esm/utils/generatedFileHeader.js +1 -0
  29. package/build/esm/utils/generatedFileHeader.js.map +1 -1
  30. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
  31. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
  32. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
  33. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
  34. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
  35. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
  36. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
  37. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
  38. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
  39. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
  40. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
  41. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
  42. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
  43. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
  44. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
  45. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
  46. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
  47. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
  48. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
  49. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
  50. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
  51. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
  52. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js +323 -0
  53. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -0
  54. package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js +43 -61
  55. package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js.map +1 -1
  56. package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js +73 -103
  57. package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js.map +1 -1
  58. package/build/esm/utils/ir/convertIrToWireSchema.js +201 -0
  59. package/build/esm/utils/ir/convertIrToWireSchema.js.map +1 -0
  60. package/build/esm/utils/ir/generateModelsFromIr.js +2 -2
  61. package/build/esm/utils/ir/generateModelsFromIr.js.map +1 -1
  62. package/build/esm/utils/ir/generateZodSchemasFromIr.js +2 -2
  63. package/build/esm/utils/ir/generateZodSchemasFromIr.js.map +1 -1
  64. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js +2 -0
  65. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -0
  66. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js +2 -0
  67. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -0
  68. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js +2 -0
  69. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -0
  70. package/build/esm/utils/schema/__tests__/fixtures.js +207 -0
  71. package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -0
  72. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +41 -0
  73. package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -0
  74. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +41 -0
  75. package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -0
  76. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +37 -0
  77. package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -0
  78. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +55 -0
  79. package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -0
  80. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +55 -0
  81. package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -0
  82. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +37 -0
  83. package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -0
  84. package/build/esm/utils/schema/__tests__/snapshotUtils.js +106 -0
  85. package/build/esm/utils/schema/__tests__/snapshotUtils.js.map +1 -0
  86. package/build/esm/utils/schema/generateIndexFromSchema.js +72 -0
  87. package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -0
  88. package/build/esm/utils/schema/generateInternalFromSchema.js +380 -0
  89. package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -0
  90. package/build/esm/utils/schema/generateModelMetadataFromSchema.js +195 -0
  91. package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -0
  92. package/build/esm/utils/schema/generateScopeFromSchema.js +155 -0
  93. package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -0
  94. package/build/esm/utils/schema/generateTypesFromSchema.js +16 -30
  95. package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
  96. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +281 -0
  97. package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -0
  98. package/build/esm/utils/schema/generateVersionedZodFromSchema.js +189 -0
  99. package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -0
  100. package/build/esm/utils/schema/generateVersionsFromSchema.js +50 -0
  101. package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -0
  102. package/build/esm/utils/schema/resolveSchemaChain.js +54 -0
  103. package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -0
  104. package/build/esm/utils/schema/runtimeSchema.js +96 -0
  105. package/build/esm/utils/schema/runtimeSchema.js.map +1 -0
  106. package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
  107. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
  108. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
  109. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
  110. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
  111. package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
  112. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
  113. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
  114. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
  115. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js +81 -8
  116. package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
  117. package/build/esm/utils/steps/convertStepsToIr.js +8 -13
  118. package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
  119. package/build/esm/utils/steps/parseMigrationSteps.js +4 -2
  120. package/build/esm/utils/steps/parseMigrationSteps.js.map +1 -1
  121. package/build/types/cli.d.ts.map +1 -1
  122. package/build/types/commands/asset/assetDeployHandler.d.ts +10 -0
  123. package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -0
  124. package/build/types/commands/asset/registerAssetCommands.d.ts +3 -0
  125. package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -0
  126. package/build/types/commands/ir/irDeployHandler.d.ts +1 -1
  127. package/build/types/commands/ir/irDeployHandler.d.ts.map +1 -1
  128. package/build/types/commands/ir/irGenAssetHandler.d.ts +1 -1
  129. package/build/types/commands/ir/irGenAssetHandler.d.ts.map +1 -1
  130. package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
  131. package/build/types/commands/schema/schemaGenTypesHandler.d.ts +8 -0
  132. package/build/types/commands/schema/schemaGenTypesHandler.d.ts.map +1 -0
  133. package/build/types/commands/steps/stepsGenIrHandler.d.ts.map +1 -1
  134. package/build/types/commands/types.d.ts +12 -0
  135. package/build/types/commands/types.d.ts.map +1 -0
  136. package/build/types/index.d.ts +6 -0
  137. package/build/types/index.d.ts.map +1 -1
  138. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldDef.d.ts +2 -2
  139. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldDef.d.ts.map +1 -1
  140. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.d.ts +1 -0
  141. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueDatetime.d.ts.map +1 -1
  142. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.d.ts +1 -0
  143. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueMediaRef.d.ts.map +1 -1
  144. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.d.ts +3 -0
  145. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueText.d.ts.map +1 -1
  146. package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts +0 -2
  147. package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts.map +1 -1
  148. package/build/types/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.d.ts +2 -2
  149. package/build/types/lib/pack-docschema-api/pack-docschema-ir/schemaMeta.d.ts.map +1 -1
  150. package/build/types/lib/pack-docschema-api/pack-docschema-ir/unionDef.d.ts +1 -1
  151. package/build/types/lib/pack-docschema-api/pack-docschema-ir/unionDef.d.ts.map +1 -1
  152. package/build/types/utils/generatedFileHeader.d.ts +1 -0
  153. package/build/types/utils/generatedFileHeader.d.ts.map +1 -1
  154. package/build/types/utils/ir/__tests__/convertIrToWireSchema.test.d.ts +2 -0
  155. package/build/types/utils/ir/__tests__/convertIrToWireSchema.test.d.ts.map +1 -0
  156. package/build/types/utils/ir/convertIrToWireSchema.d.ts +17 -0
  157. package/build/types/utils/ir/convertIrToWireSchema.d.ts.map +1 -0
  158. package/build/types/utils/schema/__tests__/fixtures.d.ts +14 -0
  159. package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -0
  160. package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts +2 -0
  161. package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts.map +1 -0
  162. package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts +2 -0
  163. package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts.map +1 -0
  164. package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts +2 -0
  165. package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts.map +1 -0
  166. package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts +2 -0
  167. package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts.map +1 -0
  168. package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts +2 -0
  169. package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts.map +1 -0
  170. package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts +2 -0
  171. package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts.map +1 -0
  172. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts +47 -0
  173. package/build/types/utils/schema/__tests__/snapshotUtils.d.ts.map +1 -0
  174. package/build/types/utils/schema/generateIndexFromSchema.d.ts +14 -0
  175. package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -0
  176. package/build/types/utils/schema/generateInternalFromSchema.d.ts +18 -0
  177. package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -0
  178. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +15 -0
  179. package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -0
  180. package/build/types/utils/schema/generateScopeFromSchema.d.ts +13 -0
  181. package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -0
  182. package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
  183. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +18 -0
  184. package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -0
  185. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +16 -0
  186. package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -0
  187. package/build/types/utils/schema/generateVersionsFromSchema.d.ts +13 -0
  188. package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -0
  189. package/build/types/utils/schema/resolveSchemaChain.d.ts +18 -0
  190. package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -0
  191. package/build/types/utils/schema/runtimeSchema.d.ts +59 -0
  192. package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -0
  193. package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
  194. package/build/types/utils/steps/parseMigrationSteps.d.ts.map +1 -1
  195. package/package.json +4 -4
@@ -0,0 +1,106 @@
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 { format } from "prettier";
18
+ const prettierOpts = {
19
+ parser: "typescript",
20
+ singleQuote: true,
21
+ trailingComma: "es5"
22
+ };
23
+ async function fmt(code) {
24
+ return format(code, prettierOpts);
25
+ }
26
+ function section(filename, content) {
27
+ const bar = "=".repeat(60);
28
+ return `// ${bar}\n// ${filename}\n// ${bar}\n\n${content}`;
29
+ }
30
+
31
+ /**
32
+ * Combine a VersionedTypesOutput into a single snapshot string.
33
+ *
34
+ * Layout:
35
+ * // === types_v1.ts ===
36
+ * ...formatted code...
37
+ * // === writeTypes_v1.ts ===
38
+ * ...
39
+ * // === types.ts ===
40
+ * ...
41
+ */
42
+ export async function formatVersionedTypesSnapshot(result) {
43
+ const sections = [];
44
+ const sortedVersions = [...result.readTypes.keys()].sort((a, b) => a - b);
45
+ for (const version of sortedVersions) {
46
+ sections.push(section(`types_v${version}.ts`, await fmt(result.readTypes.get(version))));
47
+ }
48
+ for (const version of sortedVersions) {
49
+ sections.push(section(`writeTypes_v${version}.ts`, await fmt(result.writeTypes.get(version))));
50
+ }
51
+ sections.push(section("types.ts", await fmt(result.typesReExport)));
52
+ return sections.join("\n");
53
+ }
54
+
55
+ /**
56
+ * Format a ModelMetadataOutput into a snapshot string.
57
+ */
58
+ export async function formatModelMetadataSnapshot(result) {
59
+ return section("models.ts", await fmt(result.modelsFile));
60
+ }
61
+
62
+ /**
63
+ * Format a single generated string into a snapshot.
64
+ */
65
+ export async function formatSingleSnapshot(filename, code) {
66
+ return section(filename, await fmt(code));
67
+ }
68
+
69
+ /**
70
+ * Combine a VersionedZodOutput into a single snapshot string.
71
+ *
72
+ * Layout:
73
+ * // === schema_v1.ts ===
74
+ * ...formatted code...
75
+ * // === schema.ts ===
76
+ * ...
77
+ */
78
+ export async function formatVersionedZodSnapshot(result) {
79
+ const sections = [];
80
+ const sortedVersions = [...result.zodSchemas.keys()].sort((a, b) => a - b);
81
+ for (const version of sortedVersions) {
82
+ sections.push(section(`schema_v${version}.ts`, await fmt(result.zodSchemas.get(version))));
83
+ }
84
+ sections.push(section("schema.ts", await fmt(result.schemaReExport)));
85
+ return sections.join("\n");
86
+ }
87
+
88
+ /**
89
+ * Combine an InternalTypesOutput into a single snapshot string.
90
+ *
91
+ * Layout:
92
+ * // === _internal/types.ts ===
93
+ * ...formatted code...
94
+ * // === _internal/upgrades.ts ===
95
+ * ...
96
+ * // === _internal/schema.ts ===
97
+ * ...
98
+ */
99
+ export async function formatInternalTypesSnapshot(result) {
100
+ const sections = [];
101
+ sections.push(section("_internal/types.ts", await fmt(result.internalTypes)));
102
+ sections.push(section("_internal/upgrades.ts", await fmt(result.upgrades)));
103
+ sections.push(section("_internal/schema.ts", await fmt(result.internalSchema)));
104
+ return sections.join("\n");
105
+ }
106
+ //# sourceMappingURL=snapshotUtils.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,72 @@
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 { formatVariantName } from "../formatVariantName.js";
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";
21
+
22
+ /**
23
+ * Generate the index.ts barrel export from a versioned schema.
24
+ *
25
+ * Exports:
26
+ * - `models.js` (star export — model constants and DocumentModel)
27
+ * - `types.js` (star export — latest-version type aliases)
28
+ * - `versions.js` (star export — SupportedVersions, LatestVersion, MinSupportedVersion)
29
+ * - `versionedDocRef.js` (star export — VersionedDocRef types and factory)
30
+ * - Per supported version: explicit named type exports from `types_vN.js`
31
+ * (not star exports, to avoid polluting autocomplete for read-only consumers)
32
+ */
33
+ export function generateIndexFromSchema(schema, minSupportedVersion) {
34
+ const {
35
+ chain,
36
+ minVersion
37
+ } = resolveSchemaChain(schema, minSupportedVersion);
38
+ let output = GENERATED_FILE_HEADER;
39
+
40
+ // Star exports for core modules
41
+ output += `export * from "${MODELS_PATH}";\n`;
42
+ output += `export * from "${TYPES_REEXPORT_PATH}";\n`;
43
+ output += `export * from "${VERSIONS_PATH}";\n`;
44
+ output += `export * from "${VERSIONED_DOC_REF_PATH}";\n`;
45
+
46
+ // Per-version explicit named type exports
47
+ for (const {
48
+ version,
49
+ schema: versionSchema
50
+ } of chain) {
51
+ if (version < minVersion) continue;
52
+ 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));
58
+
59
+ // Union variant types
60
+ for (const variantName of Object.keys(item.variants)) {
61
+ const formattedVariant = formatVariantName(variantName);
62
+ typeNames.push(`${versionedTypeName(exportName, version)}${formattedVariant}`);
63
+ }
64
+ }
65
+ }
66
+ if (typeNames.length > 0) {
67
+ output += `export type { ${typeNames.sort().join(", ")} } from "${typesFilePath(version)}";\n`;
68
+ }
69
+ }
70
+ return output;
71
+ }
72
+ //# sourceMappingURL=generateIndexFromSchema.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,380 @@
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
+ import { resolveSchemaChain } from "./resolveSchemaChain.js";
19
+ import { findRecordExportName, isRecordSchema, isUnionSchema, TypeKind } from "./runtimeSchema.js";
20
+ /**
21
+ * Convert a schema field type to TypeScript string for internal types.
22
+ */
23
+ function convertTypeToTypeScript(fieldType) {
24
+ switch (fieldType.type) {
25
+ case TypeKind.ARRAY:
26
+ {
27
+ if (fieldType.items == null) {
28
+ throw new Error("Array field is missing items type");
29
+ }
30
+ const inner = convertTypeToTypeScript(fieldType.items);
31
+ // Wrap compound types (unions, other arrays) in parens before appending []
32
+ const needsParens = inner.includes("|") || inner.startsWith("readonly ");
33
+ const wrapped = needsParens ? `(${inner})` : inner;
34
+ return `readonly ${wrapped}[]`;
35
+ }
36
+ case TypeKind.BOOLEAN:
37
+ return "boolean";
38
+ case TypeKind.DOC_REF:
39
+ return "string";
40
+ case TypeKind.DOUBLE:
41
+ return "number";
42
+ case TypeKind.MEDIA_REF:
43
+ return "string";
44
+ case TypeKind.OBJECT_REF:
45
+ return "string";
46
+ case TypeKind.OPTIONAL:
47
+ if (fieldType.item == null) {
48
+ throw new Error("Optional field is missing inner type");
49
+ }
50
+ return `(${convertTypeToTypeScript(fieldType.item)} | undefined)`;
51
+ case TypeKind.REF:
52
+ return "unknown";
53
+ case TypeKind.STRING:
54
+ return "string";
55
+ case TypeKind.USER_REF:
56
+ return "string";
57
+ default:
58
+ throw new Error(`Unknown schema field type: ${fieldType.type}`);
59
+ }
60
+ }
61
+
62
+ /**
63
+ * Convert a schema field type to a FieldTypeDescriptor source string.
64
+ */
65
+ function convertTypeToFieldTypeDescriptor(fieldType, schema) {
66
+ switch (fieldType.type) {
67
+ case TypeKind.ARRAY:
68
+ if (fieldType.items == null) {
69
+ throw new Error("Array field is missing items type");
70
+ }
71
+ return `{ kind: "array", element: ${convertTypeToFieldTypeDescriptor(fieldType.items, schema)} }`;
72
+ case TypeKind.OPTIONAL:
73
+ if (fieldType.item == null) {
74
+ throw new Error("Optional field is missing inner type");
75
+ }
76
+ return `{ kind: "optional", inner: ${convertTypeToFieldTypeDescriptor(fieldType.item, schema)} }`;
77
+ case TypeKind.REF:
78
+ {
79
+ if (fieldType.name == null) {
80
+ throw new Error("Ref field is missing a name");
81
+ }
82
+ const exportKey = fieldType.refType === "record" ? findRecordExportName(fieldType.name, schema) ?? fieldType.name : fieldType.name;
83
+ return `{ kind: "modelRef", model: "${exportKey}" }`;
84
+ }
85
+ default:
86
+ return `{ kind: "primitive" }`;
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Convert a schema field type to a Zod schema string.
92
+ */
93
+ function convertTypeToZodSchema(fieldType) {
94
+ switch (fieldType.type) {
95
+ case TypeKind.ARRAY:
96
+ if (fieldType.items == null) {
97
+ throw new Error("Array field is missing items type");
98
+ }
99
+ return `z.array(${convertTypeToZodSchema(fieldType.items)})`;
100
+ case TypeKind.BOOLEAN:
101
+ return "z.boolean()";
102
+ case TypeKind.DOC_REF:
103
+ case TypeKind.MEDIA_REF:
104
+ case TypeKind.OBJECT_REF:
105
+ case TypeKind.STRING:
106
+ case TypeKind.USER_REF:
107
+ return "z.string()";
108
+ case TypeKind.DOUBLE:
109
+ return "z.number()";
110
+ case TypeKind.OPTIONAL:
111
+ if (fieldType.item == null) {
112
+ throw new Error("Optional field is missing inner type");
113
+ }
114
+ return `${convertTypeToZodSchema(fieldType.item)}.optional()`;
115
+ case TypeKind.REF:
116
+ return "z.unknown()";
117
+ default:
118
+ throw new Error(`Unknown schema field type: ${fieldType.type}`);
119
+ }
120
+ }
121
+
122
+ /** Collected info about all fields for a model across all versions. */
123
+
124
+ /**
125
+ * Represents an upgrade step for a model between version transitions.
126
+ */
127
+
128
+ /**
129
+ * Helper to iterate sorted entries of a Map.
130
+ */
131
+ function sortedEntries(map) {
132
+ return Array.from(map.entries()).sort(([a], [b]) => a.localeCompare(b));
133
+ }
134
+
135
+ /**
136
+ * Collect all record model info across all versions and compute upgrade steps.
137
+ */
138
+ function collectRecordModels(chain) {
139
+ const allRecordModels = new Map();
140
+
141
+ // Initialize models from all versions
142
+ for (const {
143
+ version,
144
+ schema
145
+ } of chain) {
146
+ for (const [exportName, item] of Object.entries(schema)) {
147
+ if (!isRecordSchema(item)) continue;
148
+ if (!allRecordModels.has(exportName)) {
149
+ allRecordModels.set(exportName, {
150
+ allFields: new Map(),
151
+ steps: []
152
+ });
153
+ }
154
+ const model = allRecordModels.get(exportName);
155
+ for (const [fieldName, fieldType] of Object.entries(item.fields)) {
156
+ const existing = model.allFields.get(fieldName);
157
+ if (existing == null) {
158
+ model.allFields.set(fieldName, {
159
+ fieldType,
160
+ presentInVersions: new Set([version]),
161
+ alwaysOptional: fieldType.type === TypeKind.OPTIONAL
162
+ });
163
+ } else {
164
+ existing.presentInVersions.add(version);
165
+ if (fieldType.type !== TypeKind.OPTIONAL) {
166
+ existing.alwaysOptional = false;
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ // Compute upgrade steps from version diffs
174
+ for (let i = 1; i < chain.length; i++) {
175
+ const prevVersion = chain[i - 1];
176
+ const currVersion = chain[i];
177
+ for (const [exportName, currItem] of Object.entries(currVersion.schema)) {
178
+ if (!isRecordSchema(currItem)) continue;
179
+ const prevItem = prevVersion.schema[exportName];
180
+ if (prevItem == null || !isRecordSchema(prevItem)) continue;
181
+ const model = allRecordModels.get(exportName);
182
+ if (model == null) continue;
183
+ const prevFields = new Set(Object.keys(prevItem.fields));
184
+ const currFields = new Set(Object.keys(currItem.fields));
185
+
186
+ // Fields added in this version
187
+ const addedFields = new Map();
188
+ const recordUpgrades = currVersion.migrations?.[exportName];
189
+ for (const fieldName of currFields) {
190
+ if (!prevFields.has(fieldName)) {
191
+ const annotation = recordUpgrades?.[fieldName];
192
+ if (annotation != null) {
193
+ addedFields.set(fieldName, {
194
+ derivedFrom: [...annotation.derivedFrom],
195
+ forwardSource: annotation.forward.toString()
196
+ });
197
+ } else {
198
+ addedFields.set(fieldName, {
199
+ derivedFrom: [],
200
+ forwardSource: "() => undefined"
201
+ });
202
+ }
203
+ }
204
+ }
205
+
206
+ // Fields removed in this version
207
+ const removedFields = [];
208
+ for (const fieldName of prevFields) {
209
+ if (!currFields.has(fieldName)) {
210
+ removedFields.push(fieldName);
211
+ }
212
+ }
213
+ if (addedFields.size > 0 || removedFields.length > 0) {
214
+ model.steps.push({
215
+ name: `v${currVersion.version}`,
216
+ addedInVersion: currVersion.version,
217
+ fields: addedFields,
218
+ removedFields
219
+ });
220
+ }
221
+ }
222
+ }
223
+
224
+ // Mark fields that are not present in ALL versions as optional in internal type
225
+ const totalVersions = chain.length;
226
+ for (const model of allRecordModels.values()) {
227
+ for (const [, fieldInfo] of model.allFields) {
228
+ if (fieldInfo.presentInVersions.size < totalVersions) {
229
+ fieldInfo.alwaysOptional = true;
230
+ }
231
+ }
232
+ }
233
+ return allRecordModels;
234
+ }
235
+
236
+ /**
237
+ * Generate _internal/types.ts content.
238
+ */
239
+ function generateInternalTypes(allRecordModels) {
240
+ let output = GENERATED_FILE_HEADER;
241
+ output += "\n";
242
+ for (const [exportName, model] of sortedEntries(allRecordModels)) {
243
+ output += `/** Internal representation containing all fields across all schema versions. */\n`;
244
+ output += `export interface ${exportName}__Internal {\n`;
245
+ for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {
246
+ const tsType = convertTypeToTypeScript(fieldInfo.fieldType);
247
+ const optional = fieldInfo.alwaysOptional ? "?" : "";
248
+ output += ` readonly ${fieldName}${optional}: ${tsType};\n`;
249
+ }
250
+ output += "}\n\n";
251
+ }
252
+ return output;
253
+ }
254
+
255
+ /**
256
+ * Generate _internal/upgrades.ts content.
257
+ */
258
+ function generateUpgrades(allRecordModels, latestSchema) {
259
+ let output = GENERATED_FILE_HEADER;
260
+ const hasRecords = allRecordModels.size > 0;
261
+ const hasUnions = Object.values(latestSchema).some(isUnionSchema);
262
+ const imports = [];
263
+ if (hasRecords) imports.push("UpgradeRegistry");
264
+ if (hasUnions) imports.push("UnionUpgradeRegistry");
265
+ if (imports.length > 0) {
266
+ output += `import type { ${imports.join(", ")} } from "@palantir/pack.document-schema.model-types";\n\n`;
267
+ }
268
+ for (const [exportName, model] of sortedEntries(allRecordModels)) {
269
+ output += `export const ${exportName}Upgrades: UpgradeRegistry<"${exportName}"> = {\n`;
270
+ output += ` modelName: "${exportName}",\n`;
271
+
272
+ // allFields
273
+ output += ` allFields: {\n`;
274
+ for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {
275
+ const typeDescriptor = convertTypeToFieldTypeDescriptor(fieldInfo.fieldType, latestSchema);
276
+ if (fieldInfo.default !== undefined) {
277
+ output += ` ${fieldName}: { type: ${typeDescriptor}, default: ${JSON.stringify(fieldInfo.default)} },\n`;
278
+ } else {
279
+ output += ` ${fieldName}: { type: ${typeDescriptor} },\n`;
280
+ }
281
+ }
282
+ output += ` },\n`;
283
+
284
+ // steps
285
+ output += ` steps: [\n`;
286
+ for (const step of model.steps) {
287
+ output += ` {\n`;
288
+ output += ` name: "${step.name}",\n`;
289
+ output += ` addedInVersion: ${step.addedInVersion},\n`;
290
+ output += ` fields: {\n`;
291
+ for (const [fieldName, fieldMeta] of step.fields) {
292
+ output += ` ${fieldName}: {\n`;
293
+ output += ` derivedFrom: [${fieldMeta.derivedFrom.map(d => `"${d}"`).join(", ")}],\n`;
294
+ output += ` forward: ${fieldMeta.forwardSource},\n`;
295
+ if (fieldMeta.default !== undefined) {
296
+ output += ` default: ${JSON.stringify(fieldMeta.default)},\n`;
297
+ }
298
+ output += ` },\n`;
299
+ }
300
+ output += ` },\n`;
301
+ if (step.removedFields.length > 0) {
302
+ output += ` removedFields: [${step.removedFields.map(f => `"${f}"`).join(", ")}],\n`;
303
+ }
304
+ output += ` },\n`;
305
+ }
306
+ output += ` ],\n`;
307
+ output += `};\n\n`;
308
+ }
309
+
310
+ // Generate UnionUpgradeRegistry entries for union models
311
+ for (const [exportName, item] of Object.entries(latestSchema)) {
312
+ if (!isUnionSchema(item)) continue;
313
+ output += `export const ${exportName}Upgrades: UnionUpgradeRegistry<"${exportName}"> = {\n`;
314
+ output += ` modelName: "${exportName}",\n`;
315
+ output += ` discriminant: "${item.discriminant}",\n`;
316
+ output += ` variants: {\n`;
317
+ for (const [variantKey, variantField] of Object.entries(item.variants)) {
318
+ if (variantField.type === "ref" && variantField.refType === "record" && variantField.name != null) {
319
+ const variantExportName = findRecordExportName(variantField.name, latestSchema);
320
+ if (variantExportName != null) {
321
+ output += ` "${variantKey}": "${variantExportName}",\n`;
322
+ }
323
+ }
324
+ }
325
+ output += ` },\n`;
326
+ output += `};\n\n`;
327
+ }
328
+ return output;
329
+ }
330
+
331
+ /**
332
+ * Generate _internal/schema.ts content.
333
+ */
334
+ function generateInternalSchemaContent(allRecordModels) {
335
+ let output = GENERATED_FILE_HEADER;
336
+ output += `import { z } from "zod";\n\n`;
337
+ for (const [exportName, model] of sortedEntries(allRecordModels)) {
338
+ output += `export const ${exportName}InternalSchema = z.object({\n`;
339
+ for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {
340
+ const zodType = convertTypeToZodSchema(fieldInfo.fieldType);
341
+ // In internal schema, all fields that might be absent are optional
342
+ if (fieldInfo.alwaysOptional) {
343
+ // If the type already ends with .optional(), don't double-wrap
344
+ if (zodType.endsWith(".optional()")) {
345
+ output += ` ${fieldName}: ${zodType},\n`;
346
+ } else {
347
+ output += ` ${fieldName}: ${zodType}.optional(),\n`;
348
+ }
349
+ } else {
350
+ output += ` ${fieldName}: ${zodType},\n`;
351
+ }
352
+ }
353
+ output += `}).passthrough();\n\n`;
354
+ }
355
+ return output;
356
+ }
357
+
358
+ /**
359
+ * Generate _internal/types.ts, _internal/upgrades.ts, and _internal/schema.ts
360
+ * from a versioned schema chain.
361
+ *
362
+ * @param schema - The schema definition (initial or versioned)
363
+ * @returns Object containing generated code for each internal file
364
+ */
365
+ export function generateInternalFromSchema(schema) {
366
+ const {
367
+ chain
368
+ } = resolveSchemaChain(schema);
369
+ const latestSchema = chain[chain.length - 1].schema;
370
+ const allRecordModels = collectRecordModels(chain);
371
+ const internalTypes = generateInternalTypes(allRecordModels);
372
+ const upgrades = generateUpgrades(allRecordModels, latestSchema);
373
+ const internalSchema = generateInternalSchemaContent(allRecordModels);
374
+ return {
375
+ internalTypes,
376
+ upgrades,
377
+ internalSchema
378
+ };
379
+ }
380
+ //# sourceMappingURL=generateInternalFromSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateInternalFromSchema.js","names":["GENERATED_FILE_HEADER","resolveSchemaChain","findRecordExportName","isRecordSchema","isUnionSchema","TypeKind","convertTypeToTypeScript","fieldType","type","ARRAY","items","Error","inner","needsParens","includes","startsWith","wrapped","BOOLEAN","DOC_REF","DOUBLE","MEDIA_REF","OBJECT_REF","OPTIONAL","item","REF","STRING","USER_REF","convertTypeToFieldTypeDescriptor","schema","name","exportKey","refType","convertTypeToZodSchema","sortedEntries","map","Array","from","entries","sort","a","b","localeCompare","collectRecordModels","chain","allRecordModels","Map","version","exportName","Object","has","set","allFields","steps","model","get","fieldName","fields","existing","presentInVersions","Set","alwaysOptional","add","i","length","prevVersion","currVersion","currItem","prevItem","prevFields","keys","currFields","addedFields","recordUpgrades","migrations","annotation","derivedFrom","forwardSource","forward","toString","removedFields","push","size","addedInVersion","totalVersions","values","fieldInfo","generateInternalTypes","output","tsType","optional","generateUpgrades","latestSchema","hasRecords","hasUnions","some","imports","join","typeDescriptor","default","undefined","JSON","stringify","step","fieldMeta","d","f","discriminant","variantKey","variantField","variants","variantExportName","generateInternalSchemaContent","zodType","endsWith","generateInternalFromSchema","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 { SchemaDefinition } from \"@palantir/pack.schema\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\nimport type { VersionedSchemaEntry } from \"./resolveSchemaChain.js\";\nimport { resolveSchemaChain } from \"./resolveSchemaChain.js\";\nimport type { RuntimeSchema, SchemaField } from \"./runtimeSchema.js\";\nimport { findRecordExportName, isRecordSchema, isUnionSchema, TypeKind } from \"./runtimeSchema.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/**\n * Convert a schema field type to TypeScript string for internal types.\n */\nfunction convertTypeToTypeScript(fieldType: SchemaField): string {\n switch (fieldType.type) {\n case TypeKind.ARRAY: {\n if (fieldType.items == null) {\n throw new Error(\"Array field is missing items type\");\n }\n const inner = convertTypeToTypeScript(fieldType.items);\n // Wrap compound types (unions, other arrays) in parens before appending []\n const needsParens = inner.includes(\"|\") || inner.startsWith(\"readonly \");\n const wrapped = needsParens ? `(${inner})` : inner;\n return `readonly ${wrapped}[]`;\n }\n case TypeKind.BOOLEAN:\n return \"boolean\";\n case TypeKind.DOC_REF:\n return \"string\";\n case TypeKind.DOUBLE:\n return \"number\";\n case TypeKind.MEDIA_REF:\n return \"string\";\n case TypeKind.OBJECT_REF:\n return \"string\";\n case TypeKind.OPTIONAL:\n if (fieldType.item == null) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return `(${convertTypeToTypeScript(fieldType.item)} | undefined)`;\n case TypeKind.REF:\n return \"unknown\";\n case TypeKind.STRING:\n return \"string\";\n case TypeKind.USER_REF:\n return \"string\";\n default:\n throw new Error(`Unknown schema field type: ${fieldType.type}`);\n }\n}\n\n/**\n * Convert a schema field type to a FieldTypeDescriptor source string.\n */\nfunction convertTypeToFieldTypeDescriptor(fieldType: SchemaField, schema: RuntimeSchema): string {\n switch (fieldType.type) {\n case TypeKind.ARRAY:\n if (fieldType.items == null) {\n throw new Error(\"Array field is missing items type\");\n }\n return `{ kind: \"array\", element: ${\n convertTypeToFieldTypeDescriptor(fieldType.items, schema)\n } }`;\n case TypeKind.OPTIONAL:\n if (fieldType.item == null) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return `{ kind: \"optional\", inner: ${\n convertTypeToFieldTypeDescriptor(fieldType.item, schema)\n } }`;\n case TypeKind.REF: {\n if (fieldType.name == null) {\n throw new Error(\"Ref field is missing a name\");\n }\n const exportKey = fieldType.refType === \"record\"\n ? findRecordExportName(fieldType.name, schema) ?? fieldType.name\n : fieldType.name;\n return `{ kind: \"modelRef\", model: \"${exportKey}\" }`;\n }\n default:\n return `{ kind: \"primitive\" }`;\n }\n}\n\n/**\n * Convert a schema field type to a Zod schema string.\n */\nfunction convertTypeToZodSchema(fieldType: SchemaField): string {\n switch (fieldType.type) {\n case TypeKind.ARRAY:\n if (fieldType.items == null) {\n throw new Error(\"Array field is missing items type\");\n }\n return `z.array(${convertTypeToZodSchema(fieldType.items)})`;\n case TypeKind.BOOLEAN:\n return \"z.boolean()\";\n case TypeKind.DOC_REF:\n case TypeKind.MEDIA_REF:\n case TypeKind.OBJECT_REF:\n case TypeKind.STRING:\n case TypeKind.USER_REF:\n return \"z.string()\";\n case TypeKind.DOUBLE:\n return \"z.number()\";\n case TypeKind.OPTIONAL:\n if (fieldType.item == null) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return `${convertTypeToZodSchema(fieldType.item)}.optional()`;\n case TypeKind.REF:\n return \"z.unknown()\";\n default:\n throw new Error(`Unknown schema field type: ${fieldType.type}`);\n }\n}\n\n/** Collected info about all fields for a model across all versions. */\ninterface AllFieldInfo {\n fieldType: SchemaField;\n /** Versions where this field exists. */\n presentInVersions: Set<number>;\n /** Whether field is always optional. */\n alwaysOptional: boolean;\n /** Default value if any. */\n default?: unknown;\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: VersionedSchemaEntry[],\n): Map<string, RecordModelInfo> {\n const allRecordModels = new Map<string, RecordModelInfo>();\n\n // Initialize models from all versions\n for (const { version, schema } of chain) {\n for (const [exportName, item] of Object.entries(schema)) {\n if (!isRecordSchema(item)) continue;\n\n if (!allRecordModels.has(exportName)) {\n allRecordModels.set(exportName, {\n allFields: new Map(),\n steps: [],\n });\n }\n\n const model = allRecordModels.get(exportName)!;\n\n for (const [fieldName, fieldType] of Object.entries(item.fields)) {\n const existing = model.allFields.get(fieldName);\n if (existing == null) {\n model.allFields.set(fieldName, {\n fieldType,\n presentInVersions: new Set([version]),\n alwaysOptional: fieldType.type === TypeKind.OPTIONAL,\n });\n } else {\n existing.presentInVersions.add(version);\n if (fieldType.type !== TypeKind.OPTIONAL) {\n existing.alwaysOptional = false;\n }\n }\n }\n }\n }\n\n // Compute upgrade steps from version diffs\n for (let i = 1; i < chain.length; i++) {\n const prevVersion = chain[i - 1]!;\n const currVersion = chain[i]!;\n\n for (const [exportName, currItem] of Object.entries(currVersion.schema)) {\n if (!isRecordSchema(currItem)) continue;\n\n const prevItem = prevVersion.schema[exportName];\n if (prevItem == null || !isRecordSchema(prevItem)) continue;\n\n const model = allRecordModels.get(exportName);\n if (model == null) continue;\n\n const prevFields = new Set(Object.keys(prevItem.fields));\n const currFields = new Set(Object.keys(currItem.fields));\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 = currVersion.migrations?.[exportName];\n for (const fieldName of currFields) {\n if (!prevFields.has(fieldName)) {\n const annotation = recordUpgrades?.[fieldName];\n if (annotation != null) {\n addedFields.set(fieldName, {\n derivedFrom: [...annotation.derivedFrom],\n forwardSource: annotation.forward.toString(),\n });\n } else {\n addedFields.set(fieldName, {\n derivedFrom: [],\n forwardSource: \"() => undefined\",\n });\n }\n }\n }\n\n // Fields removed in this version\n const removedFields: string[] = [];\n for (const fieldName of prevFields) {\n if (!currFields.has(fieldName)) {\n removedFields.push(fieldName);\n }\n }\n\n if (addedFields.size > 0 || removedFields.length > 0) {\n model.steps.push({\n name: `v${currVersion.version}`,\n addedInVersion: currVersion.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 [exportName, model] of sortedEntries(allRecordModels)) {\n output += `/** Internal representation containing all fields across all schema versions. */\\n`;\n output += `export interface ${exportName}__Internal {\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const tsType = convertTypeToTypeScript(fieldInfo.fieldType);\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 latestSchema: RuntimeSchema,\n): string {\n let output = GENERATED_FILE_HEADER;\n\n const hasRecords = allRecordModels.size > 0;\n const hasUnions = Object.values(latestSchema).some(isUnionSchema);\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 [exportName, model] of sortedEntries(allRecordModels)) {\n output += `export const ${exportName}Upgrades: UpgradeRegistry<\"${exportName}\"> = {\\n`;\n output += ` modelName: \"${exportName}\",\\n`;\n\n // allFields\n output += ` allFields: {\\n`;\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const typeDescriptor = convertTypeToFieldTypeDescriptor(fieldInfo.fieldType, latestSchema);\n if (fieldInfo.default !== undefined) {\n output += ` ${fieldName}: { type: ${typeDescriptor}, default: ${\n JSON.stringify(fieldInfo.default)\n } },\\n`;\n } else {\n output += ` ${fieldName}: { type: ${typeDescriptor} },\\n`;\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 [exportName, item] of Object.entries(latestSchema)) {\n if (!isUnionSchema(item)) continue;\n\n output += `export const ${exportName}Upgrades: UnionUpgradeRegistry<\"${exportName}\"> = {\\n`;\n output += ` modelName: \"${exportName}\",\\n`;\n output += ` discriminant: \"${item.discriminant}\",\\n`;\n output += ` variants: {\\n`;\n for (const [variantKey, variantField] of Object.entries(item.variants)) {\n if (\n variantField.type === \"ref\" && variantField.refType === \"record\"\n && variantField.name != null\n ) {\n const variantExportName = findRecordExportName(variantField.name, latestSchema);\n if (variantExportName != null) {\n output += ` \"${variantKey}\": \"${variantExportName}\",\\n`;\n }\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 [exportName, model] of sortedEntries(allRecordModels)) {\n output += `export const ${exportName}InternalSchema = z.object({\\n`;\n\n for (const [fieldName, fieldInfo] of sortedEntries(model.allFields)) {\n const zodType = convertTypeToZodSchema(fieldInfo.fieldType);\n // In internal schema, all fields that might be absent are optional\n if (fieldInfo.alwaysOptional) {\n // If the type already ends with .optional(), don't double-wrap\n if (zodType.endsWith(\".optional()\")) {\n output += ` ${fieldName}: ${zodType},\\n`;\n } else {\n output += ` ${fieldName}: ${zodType}.optional(),\\n`;\n }\n } else {\n output += ` ${fieldName}: ${zodType},\\n`;\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 a versioned schema chain.\n *\n * @param schema - The schema definition (initial or versioned)\n * @returns Object containing generated code for each internal file\n */\nexport function generateInternalFromSchema(\n schema: SchemaDefinition,\n): InternalTypesOutput {\n const { chain } = resolveSchemaChain(schema);\n const latestSchema = chain[chain.length - 1]!.schema;\n\n const allRecordModels = collectRecordModels(chain);\n\n const internalTypes = generateInternalTypes(allRecordModels);\n const upgrades = generateUpgrades(allRecordModels, latestSchema);\n const internalSchema = generateInternalSchemaContent(allRecordModels);\n\n return { internalTypes, upgrades, internalSchema };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,qBAAqB,QAAQ,2BAA2B;AAEjE,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,SAASC,oBAAoB,EAAEC,cAAc,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,oBAAoB;AAWlG;AACA;AACA;AACA,SAASC,uBAAuBA,CAACC,SAAsB,EAAU;EAC/D,QAAQA,SAAS,CAACC,IAAI;IACpB,KAAKH,QAAQ,CAACI,KAAK;MAAE;QACnB,IAAIF,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;UAC3B,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;QACtD;QACA,MAAMC,KAAK,GAAGN,uBAAuB,CAACC,SAAS,CAACG,KAAK,CAAC;QACtD;QACA,MAAMG,WAAW,GAAGD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAIF,KAAK,CAACG,UAAU,CAAC,WAAW,CAAC;QACxE,MAAMC,OAAO,GAAGH,WAAW,GAAG,IAAID,KAAK,GAAG,GAAGA,KAAK;QAClD,OAAO,YAAYI,OAAO,IAAI;MAChC;IACA,KAAKX,QAAQ,CAACY,OAAO;MACnB,OAAO,SAAS;IAClB,KAAKZ,QAAQ,CAACa,OAAO;MACnB,OAAO,QAAQ;IACjB,KAAKb,QAAQ,CAACc,MAAM;MAClB,OAAO,QAAQ;IACjB,KAAKd,QAAQ,CAACe,SAAS;MACrB,OAAO,QAAQ;IACjB,KAAKf,QAAQ,CAACgB,UAAU;MACtB,OAAO,QAAQ;IACjB,KAAKhB,QAAQ,CAACiB,QAAQ;MACpB,IAAIf,SAAS,CAACgB,IAAI,IAAI,IAAI,EAAE;QAC1B,MAAM,IAAIZ,KAAK,CAAC,sCAAsC,CAAC;MACzD;MACA,OAAO,IAAIL,uBAAuB,CAACC,SAAS,CAACgB,IAAI,CAAC,eAAe;IACnE,KAAKlB,QAAQ,CAACmB,GAAG;MACf,OAAO,SAAS;IAClB,KAAKnB,QAAQ,CAACoB,MAAM;MAClB,OAAO,QAAQ;IACjB,KAAKpB,QAAQ,CAACqB,QAAQ;MACpB,OAAO,QAAQ;IACjB;MACE,MAAM,IAAIf,KAAK,CAAC,8BAA8BJ,SAAS,CAACC,IAAI,EAAE,CAAC;EACnE;AACF;;AAEA;AACA;AACA;AACA,SAASmB,gCAAgCA,CAACpB,SAAsB,EAAEqB,MAAqB,EAAU;EAC/F,QAAQrB,SAAS,CAACC,IAAI;IACpB,KAAKH,QAAQ,CAACI,KAAK;MACjB,IAAIF,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;QAC3B,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,OAAO,6BACLgB,gCAAgC,CAACpB,SAAS,CAACG,KAAK,EAAEkB,MAAM,CAAC,IACvD;IACN,KAAKvB,QAAQ,CAACiB,QAAQ;MACpB,IAAIf,SAAS,CAACgB,IAAI,IAAI,IAAI,EAAE;QAC1B,MAAM,IAAIZ,KAAK,CAAC,sCAAsC,CAAC;MACzD;MACA,OAAO,8BACLgB,gCAAgC,CAACpB,SAAS,CAACgB,IAAI,EAAEK,MAAM,CAAC,IACtD;IACN,KAAKvB,QAAQ,CAACmB,GAAG;MAAE;QACjB,IAAIjB,SAAS,CAACsB,IAAI,IAAI,IAAI,EAAE;UAC1B,MAAM,IAAIlB,KAAK,CAAC,6BAA6B,CAAC;QAChD;QACA,MAAMmB,SAAS,GAAGvB,SAAS,CAACwB,OAAO,KAAK,QAAQ,GAC5C7B,oBAAoB,CAACK,SAAS,CAACsB,IAAI,EAAED,MAAM,CAAC,IAAIrB,SAAS,CAACsB,IAAI,GAC9DtB,SAAS,CAACsB,IAAI;QAClB,OAAO,+BAA+BC,SAAS,KAAK;MACtD;IACA;MACE,OAAO,uBAAuB;EAClC;AACF;;AAEA;AACA;AACA;AACA,SAASE,sBAAsBA,CAACzB,SAAsB,EAAU;EAC9D,QAAQA,SAAS,CAACC,IAAI;IACpB,KAAKH,QAAQ,CAACI,KAAK;MACjB,IAAIF,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;QAC3B,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,OAAO,WAAWqB,sBAAsB,CAACzB,SAAS,CAACG,KAAK,CAAC,GAAG;IAC9D,KAAKL,QAAQ,CAACY,OAAO;MACnB,OAAO,aAAa;IACtB,KAAKZ,QAAQ,CAACa,OAAO;IACrB,KAAKb,QAAQ,CAACe,SAAS;IACvB,KAAKf,QAAQ,CAACgB,UAAU;IACxB,KAAKhB,QAAQ,CAACoB,MAAM;IACpB,KAAKpB,QAAQ,CAACqB,QAAQ;MACpB,OAAO,YAAY;IACrB,KAAKrB,QAAQ,CAACc,MAAM;MAClB,OAAO,YAAY;IACrB,KAAKd,QAAQ,CAACiB,QAAQ;MACpB,IAAIf,SAAS,CAACgB,IAAI,IAAI,IAAI,EAAE;QAC1B,MAAM,IAAIZ,KAAK,CAAC,sCAAsC,CAAC;MACzD;MACA,OAAO,GAAGqB,sBAAsB,CAACzB,SAAS,CAACgB,IAAI,CAAC,aAAa;IAC/D,KAAKlB,QAAQ,CAACmB,GAAG;MACf,OAAO,aAAa;IACtB;MACE,MAAM,IAAIb,KAAK,CAAC,8BAA8BJ,SAAS,CAACC,IAAI,EAAE,CAAC;EACnE;AACF;;AAEA;;AAWA;AACA;AACA;;AAaA;AACA;AACA;AACA,SAASyB,aAAaA,CAAIC,GAAmB,EAAiB;EAC5D,OAAOC,KAAK,CAACC,IAAI,CAACF,GAAG,CAACG,OAAO,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,KAAKD,CAAC,CAACE,aAAa,CAACD,CAAC,CAAC,CAAC;AACzE;;AAEA;AACA;AACA;AACA,SAASE,mBAAmBA,CAC1BC,KAA6B,EACC;EAC9B,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAA0B,CAAC;;EAE1D;EACA,KAAK,MAAM;IAAEC,OAAO;IAAElB;EAAO,CAAC,IAAIe,KAAK,EAAE;IACvC,KAAK,MAAM,CAACI,UAAU,EAAExB,IAAI,CAAC,IAAIyB,MAAM,CAACX,OAAO,CAACT,MAAM,CAAC,EAAE;MACvD,IAAI,CAACzB,cAAc,CAACoB,IAAI,CAAC,EAAE;MAE3B,IAAI,CAACqB,eAAe,CAACK,GAAG,CAACF,UAAU,CAAC,EAAE;QACpCH,eAAe,CAACM,GAAG,CAACH,UAAU,EAAE;UAC9BI,SAAS,EAAE,IAAIN,GAAG,CAAC,CAAC;UACpBO,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MAEA,MAAMC,KAAK,GAAGT,eAAe,CAACU,GAAG,CAACP,UAAU,CAAE;MAE9C,KAAK,MAAM,CAACQ,SAAS,EAAEhD,SAAS,CAAC,IAAIyC,MAAM,CAACX,OAAO,CAACd,IAAI,CAACiC,MAAM,CAAC,EAAE;QAChE,MAAMC,QAAQ,GAAGJ,KAAK,CAACF,SAAS,CAACG,GAAG,CAACC,SAAS,CAAC;QAC/C,IAAIE,QAAQ,IAAI,IAAI,EAAE;UACpBJ,KAAK,CAACF,SAAS,CAACD,GAAG,CAACK,SAAS,EAAE;YAC7BhD,SAAS;YACTmD,iBAAiB,EAAE,IAAIC,GAAG,CAAC,CAACb,OAAO,CAAC,CAAC;YACrCc,cAAc,EAAErD,SAAS,CAACC,IAAI,KAAKH,QAAQ,CAACiB;UAC9C,CAAC,CAAC;QACJ,CAAC,MAAM;UACLmC,QAAQ,CAACC,iBAAiB,CAACG,GAAG,CAACf,OAAO,CAAC;UACvC,IAAIvC,SAAS,CAACC,IAAI,KAAKH,QAAQ,CAACiB,QAAQ,EAAE;YACxCmC,QAAQ,CAACG,cAAc,GAAG,KAAK;UACjC;QACF;MACF;IACF;EACF;;EAEA;EACA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnB,KAAK,CAACoB,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAME,WAAW,GAAGrB,KAAK,CAACmB,CAAC,GAAG,CAAC,CAAE;IACjC,MAAMG,WAAW,GAAGtB,KAAK,CAACmB,CAAC,CAAE;IAE7B,KAAK,MAAM,CAACf,UAAU,EAAEmB,QAAQ,CAAC,IAAIlB,MAAM,CAACX,OAAO,CAAC4B,WAAW,CAACrC,MAAM,CAAC,EAAE;MACvE,IAAI,CAACzB,cAAc,CAAC+D,QAAQ,CAAC,EAAE;MAE/B,MAAMC,QAAQ,GAAGH,WAAW,CAACpC,MAAM,CAACmB,UAAU,CAAC;MAC/C,IAAIoB,QAAQ,IAAI,IAAI,IAAI,CAAChE,cAAc,CAACgE,QAAQ,CAAC,EAAE;MAEnD,MAAMd,KAAK,GAAGT,eAAe,CAACU,GAAG,CAACP,UAAU,CAAC;MAC7C,IAAIM,KAAK,IAAI,IAAI,EAAE;MAEnB,MAAMe,UAAU,GAAG,IAAIT,GAAG,CAACX,MAAM,CAACqB,IAAI,CAACF,QAAQ,CAACX,MAAM,CAAC,CAAC;MACxD,MAAMc,UAAU,GAAG,IAAIX,GAAG,CAACX,MAAM,CAACqB,IAAI,CAACH,QAAQ,CAACV,MAAM,CAAC,CAAC;;MAExD;MACA,MAAMe,WAAW,GAAG,IAAI1B,GAAG,CAGzB,CAAC;MACH,MAAM2B,cAAc,GAAGP,WAAW,CAACQ,UAAU,GAAG1B,UAAU,CAAC;MAC3D,KAAK,MAAMQ,SAAS,IAAIe,UAAU,EAAE;QAClC,IAAI,CAACF,UAAU,CAACnB,GAAG,CAACM,SAAS,CAAC,EAAE;UAC9B,MAAMmB,UAAU,GAAGF,cAAc,GAAGjB,SAAS,CAAC;UAC9C,IAAImB,UAAU,IAAI,IAAI,EAAE;YACtBH,WAAW,CAACrB,GAAG,CAACK,SAAS,EAAE;cACzBoB,WAAW,EAAE,CAAC,GAAGD,UAAU,CAACC,WAAW,CAAC;cACxCC,aAAa,EAAEF,UAAU,CAACG,OAAO,CAACC,QAAQ,CAAC;YAC7C,CAAC,CAAC;UACJ,CAAC,MAAM;YACLP,WAAW,CAACrB,GAAG,CAACK,SAAS,EAAE;cACzBoB,WAAW,EAAE,EAAE;cACfC,aAAa,EAAE;YACjB,CAAC,CAAC;UACJ;QACF;MACF;;MAEA;MACA,MAAMG,aAAuB,GAAG,EAAE;MAClC,KAAK,MAAMxB,SAAS,IAAIa,UAAU,EAAE;QAClC,IAAI,CAACE,UAAU,CAACrB,GAAG,CAACM,SAAS,CAAC,EAAE;UAC9BwB,aAAa,CAACC,IAAI,CAACzB,SAAS,CAAC;QAC/B;MACF;MAEA,IAAIgB,WAAW,CAACU,IAAI,GAAG,CAAC,IAAIF,aAAa,CAAChB,MAAM,GAAG,CAAC,EAAE;QACpDV,KAAK,CAACD,KAAK,CAAC4B,IAAI,CAAC;UACfnD,IAAI,EAAE,IAAIoC,WAAW,CAACnB,OAAO,EAAE;UAC/BoC,cAAc,EAAEjB,WAAW,CAACnB,OAAO;UACnCU,MAAM,EAAEe,WAAW;UACnBQ;QACF,CAAC,CAAC;MACJ;IACF;EACF;;EAEA;EACA,MAAMI,aAAa,GAAGxC,KAAK,CAACoB,MAAM;EAClC,KAAK,MAAMV,KAAK,IAAIT,eAAe,CAACwC,MAAM,CAAC,CAAC,EAAE;IAC5C,KAAK,MAAM,GAAGC,SAAS,CAAC,IAAIhC,KAAK,CAACF,SAAS,EAAE;MAC3C,IAAIkC,SAAS,CAAC3B,iBAAiB,CAACuB,IAAI,GAAGE,aAAa,EAAE;QACpDE,SAAS,CAACzB,cAAc,GAAG,IAAI;MACjC;IACF;EACF;EAEA,OAAOhB,eAAe;AACxB;;AAEA;AACA;AACA;AACA,SAAS0C,qBAAqBA,CAC5B1C,eAA6C,EACrC;EACR,IAAI2C,MAAM,GAAGvF,qBAAqB;EAClCuF,MAAM,IAAI,IAAI;EAEd,KAAK,MAAM,CAACxC,UAAU,EAAEM,KAAK,CAAC,IAAIpB,aAAa,CAACW,eAAe,CAAC,EAAE;IAChE2C,MAAM,IAAI,oFAAoF;IAC9FA,MAAM,IAAI,oBAAoBxC,UAAU,gBAAgB;IAExD,KAAK,MAAM,CAACQ,SAAS,EAAE8B,SAAS,CAAC,IAAIpD,aAAa,CAACoB,KAAK,CAACF,SAAS,CAAC,EAAE;MACnE,MAAMqC,MAAM,GAAGlF,uBAAuB,CAAC+E,SAAS,CAAC9E,SAAS,CAAC;MAC3D,MAAMkF,QAAQ,GAAGJ,SAAS,CAACzB,cAAc,GAAG,GAAG,GAAG,EAAE;MACpD2B,MAAM,IAAI,cAAchC,SAAS,GAAGkC,QAAQ,KAAKD,MAAM,KAAK;IAC9D;IAEAD,MAAM,IAAI,OAAO;EACnB;EAEA,OAAOA,MAAM;AACf;;AAEA;AACA;AACA;AACA,SAASG,gBAAgBA,CACvB9C,eAA6C,EAC7C+C,YAA2B,EACnB;EACR,IAAIJ,MAAM,GAAGvF,qBAAqB;EAElC,MAAM4F,UAAU,GAAGhD,eAAe,CAACqC,IAAI,GAAG,CAAC;EAC3C,MAAMY,SAAS,GAAG7C,MAAM,CAACoC,MAAM,CAACO,YAAY,CAAC,CAACG,IAAI,CAAC1F,aAAa,CAAC;EAEjE,MAAM2F,OAAiB,GAAG,EAAE;EAC5B,IAAIH,UAAU,EAAEG,OAAO,CAACf,IAAI,CAAC,iBAAiB,CAAC;EAC/C,IAAIa,SAAS,EAAEE,OAAO,CAACf,IAAI,CAAC,sBAAsB,CAAC;EAEnD,IAAIe,OAAO,CAAChC,MAAM,GAAG,CAAC,EAAE;IACtBwB,MAAM,IAAI,iBACRQ,OAAO,CAACC,IAAI,CAAC,IAAI,CAAC,2DACuC;EAC7D;EAEA,KAAK,MAAM,CAACjD,UAAU,EAAEM,KAAK,CAAC,IAAIpB,aAAa,CAACW,eAAe,CAAC,EAAE;IAChE2C,MAAM,IAAI,gBAAgBxC,UAAU,8BAA8BA,UAAU,UAAU;IACtFwC,MAAM,IAAI,iBAAiBxC,UAAU,MAAM;;IAE3C;IACAwC,MAAM,IAAI,kBAAkB;IAC5B,KAAK,MAAM,CAAChC,SAAS,EAAE8B,SAAS,CAAC,IAAIpD,aAAa,CAACoB,KAAK,CAACF,SAAS,CAAC,EAAE;MACnE,MAAM8C,cAAc,GAAGtE,gCAAgC,CAAC0D,SAAS,CAAC9E,SAAS,EAAEoF,YAAY,CAAC;MAC1F,IAAIN,SAAS,CAACa,OAAO,KAAKC,SAAS,EAAE;QACnCZ,MAAM,IAAI,OAAOhC,SAAS,aAAa0C,cAAc,cACnDG,IAAI,CAACC,SAAS,CAAChB,SAAS,CAACa,OAAO,CAAC,OAC5B;MACT,CAAC,MAAM;QACLX,MAAM,IAAI,OAAOhC,SAAS,aAAa0C,cAAc,OAAO;MAC9D;IACF;IACAV,MAAM,IAAI,QAAQ;;IAElB;IACAA,MAAM,IAAI,cAAc;IACxB,KAAK,MAAMe,IAAI,IAAIjD,KAAK,CAACD,KAAK,EAAE;MAC9BmC,MAAM,IAAI,SAAS;MACnBA,MAAM,IAAI,gBAAgBe,IAAI,CAACzE,IAAI,MAAM;MACzC0D,MAAM,IAAI,yBAAyBe,IAAI,CAACpB,cAAc,KAAK;MAC3DK,MAAM,IAAI,mBAAmB;MAC7B,KAAK,MAAM,CAAChC,SAAS,EAAEgD,SAAS,CAAC,IAAID,IAAI,CAAC9C,MAAM,EAAE;QAChD+B,MAAM,IAAI,WAAWhC,SAAS,OAAO;QACrCgC,MAAM,IAAI,2BACRgB,SAAS,CAAC5B,WAAW,CAACzC,GAAG,CAACsE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACR,IAAI,CAAC,IAAI,CAAC,MAC/C;QACNT,MAAM,IAAI,sBAAsBgB,SAAS,CAAC3B,aAAa,KAAK;QAC5D,IAAI2B,SAAS,CAACL,OAAO,KAAKC,SAAS,EAAE;UACnCZ,MAAM,IAAI,sBAAsBa,IAAI,CAACC,SAAS,CAACE,SAAS,CAACL,OAAO,CAAC,KAAK;QACxE;QACAX,MAAM,IAAI,cAAc;MAC1B;MACAA,MAAM,IAAI,YAAY;MACtB,IAAIe,IAAI,CAACvB,aAAa,CAAChB,MAAM,GAAG,CAAC,EAAE;QACjCwB,MAAM,IAAI,yBAAyBe,IAAI,CAACvB,aAAa,CAAC7C,GAAG,CAACuE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACT,IAAI,CAAC,IAAI,CAAC,MAAM;MAC3F;MACAT,MAAM,IAAI,UAAU;IACtB;IACAA,MAAM,IAAI,QAAQ;IAElBA,MAAM,IAAI,QAAQ;EACpB;;EAEA;EACA,KAAK,MAAM,CAACxC,UAAU,EAAExB,IAAI,CAAC,IAAIyB,MAAM,CAACX,OAAO,CAACsD,YAAY,CAAC,EAAE;IAC7D,IAAI,CAACvF,aAAa,CAACmB,IAAI,CAAC,EAAE;IAE1BgE,MAAM,IAAI,gBAAgBxC,UAAU,mCAAmCA,UAAU,UAAU;IAC3FwC,MAAM,IAAI,iBAAiBxC,UAAU,MAAM;IAC3CwC,MAAM,IAAI,oBAAoBhE,IAAI,CAACmF,YAAY,MAAM;IACrDnB,MAAM,IAAI,iBAAiB;IAC3B,KAAK,MAAM,CAACoB,UAAU,EAAEC,YAAY,CAAC,IAAI5D,MAAM,CAACX,OAAO,CAACd,IAAI,CAACsF,QAAQ,CAAC,EAAE;MACtE,IACED,YAAY,CAACpG,IAAI,KAAK,KAAK,IAAIoG,YAAY,CAAC7E,OAAO,KAAK,QAAQ,IAC7D6E,YAAY,CAAC/E,IAAI,IAAI,IAAI,EAC5B;QACA,MAAMiF,iBAAiB,GAAG5G,oBAAoB,CAAC0G,YAAY,CAAC/E,IAAI,EAAE8D,YAAY,CAAC;QAC/E,IAAImB,iBAAiB,IAAI,IAAI,EAAE;UAC7BvB,MAAM,IAAI,QAAQoB,UAAU,OAAOG,iBAAiB,MAAM;QAC5D;MACF;IACF;IACAvB,MAAM,IAAI,QAAQ;IAClBA,MAAM,IAAI,QAAQ;EACpB;EAEA,OAAOA,MAAM;AACf;;AAEA;AACA;AACA;AACA,SAASwB,6BAA6BA,CACpCnE,eAA6C,EACrC;EACR,IAAI2C,MAAM,GAAGvF,qBAAqB;EAClCuF,MAAM,IAAI,8BAA8B;EAExC,KAAK,MAAM,CAACxC,UAAU,EAAEM,KAAK,CAAC,IAAIpB,aAAa,CAACW,eAAe,CAAC,EAAE;IAChE2C,MAAM,IAAI,gBAAgBxC,UAAU,+BAA+B;IAEnE,KAAK,MAAM,CAACQ,SAAS,EAAE8B,SAAS,CAAC,IAAIpD,aAAa,CAACoB,KAAK,CAACF,SAAS,CAAC,EAAE;MACnE,MAAM6D,OAAO,GAAGhF,sBAAsB,CAACqD,SAAS,CAAC9E,SAAS,CAAC;MAC3D;MACA,IAAI8E,SAAS,CAACzB,cAAc,EAAE;QAC5B;QACA,IAAIoD,OAAO,CAACC,QAAQ,CAAC,aAAa,CAAC,EAAE;UACnC1B,MAAM,IAAI,KAAKhC,SAAS,KAAKyD,OAAO,KAAK;QAC3C,CAAC,MAAM;UACLzB,MAAM,IAAI,KAAKhC,SAAS,KAAKyD,OAAO,gBAAgB;QACtD;MACF,CAAC,MAAM;QACLzB,MAAM,IAAI,KAAKhC,SAAS,KAAKyD,OAAO,KAAK;MAC3C;IACF;IAEAzB,MAAM,IAAI,uBAAuB;EACnC;EAEA,OAAOA,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS2B,0BAA0BA,CACxCtF,MAAwB,EACH;EACrB,MAAM;IAAEe;EAAM,CAAC,GAAG1C,kBAAkB,CAAC2B,MAAM,CAAC;EAC5C,MAAM+D,YAAY,GAAGhD,KAAK,CAACA,KAAK,CAACoB,MAAM,GAAG,CAAC,CAAC,CAAEnC,MAAM;EAEpD,MAAMgB,eAAe,GAAGF,mBAAmB,CAACC,KAAK,CAAC;EAElD,MAAMwE,aAAa,GAAG7B,qBAAqB,CAAC1C,eAAe,CAAC;EAC5D,MAAMwE,QAAQ,GAAG1B,gBAAgB,CAAC9C,eAAe,EAAE+C,YAAY,CAAC;EAChE,MAAM0B,cAAc,GAAGN,6BAA6B,CAACnE,eAAe,CAAC;EAErE,OAAO;IAAEuE,aAAa;IAAEC,QAAQ;IAAEC;EAAe,CAAC;AACpD","ignoreList":[]}