@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 @@
1
+ {"version":3,"file":"convertIrToWireSchema.test.js","names":["describe","expect","it","IFieldValueUnion","convertIrToWireSchema","record","key","name","description","fields","fieldType","type","value","string","metadata","addedInVersion","wire","version","primaryModelKeys","models","Person","toEqual","toBeDefined","personModel","toBe","person","nameField","Shape","union","discriminant","variants","circle","square","shapeModel","shape","defaultValue","R","recordModel","field","valueType","array","allowNullValue","fn","boolean","payload","datetime","docRef","documentTypeRids","double","minValue","maxValue","integer","mediaRef","modelRef","modelTypes","object","interfaceTypeRids","objectTypeRids","maxLength","text","unmanagedJson","userRef","wireValue","toBeUndefined","val","Object","entries"],"sources":["convertIrToWireSchema.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FieldValueType, RecordDef, UnionDef } from \"@osdk/foundry.pack\";\nimport { describe, expect, it } from \"vitest\";\nimport type {\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { IFieldValueUnion } from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { convertIrToWireSchema } from \"../convertIrToWireSchema.js\";\n\ndescribe(\"convertIrToWireSchema\", () => {\n it(\"should flatten record model and rename fields correctly\", () => {\n const record: IRecordDef = {\n key: \"Person\",\n name: \"Person\",\n description: \"A person\",\n fields: [\n {\n key: \"name\",\n name: \"Name\",\n fieldType: {\n type: \"value\",\n value: IFieldValueUnion.string({}),\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const ir: IRealTimeDocumentSchema = {\n name: \"Test\",\n description: \"Test schema\",\n version: 1,\n primaryModelKeys: [\"Person\"],\n models: {\n Person: { type: \"record\", record } as IModelDef,\n },\n };\n\n const wire = convertIrToWireSchema(ir);\n\n // Top-level structure\n expect(wire.primaryModelKeys).toEqual([\"Person\"]);\n expect(wire.models).toBeDefined();\n\n // Model is flattened (no .record wrapper)\n const personModel = wire.models[\"Person\"];\n expect(personModel).toBeDefined();\n expect(personModel!.type).toBe(\"record\");\n const person = personModel as { type: \"record\" } & RecordDef;\n expect(person.key).toBe(\"Person\");\n expect(person.name).toBe(\"Person\");\n expect(\"record\" in person).toBe(false); // no conjure nesting\n\n // Field uses wire field names\n const nameField = person.fields[0]!;\n expect(nameField.key).toBe(\"name\");\n expect(nameField.fieldType).toBeDefined();\n expect(nameField.metadata).toEqual({ addedInVersion: 1 });\n });\n\n it(\"should flatten union model\", () => {\n const union: IUnionDef = {\n key: \"Shape\",\n discriminant: \"shapeType\",\n name: \"Shape\",\n variants: { circle: \"Circle\", square: \"Square\" },\n metadata: { addedInVersion: 1 },\n };\n\n const ir: IRealTimeDocumentSchema = {\n name: \"Test\",\n description: \"Test\",\n version: 1,\n primaryModelKeys: [\"Shape\"],\n models: {\n Shape: { type: \"union\", union } as IModelDef,\n },\n };\n\n const wire = convertIrToWireSchema(ir);\n const shapeModel = wire.models[\"Shape\"];\n expect(shapeModel).toBeDefined();\n expect(shapeModel!.type).toBe(\"union\");\n const shape = shapeModel as { type: \"union\" } & UnionDef;\n\n expect(shape.key).toBe(\"Shape\");\n expect(shape.discriminant).toBe(\"shapeType\");\n expect(shape.variants).toEqual({ circle: \"Circle\", square: \"Square\" });\n expect(\"union\" in shape).toBe(false); // no conjure nesting\n });\n\n it(\"should convert value field type with FieldValueType wrapper\", () => {\n const record: IRecordDef = {\n key: \"R\",\n name: \"R\",\n fields: [\n {\n key: \"f\",\n name: \"f\",\n fieldType: {\n type: \"value\",\n value: IFieldValueUnion.string({ defaultValue: \"abc\" }),\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const ir: IRealTimeDocumentSchema = {\n name: \"Test\",\n description: \"Test\",\n version: 1,\n primaryModelKeys: [\"R\"],\n models: { R: { type: \"record\", record } as IModelDef },\n };\n\n const wire = convertIrToWireSchema(ir);\n expect(wire.models[\"R\"]).toBeDefined();\n expect(wire.models[\"R\"]!.type).toBe(\"record\");\n const recordModel = wire.models[\"R\"] as { type: \"record\" } & RecordDef;\n const field = recordModel.fields[0]!;\n\n // Wire format wraps in { valueType: { type: \"string\", defaultValue: \"abc\" } }\n expect(field.fieldType).toEqual({\n type: \"value\",\n valueType: {\n type: \"string\",\n defaultValue: \"abc\",\n },\n });\n });\n\n it(\"should convert array field type with FieldValueType wrapper on elements\", () => {\n const record: IRecordDef = {\n key: \"R\",\n name: \"R\",\n fields: [\n {\n key: \"tags\",\n name: \"Tags\",\n fieldType: {\n type: \"array\",\n array: {\n allowNullValue: false,\n value: IFieldValueUnion.string({}),\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const ir: IRealTimeDocumentSchema = {\n name: \"Test\",\n description: \"Test\",\n version: 1,\n primaryModelKeys: [\"R\"],\n models: { R: { type: \"record\", record } as IModelDef },\n };\n\n const wire = convertIrToWireSchema(ir);\n expect(wire.models[\"R\"]).toBeDefined();\n expect(wire.models[\"R\"]!.type).toBe(\"record\");\n const recordModel = wire.models[\"R\"] as { type: \"record\" } & RecordDef;\n const field = recordModel.fields[0]!;\n\n expect(field.fieldType).toEqual({\n type: \"array\",\n allowNullValue: false,\n value: {\n valueType: {\n type: \"string\",\n },\n },\n });\n });\n\n it(\"should flatten all field value union variants\", () => {\n const variants: Array<{\n fn: (payload: never) => IFieldValueUnion;\n type: string;\n payload: Record<string, unknown>;\n }> = [\n { fn: IFieldValueUnion.boolean, type: \"boolean\", payload: {} },\n { fn: IFieldValueUnion.datetime, type: \"datetime\", payload: {} },\n { fn: IFieldValueUnion.docRef, type: \"docRef\", payload: { documentTypeRids: [\"rid1\"] } },\n { fn: IFieldValueUnion.double, type: \"double\", payload: { minValue: 0, maxValue: 100 } },\n { fn: IFieldValueUnion.integer, type: \"integer\", payload: { defaultValue: 42 } },\n { fn: IFieldValueUnion.mediaRef, type: \"mediaRef\", payload: {} },\n { fn: IFieldValueUnion.modelRef, type: \"modelRef\", payload: { modelTypes: [\"Foo\"] } },\n {\n fn: IFieldValueUnion.object,\n type: \"object\",\n payload: { interfaceTypeRids: [], objectTypeRids: [\"rid2\"] },\n },\n { fn: IFieldValueUnion.string, type: \"string\", payload: { maxLength: 255 } },\n { fn: IFieldValueUnion.text, type: \"text\", payload: {} },\n { fn: IFieldValueUnion.unmanagedJson, type: \"unmanagedJson\", payload: {} },\n { fn: IFieldValueUnion.userRef, type: \"userRef\", payload: {} },\n ];\n\n for (const { fn, type, payload } of variants) {\n const record: IRecordDef = {\n key: \"R\",\n name: \"R\",\n fields: [\n {\n key: \"f\",\n name: \"f\",\n fieldType: {\n type: \"value\",\n value: fn(payload as never),\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const ir: IRealTimeDocumentSchema = {\n name: \"Test\",\n description: \"Test\",\n version: 1,\n primaryModelKeys: [\"R\"],\n models: { R: { type: \"record\", record } as IModelDef },\n };\n\n const wire = convertIrToWireSchema(ir);\n expect(wire.models[\"R\"]).toBeDefined();\n expect(wire.models[\"R\"]!.type).toBe(\"record\");\n const recordModel = wire.models[\"R\"] as { type: \"record\" } & RecordDef;\n const fieldType = recordModel.fields[0]!.fieldType;\n expect(fieldType.type).toBe(\"value\");\n const wireValue = (fieldType as { type: \"value\" } & FieldValueType).valueType;\n expect(wireValue.type).toBe(type);\n // no conjure nesting key\n expect((wireValue as unknown as Record<string, unknown>)[type]).toBeUndefined();\n // Payload fields should be at top level\n for (const [key, val] of Object.entries(payload)) {\n expect((wireValue as unknown as Record<string, unknown>)[key]).toEqual(val);\n }\n }\n });\n\n it(\"should strip name, description, version from output\", () => {\n const ir: IRealTimeDocumentSchema = {\n name: \"My Schema\",\n description: \"My description\",\n version: 5,\n primaryModelKeys: [],\n models: {},\n };\n\n const wire = convertIrToWireSchema(ir);\n\n expect(\"name\" in wire).toBe(false);\n expect(\"description\" in wire).toBe(false);\n expect(\"version\" in wire).toBe(false);\n expect(wire.primaryModelKeys).toEqual([]);\n expect(wire.models).toEqual({});\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -37,7 +37,7 @@ describe("generateModelsFromIr", () => {
37
37
  key: "name",
38
38
  name: "Name",
39
39
  description: "Person name",
40
- value: {
40
+ fieldType: {
41
41
  type: "value",
42
42
  value: {
43
43
  type: "string",
@@ -47,14 +47,14 @@ describe("generateModelsFromIr", () => {
47
47
  }
48
48
  }
49
49
  },
50
- meta: {
51
- addedIn: 1
50
+ metadata: {
51
+ addedInVersion: 1
52
52
  }
53
53
  }, {
54
54
  key: "age",
55
55
  name: "Age",
56
56
  description: "Person age",
57
- value: {
57
+ fieldType: {
58
58
  type: "value",
59
59
  value: {
60
60
  type: "integer",
@@ -64,13 +64,10 @@ describe("generateModelsFromIr", () => {
64
64
  }
65
65
  }
66
66
  },
67
- meta: {
68
- addedIn: 1
67
+ metadata: {
68
+ addedInVersion: 1
69
69
  }
70
- }],
71
- meta: {
72
- addedIn: 1
73
- }
70
+ }]
74
71
  }
75
72
  }
76
73
  }
@@ -104,7 +101,7 @@ describe("generateModelsFromIr", () => {
104
101
  key: "documentRef",
105
102
  name: "Document Reference",
106
103
  description: "Reference to a document",
107
- value: {
104
+ fieldType: {
108
105
  type: "value",
109
106
  value: {
110
107
  type: "docRef",
@@ -113,41 +110,38 @@ describe("generateModelsFromIr", () => {
113
110
  }
114
111
  }
115
112
  },
116
- meta: {
117
- addedIn: 1
113
+ metadata: {
114
+ addedInVersion: 1
118
115
  }
119
116
  }, {
120
117
  key: "userRef",
121
118
  name: "User Reference",
122
119
  description: "Reference to a user",
123
- value: {
120
+ fieldType: {
124
121
  type: "value",
125
122
  value: {
126
123
  type: "userRef",
127
124
  userRef: {}
128
125
  }
129
126
  },
130
- meta: {
131
- addedIn: 1
127
+ metadata: {
128
+ addedInVersion: 1
132
129
  }
133
130
  }, {
134
131
  key: "timestamp",
135
132
  name: "Timestamp",
136
133
  description: "Event timestamp",
137
- value: {
134
+ fieldType: {
138
135
  type: "value",
139
136
  value: {
140
137
  type: "datetime",
141
138
  datetime: {}
142
139
  }
143
140
  },
144
- meta: {
145
- addedIn: 1
141
+ metadata: {
142
+ addedInVersion: 1
146
143
  }
147
- }],
148
- meta: {
149
- addedIn: 1
150
- }
144
+ }]
151
145
  }
152
146
  }
153
147
  }
@@ -183,34 +177,31 @@ describe("generateModelsFromIr", () => {
183
177
  key: "x",
184
178
  name: "X",
185
179
  description: "X coordinate",
186
- value: {
180
+ fieldType: {
187
181
  type: "value",
188
182
  value: {
189
183
  type: "double",
190
184
  double: {}
191
185
  }
192
186
  },
193
- meta: {
194
- addedIn: 1
187
+ metadata: {
188
+ addedInVersion: 1
195
189
  }
196
190
  }, {
197
191
  key: "y",
198
192
  name: "Y",
199
193
  description: "Y coordinate",
200
- value: {
194
+ fieldType: {
201
195
  type: "value",
202
196
  value: {
203
197
  type: "double",
204
198
  double: {}
205
199
  }
206
200
  },
207
- meta: {
208
- addedIn: 1
201
+ metadata: {
202
+ addedInVersion: 1
209
203
  }
210
- }],
211
- meta: {
212
- addedIn: 1
213
- }
204
+ }]
214
205
  }
215
206
  },
216
207
  TextBox: {
@@ -223,34 +214,31 @@ describe("generateModelsFromIr", () => {
223
214
  key: "x",
224
215
  name: "X",
225
216
  description: "X coordinate",
226
- value: {
217
+ fieldType: {
227
218
  type: "value",
228
219
  value: {
229
220
  type: "double",
230
221
  double: {}
231
222
  }
232
223
  },
233
- meta: {
234
- addedIn: 1
224
+ metadata: {
225
+ addedInVersion: 1
235
226
  }
236
227
  }, {
237
228
  key: "text",
238
229
  name: "Text",
239
230
  description: "Text content",
240
- value: {
231
+ fieldType: {
241
232
  type: "value",
242
233
  value: {
243
234
  type: "string",
244
235
  string: {}
245
236
  }
246
237
  },
247
- meta: {
248
- addedIn: 1
238
+ metadata: {
239
+ addedInVersion: 1
249
240
  }
250
- }],
251
- meta: {
252
- addedIn: 1
253
- }
241
+ }]
254
242
  }
255
243
  },
256
244
  Node: {
@@ -264,8 +252,8 @@ describe("generateModelsFromIr", () => {
264
252
  object: "ObjectNode",
265
253
  "text-box": "TextBox"
266
254
  },
267
- meta: {
268
- addedIn: 1
255
+ metadata: {
256
+ addedInVersion: 1
269
257
  }
270
258
  }
271
259
  }
@@ -306,20 +294,17 @@ describe("generateModelsFromIr", () => {
306
294
  key: "meow",
307
295
  name: "Meow",
308
296
  description: "Cat sound",
309
- value: {
297
+ fieldType: {
310
298
  type: "value",
311
299
  value: {
312
300
  type: "string",
313
301
  string: {}
314
302
  }
315
303
  },
316
- meta: {
317
- addedIn: 1
304
+ metadata: {
305
+ addedInVersion: 1
318
306
  }
319
- }],
320
- meta: {
321
- addedIn: 1
322
- }
307
+ }]
323
308
  }
324
309
  },
325
310
  Dog: {
@@ -332,20 +317,17 @@ describe("generateModelsFromIr", () => {
332
317
  key: "bark",
333
318
  name: "Bark",
334
319
  description: "Dog sound",
335
- value: {
320
+ fieldType: {
336
321
  type: "value",
337
322
  value: {
338
323
  type: "string",
339
324
  string: {}
340
325
  }
341
326
  },
342
- meta: {
343
- addedIn: 1
327
+ metadata: {
328
+ addedInVersion: 1
344
329
  }
345
- }],
346
- meta: {
347
- addedIn: 1
348
- }
330
+ }]
349
331
  }
350
332
  },
351
333
  Animal: {
@@ -359,8 +341,8 @@ describe("generateModelsFromIr", () => {
359
341
  cat: "Cat",
360
342
  dog: "Dog"
361
343
  },
362
- meta: {
363
- addedIn: 1
344
+ metadata: {
345
+ addedInVersion: 1
364
346
  }
365
347
  }
366
348
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateModelsFromIr.test.js","names":["path","describe","expect","it","generateModelsFromIr","formatWithPrettier","snapshotDir","join","__dirname","result","name","description","version","primaryModelKeys","models","Person","type","record","key","fields","value","string","minLength","maxLength","meta","addedIn","integer","minValue","maxValue","formatted","lines","split","importLines","filter","line","startsWith","length","toBeGreaterThan","forEach","toMatch","toMatchFileSnapshot","Event","docRef","documentTypeRids","userRef","datetime","toContain","ObjectNode","double","TextBox","Node","union","discriminant","variants","object","Cat","Dog","Animal","cat","dog"],"sources":["generateModelsFromIr.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport type {\n IFieldDef,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { generateModelsFromIr } from \"../generateModelsFromIr.js\";\nimport { formatWithPrettier } from \"./formatWithPrettier.js\";\n\ndescribe(\"generateModelsFromIr\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateModelsFromIr\");\n\n it(\"should generate Model constants for simple record types\", async () => {\n const personField1: IFieldDef = {\n key: \"name\",\n name: \"Name\",\n description: \"Person name\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: { minLength: 2, maxLength: 50 },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const personField2: IFieldDef = {\n key: \"age\",\n name: \"Age\",\n description: \"Person age\",\n value: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: { minValue: 0, maxValue: 150 },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const personRecord: IRecordDef = {\n key: \"Person\",\n name: \"Person\",\n description: \"A person record\",\n fields: [personField1, personField2],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Person\"],\n models: {\n Person: {\n type: \"record\",\n record: personRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify imports are properly formatted (no weird indentation)\n const lines = formatted.split(\"\\n\");\n const importLines = lines.filter(line => line.startsWith(\"import\"));\n expect(importLines.length).toBeGreaterThan(0);\n // All imports should start at column 0 (no leading whitespace)\n importLines.forEach(line => {\n expect(line).toMatch(/^import/);\n });\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"simple-record.ts\"));\n });\n\n it(\"should generate Model constants with external ref fields\", async () => {\n const eventField1: IFieldDef = {\n key: \"documentRef\",\n name: \"Document Reference\",\n description: \"Reference to a document\",\n value: {\n type: \"value\",\n value: {\n type: \"docRef\",\n docRef: {\n documentTypeRids: [],\n },\n },\n },\n meta: { addedIn: 1 },\n };\n\n const eventField2: IFieldDef = {\n key: \"userRef\",\n name: \"User Reference\",\n description: \"Reference to a user\",\n value: {\n type: \"value\",\n value: {\n type: \"userRef\",\n userRef: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const eventField3: IFieldDef = {\n key: \"timestamp\",\n name: \"Timestamp\",\n description: \"Event timestamp\",\n value: {\n type: \"value\",\n value: {\n type: \"datetime\",\n datetime: {},\n },\n },\n meta: { addedIn: 1 },\n };\n\n const eventRecord: IRecordDef = {\n key: \"Event\",\n name: \"Event\",\n description: \"An event record with external refs\",\n fields: [eventField1, eventField2, eventField3],\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with external refs\",\n version: 1,\n primaryModelKeys: [\"Event\"],\n models: {\n Event: {\n type: \"record\",\n record: eventRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify external ref fields are included in metadata\n expect(formatted).toContain(\"externalRefFieldTypes\");\n expect(formatted).toContain(\"documentRef: 'docRef'\");\n expect(formatted).toContain(\"userRef: 'userRef'\");\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"external-refs.ts\"));\n });\n\n it(\"should generate Model constants for union types\", async () => {\n // Define the ObjectNode record\n const objectNodeRecord: IRecordDef = {\n key: \"ObjectNode\",\n name: \"ObjectNode\",\n description: \"A node in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n // Define the TextBox record\n const textBoxRecord: IRecordDef = {\n key: \"TextBox\",\n name: \"TextBox\",\n description: \"A text box in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n value: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n meta: { addedIn: 1 },\n },\n {\n key: \"text\",\n name: \"Text\",\n description: \"Text content\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n // Define the Node union\n const nodeUnion: IUnionDef = {\n key: \"Node\",\n discriminant: \"type\",\n name: \"Node\",\n description: \"A node in the graph\",\n variants: {\n object: \"ObjectNode\",\n \"text-box\": \"TextBox\",\n },\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with unions\",\n version: 1,\n primaryModelKeys: [\"ObjectNode\", \"TextBox\", \"Node\"],\n models: {\n ObjectNode: {\n type: \"record\",\n record: objectNodeRecord,\n } as IModelDef,\n TextBox: {\n type: \"record\",\n record: textBoxRecord,\n } as IModelDef,\n Node: {\n type: \"union\",\n union: nodeUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify all models are generated (primary models + union variants)\n expect(formatted).toContain(\"export const ObjectNodeModel\");\n expect(formatted).toContain(\"export const TextBoxModel\");\n expect(formatted).toContain(\"export const NodeModel\");\n expect(formatted).toContain(\"export const NodeObjectModel\");\n expect(formatted).toContain(\"export const NodeTextBoxModel\");\n\n // Verify DocumentSchema contains all models\n expect(formatted).toContain(\"export const DocumentModel\");\n expect(formatted).toContain(\"ObjectNode: ObjectNodeModel\");\n expect(formatted).toContain(\"TextBox: TextBoxModel\");\n expect(formatted).toContain(\"Node: NodeModel\");\n expect(formatted).toContain(\"NodeObject: NodeObjectModel\");\n expect(formatted).toContain(\"NodeTextBox: NodeTextBoxModel\");\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-types.ts\"));\n });\n\n it(\"should generate Model constants with custom discriminant\", async () => {\n const catRecord: IRecordDef = {\n key: \"Cat\",\n name: \"Cat\",\n description: \"A cat\",\n fields: [\n {\n key: \"meow\",\n name: \"Meow\",\n description: \"Cat sound\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n const dogRecord: IRecordDef = {\n key: \"Dog\",\n name: \"Dog\",\n description: \"A dog\",\n fields: [\n {\n key: \"bark\",\n name: \"Bark\",\n description: \"Dog sound\",\n value: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n meta: { addedIn: 1 },\n },\n ],\n meta: { addedIn: 1 },\n };\n\n const animalUnion: IUnionDef = {\n key: \"Animal\",\n discriminant: \"kind\",\n name: \"Animal\",\n description: \"An animal union with custom discriminant\",\n variants: {\n cat: \"Cat\",\n dog: \"Dog\",\n },\n meta: { addedIn: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with custom discriminant\",\n version: 1,\n primaryModelKeys: [\"Cat\", \"Dog\", \"Animal\"],\n models: {\n Cat: {\n type: \"record\",\n record: catRecord,\n } as IModelDef,\n Dog: {\n type: \"record\",\n record: dogRecord,\n } as IModelDef,\n Animal: {\n type: \"union\",\n union: animalUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n expect(formatted).toContain(\"discriminant: 'kind'\");\n expect(formatted).toContain(\"export const AnimalModel\");\n expect(formatted).toContain(\"export const AnimalCatModel\");\n expect(formatted).toContain(\"export const AnimalDogModel\");\n\n await expect(formatted).toMatchFileSnapshot(\n path.join(snapshotDir, \"custom-discriminant.ts\"),\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateModelsFromIr.test.js","names":["path","describe","expect","it","generateModelsFromIr","formatWithPrettier","snapshotDir","join","__dirname","result","name","description","version","primaryModelKeys","models","Person","type","record","key","fields","fieldType","value","string","minLength","maxLength","metadata","addedInVersion","integer","minValue","maxValue","formatted","lines","split","importLines","filter","line","startsWith","length","toBeGreaterThan","forEach","toMatch","toMatchFileSnapshot","Event","docRef","documentTypeRids","userRef","datetime","toContain","ObjectNode","double","TextBox","Node","union","discriminant","variants","object","Cat","Dog","Animal","cat","dog"],"sources":["generateModelsFromIr.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport type {\n IFieldDef,\n IModelDef,\n IRealTimeDocumentSchema,\n IRecordDef,\n IUnionDef,\n} from \"../../../lib/pack-docschema-api/pack-docschema-ir/index.js\";\nimport { generateModelsFromIr } from \"../generateModelsFromIr.js\";\nimport { formatWithPrettier } from \"./formatWithPrettier.js\";\n\ndescribe(\"generateModelsFromIr\", () => {\n const snapshotDir = path.join(__dirname, \"__snapshots__\", \"generateModelsFromIr\");\n\n it(\"should generate Model constants for simple record types\", async () => {\n const personField1: IFieldDef = {\n key: \"name\",\n name: \"Name\",\n description: \"Person name\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: { minLength: 2, maxLength: 50 },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const personField2: IFieldDef = {\n key: \"age\",\n name: \"Age\",\n description: \"Person age\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"integer\",\n integer: { minValue: 0, maxValue: 150 },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const personRecord: IRecordDef = {\n key: \"Person\",\n name: \"Person\",\n description: \"A person record\",\n fields: [personField1, personField2],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema\",\n version: 1,\n primaryModelKeys: [\"Person\"],\n models: {\n Person: {\n type: \"record\",\n record: personRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify imports are properly formatted (no weird indentation)\n const lines = formatted.split(\"\\n\");\n const importLines = lines.filter(line => line.startsWith(\"import\"));\n expect(importLines.length).toBeGreaterThan(0);\n // All imports should start at column 0 (no leading whitespace)\n importLines.forEach(line => {\n expect(line).toMatch(/^import/);\n });\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"simple-record.ts\"));\n });\n\n it(\"should generate Model constants with external ref fields\", async () => {\n const eventField1: IFieldDef = {\n key: \"documentRef\",\n name: \"Document Reference\",\n description: \"Reference to a document\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"docRef\",\n docRef: {\n documentTypeRids: [],\n },\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const eventField2: IFieldDef = {\n key: \"userRef\",\n name: \"User Reference\",\n description: \"Reference to a user\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"userRef\",\n userRef: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const eventField3: IFieldDef = {\n key: \"timestamp\",\n name: \"Timestamp\",\n description: \"Event timestamp\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"datetime\",\n datetime: {},\n },\n },\n metadata: { addedInVersion: 1 },\n };\n\n const eventRecord: IRecordDef = {\n key: \"Event\",\n name: \"Event\",\n description: \"An event record with external refs\",\n fields: [eventField1, eventField2, eventField3],\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with external refs\",\n version: 1,\n primaryModelKeys: [\"Event\"],\n models: {\n Event: {\n type: \"record\",\n record: eventRecord,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify external ref fields are included in metadata\n expect(formatted).toContain(\"externalRefFieldTypes\");\n expect(formatted).toContain(\"documentRef: 'docRef'\");\n expect(formatted).toContain(\"userRef: 'userRef'\");\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"external-refs.ts\"));\n });\n\n it(\"should generate Model constants for union types\", async () => {\n // Define the ObjectNode record\n const objectNodeRecord: IRecordDef = {\n key: \"ObjectNode\",\n name: \"ObjectNode\",\n description: \"A node in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"y\",\n name: \"Y\",\n description: \"Y coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n // Define the TextBox record\n const textBoxRecord: IRecordDef = {\n key: \"TextBox\",\n name: \"TextBox\",\n description: \"A text box in the graph\",\n fields: [\n {\n key: \"x\",\n name: \"X\",\n description: \"X coordinate\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"double\",\n double: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n {\n key: \"text\",\n name: \"Text\",\n description: \"Text content\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n // Define the Node union\n const nodeUnion: IUnionDef = {\n key: \"Node\",\n discriminant: \"type\",\n name: \"Node\",\n description: \"A node in the graph\",\n variants: {\n object: \"ObjectNode\",\n \"text-box\": \"TextBox\",\n },\n metadata: { addedInVersion: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with unions\",\n version: 1,\n primaryModelKeys: [\"ObjectNode\", \"TextBox\", \"Node\"],\n models: {\n ObjectNode: {\n type: \"record\",\n record: objectNodeRecord,\n } as IModelDef,\n TextBox: {\n type: \"record\",\n record: textBoxRecord,\n } as IModelDef,\n Node: {\n type: \"union\",\n union: nodeUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n // Verify all models are generated (primary models + union variants)\n expect(formatted).toContain(\"export const ObjectNodeModel\");\n expect(formatted).toContain(\"export const TextBoxModel\");\n expect(formatted).toContain(\"export const NodeModel\");\n expect(formatted).toContain(\"export const NodeObjectModel\");\n expect(formatted).toContain(\"export const NodeTextBoxModel\");\n\n // Verify DocumentSchema contains all models\n expect(formatted).toContain(\"export const DocumentModel\");\n expect(formatted).toContain(\"ObjectNode: ObjectNodeModel\");\n expect(formatted).toContain(\"TextBox: TextBoxModel\");\n expect(formatted).toContain(\"Node: NodeModel\");\n expect(formatted).toContain(\"NodeObject: NodeObjectModel\");\n expect(formatted).toContain(\"NodeTextBox: NodeTextBoxModel\");\n\n await expect(formatted).toMatchFileSnapshot(path.join(snapshotDir, \"union-types.ts\"));\n });\n\n it(\"should generate Model constants with custom discriminant\", async () => {\n const catRecord: IRecordDef = {\n key: \"Cat\",\n name: \"Cat\",\n description: \"A cat\",\n fields: [\n {\n key: \"meow\",\n name: \"Meow\",\n description: \"Cat sound\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const dogRecord: IRecordDef = {\n key: \"Dog\",\n name: \"Dog\",\n description: \"A dog\",\n fields: [\n {\n key: \"bark\",\n name: \"Bark\",\n description: \"Dog sound\",\n fieldType: {\n type: \"value\",\n value: {\n type: \"string\",\n string: {},\n },\n },\n metadata: { addedInVersion: 1 },\n },\n ],\n };\n\n const animalUnion: IUnionDef = {\n key: \"Animal\",\n discriminant: \"kind\",\n name: \"Animal\",\n description: \"An animal union with custom discriminant\",\n variants: {\n cat: \"Cat\",\n dog: \"Dog\",\n },\n metadata: { addedInVersion: 1 },\n };\n\n const schema: IRealTimeDocumentSchema = {\n name: \"Test Schema\",\n description: \"A test schema with custom discriminant\",\n version: 1,\n primaryModelKeys: [\"Cat\", \"Dog\", \"Animal\"],\n models: {\n Cat: {\n type: \"record\",\n record: catRecord,\n } as IModelDef,\n Dog: {\n type: \"record\",\n record: dogRecord,\n } as IModelDef,\n Animal: {\n type: \"union\",\n union: animalUnion,\n } as IModelDef,\n },\n };\n\n const result = await generateModelsFromIr(schema);\n const formatted = await formatWithPrettier(result);\n\n expect(formatted).toContain(\"discriminant: 'kind'\");\n expect(formatted).toContain(\"export const AnimalModel\");\n expect(formatted).toContain(\"export const AnimalCatModel\");\n expect(formatted).toContain(\"export const AnimalDogModel\");\n\n await expect(formatted).toMatchFileSnapshot(\n path.join(snapshotDir, \"custom-discriminant.ts\"),\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}