@palantir/pack.document-schema.type-gen 0.20.0 → 0.24.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 (89) hide show
  1. package/build/esm/lib/pack-docschema-api/pack-docschema-api/index.js +1 -0
  2. package/build/esm/lib/pack-docschema-api/pack-docschema-api/index.js.map +1 -1
  3. package/build/esm/lib/pack-docschema-api/pack-docschema-api/resourceRid.js +2 -0
  4. package/build/esm/lib/pack-docschema-api/pack-docschema-api/resourceRid.js.map +1 -0
  5. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueResourceRef.js +2 -0
  6. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueResourceRef.js.map +1 -0
  7. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.js +14 -0
  8. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.js.map +1 -1
  9. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/index.js +1 -0
  10. package/build/esm/lib/pack-docschema-api/pack-docschema-ir/index.js.map +1 -1
  11. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
  12. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
  13. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +3 -2
  14. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
  15. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
  16. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
  17. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
  18. package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
  19. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
  20. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
  21. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
  22. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
  23. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
  24. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
  25. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
  26. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
  27. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
  28. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
  29. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
  30. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
  31. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
  32. package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
  33. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js +6 -0
  34. package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -1
  35. package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js +17 -0
  36. package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js.map +1 -1
  37. package/build/esm/utils/ir/convertIrToWireSchema.js +7 -0
  38. package/build/esm/utils/ir/convertIrToWireSchema.js.map +1 -1
  39. package/build/esm/utils/ir/generateModelsFromIr.js +3 -1
  40. package/build/esm/utils/ir/generateModelsFromIr.js.map +1 -1
  41. package/build/esm/utils/ir/generateZodSchemasFromIr.js +1 -0
  42. package/build/esm/utils/ir/generateZodSchemasFromIr.js.map +1 -1
  43. package/build/esm/utils/ir/irFieldHelpers.js +24 -11
  44. package/build/esm/utils/ir/irFieldHelpers.js.map +1 -1
  45. package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js +1 -1
  46. package/build/esm/utils/schema/__tests__/__snapshots__/generateDocumentTypeFromSchema/with-name-and-description.js.map +1 -1
  47. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -1
  48. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -1
  49. package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -1
  50. package/build/esm/utils/schema/__tests__/fixtures.js +6 -2
  51. package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -1
  52. package/build/esm/utils/schema/convertSchemaToSteps.js +2 -0
  53. package/build/esm/utils/schema/convertSchemaToSteps.js.map +1 -1
  54. package/build/esm/utils/schema/generateTypesFromSchema.js +13 -8
  55. package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
  56. package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
  57. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
  58. package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
  59. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
  60. package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
  61. package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
  62. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
  63. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
  64. package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
  65. package/build/esm/utils/steps/__tests__/fixtures/stepSchemas/refTypes.js +15 -0
  66. package/build/esm/utils/steps/__tests__/fixtures/stepSchemas/refTypes.js.map +1 -1
  67. package/build/esm/utils/steps/convertStepsToIr.js +5 -0
  68. package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
  69. package/build/esm/utils/steps/convertStepsToSchema.js +5 -0
  70. package/build/esm/utils/steps/convertStepsToSchema.js.map +1 -1
  71. package/build/types/lib/pack-docschema-api/pack-docschema-api/index.d.ts +1 -0
  72. package/build/types/lib/pack-docschema-api/pack-docschema-api/index.d.ts.map +1 -1
  73. package/build/types/lib/pack-docschema-api/pack-docschema-api/resourceRid.d.ts +5 -0
  74. package/build/types/lib/pack-docschema-api/pack-docschema-api/resourceRid.d.ts.map +1 -0
  75. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueResourceRef.d.ts +5 -0
  76. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueResourceRef.d.ts.map +1 -0
  77. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.d.ts +11 -1
  78. package/build/types/lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.d.ts.map +1 -1
  79. package/build/types/lib/pack-docschema-api/pack-docschema-ir/index.d.ts +1 -0
  80. package/build/types/lib/pack-docschema-api/pack-docschema-ir/index.d.ts.map +1 -1
  81. package/build/types/utils/ir/generateModelsFromIr.d.ts.map +1 -1
  82. package/build/types/utils/ir/generateZodSchemasFromIr.d.ts.map +1 -1
  83. package/build/types/utils/ir/irFieldHelpers.d.ts +4 -3
  84. package/build/types/utils/ir/irFieldHelpers.d.ts.map +1 -1
  85. package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -1
  86. package/build/types/utils/schema/convertSchemaToSteps.d.ts.map +1 -1
  87. package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
  88. package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
  89. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"irFieldHelpers.js","names":["versionedSchemaName","versionedTypeName","convertFieldTypeToTypeScript","fieldType","version","type","convertCollectionValueToTypeScript","array","Error","convertFieldValueToTypeScript","value","collection","modelKey","modelRef","modelTypes","convertFieldTypeToZodSchema","inner","convertFieldValueToZodSchema","optSuffix","allowNullValue","refSchemaName","refTypeName","convertFieldTypeToInternalTypeScript","isOptional","base","convertFieldTypeToInternalTsInner","convertCollectionValueToInternalTs","needsParens","includes","startsWith","wrapped","convertFieldValueToInternalTs","convertFieldTypeToInternalZod","convertFieldTypeToInternalZodInner","endsWith","convertCollectionValueToInternalZod","convertFieldValueToInternalZod","convertFieldTypeToDescriptor","convertFieldTypeToDescriptorInner","convertCollectionValueToDescriptor","convertFieldValueToDescriptor","detectUsedRefTypes","ir","refTypes","Set","modelDef","Object","values","models","field","record","fields","scanFieldTypeForRefs","out","scanFieldValueForRefs","add","collectReferencedTypes","collectReferencedValuesTypes","findExternalRefType","findExternalRefValueType","undefined"],"sources":["irFieldHelpers.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 { IFieldTypeCollection } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeCollection.js\";\nimport type { IFieldTypeUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeUnion.js\";\nimport type { IFieldValueUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.js\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/realTimeDocumentSchema.js\";\nimport { versionedSchemaName, versionedTypeName } from \"../schema/runtimeSchema.js\";\n\n// ---------------------------------------------------------------------------\n// Public read-type TypeScript conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript type string for public read types.\n */\nexport function convertFieldTypeToTypeScript(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\":\n return `readonly ${convertCollectionValueToTypeScript(fieldType.array, version)}[]`;\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in TypeScript generation`);\n case \"value\":\n return convertFieldValueToTypeScript(fieldType.value, version);\n }\n}\n\nfunction convertCollectionValueToTypeScript(\n collection: IFieldTypeCollection,\n version?: number,\n): string {\n // allowNullValue is ignored in public read types (current behavior)\n return convertFieldValueToTypeScript(collection.value, version);\n}\n\nfunction convertFieldValueToTypeScript(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n case \"boolean\":\n return \"boolean\";\n case \"datetime\":\n return \"string\";\n case \"docRef\":\n return \"DocumentRef\";\n case \"double\":\n return \"number\";\n case \"integer\":\n return \"number\";\n case \"mediaRef\":\n return \"MediaRef\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return version != null ? versionedTypeName(modelKey, version) : modelKey;\n }\n case \"object\":\n return \"ObjectRef\";\n case \"string\":\n return \"string\";\n case \"text\":\n return \"string\";\n case \"unmanagedJson\":\n return \"any\";\n case \"userRef\":\n return \"UserRef\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string.\n */\nexport function convertFieldTypeToZodSchema(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertFieldValueToZodSchema(fieldType.array.value, version);\n const optSuffix = fieldType.array.allowNullValue ? \".optional()\" : \"\";\n return `z.array(${inner}${optSuffix})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in Zod generation`);\n case \"value\":\n return convertFieldValueToZodSchema(fieldType.value, version);\n }\n}\n\nfunction convertFieldValueToZodSchema(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n const refSchemaName = version != null\n ? versionedSchemaName(modelKey, version)\n : `${modelKey}Schema`;\n const refTypeName = version != null ? versionedTypeName(modelKey, version) : modelKey;\n return `z.lazy((): ZodType<${refTypeName}> => ${refSchemaName})`;\n }\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal TypeScript conversion (refs → unknown, external refs → string)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript string for internal types.\n */\nexport function convertFieldTypeToInternalTypeScript(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalTsInner(fieldType);\n if (isOptional) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalTsInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalTs(fieldType.array);\n const needsParens = inner.includes(\"|\") || inner.startsWith(\"readonly \");\n const wrapped = needsParens ? `(${inner})` : inner;\n return `readonly ${wrapped}[]`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal TypeScript generation`);\n case \"value\":\n return convertFieldValueToInternalTs(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalTs(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalTs(collection.value);\n if (collection.allowNullValue) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalTs(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"boolean\";\n case \"double\":\n case \"integer\":\n return \"number\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"string\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"unknown\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string for internal schemas.\n */\nexport function convertFieldTypeToInternalZod(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalZodInner(fieldType);\n if (isOptional) {\n if (base.endsWith(\".optional()\")) {\n return base;\n }\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalZodInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalZod(fieldType.array);\n return `z.array(${inner})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal Zod generation`);\n case \"value\":\n return convertFieldValueToInternalZod(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalZod(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalZod(collection.value);\n if (collection.allowNullValue) {\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalZod(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// FieldTypeDescriptor conversion (for UpgradeLens)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a FieldTypeDescriptor source string for UpgradeLens.\n */\nexport function convertFieldTypeToDescriptor(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToDescriptorInner(fieldType);\n if (isOptional) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldTypeToDescriptorInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToDescriptor(fieldType.array);\n return `{ kind: \"array\", element: ${inner} }`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in descriptor generation`);\n case \"value\":\n return convertFieldValueToDescriptor(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToDescriptor(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToDescriptor(collection.value);\n if (collection.allowNullValue) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldValueToDescriptor(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return `{ kind: \"modelRef\", model: \"${modelKey}\" }`;\n }\n default:\n return `{ kind: \"primitive\" }`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Ref type detection (for import generation)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect which external ref types (DocumentRef, MediaRef, ObjectRef, UserRef)\n * are used anywhere in the IR schema.\n */\nexport function detectUsedRefTypes(ir: IRealTimeDocumentSchema): Set<string> {\n const refTypes = new Set<string>();\n\n for (const modelDef of Object.values(ir.models)) {\n if (modelDef.type === \"record\") {\n for (const field of modelDef.record.fields) {\n scanFieldTypeForRefs(field.fieldType, refTypes);\n }\n }\n }\n\n return refTypes;\n}\n\nfunction scanFieldTypeForRefs(fieldType: IFieldTypeUnion, out: Set<string>): void {\n switch (fieldType.type) {\n case \"array\":\n scanFieldValueForRefs(fieldType.array.value, out);\n break;\n case \"value\":\n scanFieldValueForRefs(fieldType.value, out);\n break;\n }\n}\n\nfunction scanFieldValueForRefs(value: IFieldValueUnion, out: Set<string>): void {\n switch (value.type) {\n case \"docRef\":\n out.add(\"DocumentRef\");\n break;\n case \"mediaRef\":\n out.add(\"MediaRef\");\n break;\n case \"object\":\n out.add(\"ObjectRef\");\n break;\n case \"userRef\":\n out.add(\"UserRef\");\n break;\n }\n}\n\n/**\n * Collect schema-local type references (versioned type names) from a field type.\n */\nexport function collectReferencedTypes(\n fieldType: IFieldTypeUnion,\n version: number,\n out: Set<string>,\n): void {\n switch (fieldType.type) {\n case \"array\":\n collectReferencedValuesTypes(fieldType.array.value, version, out);\n break;\n case \"value\":\n collectReferencedValuesTypes(fieldType.value, version, out);\n break;\n }\n}\n\nfunction collectReferencedValuesTypes(\n value: IFieldValueUnion,\n version: number,\n out: Set<string>,\n): void {\n if (value.type === \"modelRef\") {\n const modelKey = value.modelRef.modelTypes[0]!;\n out.add(versionedTypeName(modelKey, version));\n }\n}\n\n// ---------------------------------------------------------------------------\n// External ref field type detection (for model metadata)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect the external ref type (docRef, mediaRef, objectRef, userRef) of a field, if any.\n */\nexport function findExternalRefType(fieldType: IFieldTypeUnion): string | undefined {\n switch (fieldType.type) {\n case \"array\":\n return findExternalRefValueType(fieldType.array.value);\n case \"value\":\n return findExternalRefValueType(fieldType.value);\n default:\n return undefined;\n }\n}\n\nfunction findExternalRefValueType(value: IFieldValueUnion): string | undefined {\n switch (value.type) {\n case \"docRef\":\n return \"docRef\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"object\":\n return \"objectRef\";\n case \"userRef\":\n return \"userRef\";\n default:\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"irFieldHelpers.js","names":["versionedSchemaName","versionedTypeName","convertFieldTypeToTypeScript","fieldType","version","type","convertCollectionValueToTypeScript","array","Error","convertFieldValueToTypeScript","value","collection","modelKey","modelRef","modelTypes","convertFieldTypeToZodSchema","inner","convertFieldValueToZodSchema","optSuffix","allowNullValue","refSchemaName","refTypeName","convertFieldTypeToInternalTypeScript","isOptional","base","convertFieldTypeToInternalTsInner","convertCollectionValueToInternalTs","needsParens","includes","startsWith","wrapped","convertFieldValueToInternalTs","convertFieldTypeToInternalZod","convertFieldTypeToInternalZodInner","endsWith","convertCollectionValueToInternalZod","convertFieldValueToInternalZod","convertFieldTypeToDescriptor","convertFieldTypeToDescriptorInner","convertCollectionValueToDescriptor","convertFieldValueToDescriptor","detectUsedRefTypes","ir","refTypes","Set","modelDef","Object","values","models","field","record","fields","scanFieldTypeForRefs","out","scanFieldValueForRefs","add","collectReferencedTypes","collectReferencedValuesTypes","findExternalRefType","findExternalRefValueType","undefined"],"sources":["irFieldHelpers.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 { IFieldTypeCollection } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeCollection.js\";\nimport type { IFieldTypeUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldTypeUnion.js\";\nimport type { IFieldValueUnion } from \"../../lib/pack-docschema-api/pack-docschema-ir/fieldValueUnion.js\";\nimport type { IRealTimeDocumentSchema } from \"../../lib/pack-docschema-api/pack-docschema-ir/realTimeDocumentSchema.js\";\nimport { versionedSchemaName, versionedTypeName } from \"../schema/runtimeSchema.js\";\n\n// ---------------------------------------------------------------------------\n// Public read-type TypeScript conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript type string for public read types.\n */\nexport function convertFieldTypeToTypeScript(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\":\n return `readonly ${convertCollectionValueToTypeScript(fieldType.array, version)}[]`;\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in TypeScript generation`);\n case \"value\":\n return convertFieldValueToTypeScript(fieldType.value, version);\n }\n}\n\nfunction convertCollectionValueToTypeScript(\n collection: IFieldTypeCollection,\n version?: number,\n): string {\n // allowNullValue is ignored in public read types (current behavior)\n return convertFieldValueToTypeScript(collection.value, version);\n}\n\nfunction convertFieldValueToTypeScript(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n // Ref fields hold the bare id, so emit the id type — not the <X>Ref handle, which is\n // an object and would contradict the `string` / `z.string()` internal representation.\n case \"resourceRef\":\n return \"ResourceRid\";\n case \"boolean\":\n return \"boolean\";\n case \"datetime\":\n return \"string\";\n case \"docRef\":\n return \"DocumentId\";\n case \"double\":\n return \"number\";\n case \"integer\":\n return \"number\";\n case \"mediaRef\":\n return \"MediaId\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return version != null ? versionedTypeName(modelKey, version) : modelKey;\n }\n case \"object\":\n return \"ObjectId\";\n case \"string\":\n return \"string\";\n case \"text\":\n return \"string\";\n case \"unmanagedJson\":\n return \"any\";\n case \"userRef\":\n return \"UserId\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string.\n */\nexport function convertFieldTypeToZodSchema(\n fieldType: IFieldTypeUnion,\n version?: number,\n): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertFieldValueToZodSchema(fieldType.array.value, version);\n const optSuffix = fieldType.array.allowNullValue ? \".optional()\" : \"\";\n return `z.array(${inner}${optSuffix})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in Zod generation`);\n case \"value\":\n return convertFieldValueToZodSchema(fieldType.value, version);\n }\n}\n\nfunction convertFieldValueToZodSchema(\n value: IFieldValueUnion,\n version?: number,\n): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"resourceRef\":\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n const refSchemaName = version != null\n ? versionedSchemaName(modelKey, version)\n : `${modelKey}Schema`;\n const refTypeName = version != null ? versionedTypeName(modelKey, version) : modelKey;\n return `z.lazy((): ZodType<${refTypeName}> => ${refSchemaName})`;\n }\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal TypeScript conversion (refs → unknown, external refs → string)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a TypeScript string for internal types.\n */\nexport function convertFieldTypeToInternalTypeScript(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalTsInner(fieldType);\n if (isOptional) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalTsInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalTs(fieldType.array);\n const needsParens = inner.includes(\"|\") || inner.startsWith(\"readonly \");\n const wrapped = needsParens ? `(${inner})` : inner;\n return `readonly ${wrapped}[]`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal TypeScript generation`);\n case \"value\":\n return convertFieldValueToInternalTs(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalTs(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalTs(collection.value);\n if (collection.allowNullValue) {\n return `(${base} | undefined)`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalTs(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"boolean\";\n case \"double\":\n case \"integer\":\n return \"number\";\n case \"resourceRef\":\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"string\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"unknown\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal Zod schema conversion\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a Zod schema string for internal schemas.\n */\nexport function convertFieldTypeToInternalZod(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToInternalZodInner(fieldType);\n if (isOptional) {\n if (base.endsWith(\".optional()\")) {\n return base;\n }\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldTypeToInternalZodInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToInternalZod(fieldType.array);\n return `z.array(${inner})`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in internal Zod generation`);\n case \"value\":\n return convertFieldValueToInternalZod(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToInternalZod(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToInternalZod(collection.value);\n if (collection.allowNullValue) {\n return `${base}.optional()`;\n }\n return base;\n}\n\nfunction convertFieldValueToInternalZod(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"boolean\":\n return \"z.boolean()\";\n case \"double\":\n case \"integer\":\n return \"z.number()\";\n case \"resourceRef\":\n case \"datetime\":\n case \"docRef\":\n case \"mediaRef\":\n case \"object\":\n case \"string\":\n case \"text\":\n case \"userRef\":\n return \"z.string()\";\n case \"modelRef\":\n case \"unmanagedJson\":\n return \"z.unknown()\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// FieldTypeDescriptor conversion (for UpgradeLens)\n// ---------------------------------------------------------------------------\n\n/**\n * Convert an IR field type to a FieldTypeDescriptor source string for UpgradeLens.\n */\nexport function convertFieldTypeToDescriptor(\n fieldType: IFieldTypeUnion,\n isOptional: boolean,\n): string {\n const base = convertFieldTypeToDescriptorInner(fieldType);\n if (isOptional) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldTypeToDescriptorInner(fieldType: IFieldTypeUnion): string {\n switch (fieldType.type) {\n case \"array\": {\n const inner = convertCollectionValueToDescriptor(fieldType.array);\n return `{ kind: \"array\", element: ${inner} }`;\n }\n case \"map\":\n case \"set\":\n throw new Error(`${fieldType.type} is not yet supported in descriptor generation`);\n case \"value\":\n return convertFieldValueToDescriptor(fieldType.value);\n }\n}\n\nfunction convertCollectionValueToDescriptor(collection: IFieldTypeCollection): string {\n const base = convertFieldValueToDescriptor(collection.value);\n if (collection.allowNullValue) {\n return `{ kind: \"optional\", inner: ${base} }`;\n }\n return base;\n}\n\nfunction convertFieldValueToDescriptor(value: IFieldValueUnion): string {\n switch (value.type) {\n case \"modelRef\": {\n const modelKey = value.modelRef.modelTypes[0]!;\n return `{ kind: \"modelRef\", model: \"${modelKey}\" }`;\n }\n default:\n return `{ kind: \"primitive\" }`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Ref type detection (for import generation)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect which external ref types (ResourceRef, DocumentRef, MediaRef, ObjectRef,\n * UserRef) are used anywhere in the IR schema.\n */\nexport function detectUsedRefTypes(ir: IRealTimeDocumentSchema): Set<string> {\n const refTypes = new Set<string>();\n\n for (const modelDef of Object.values(ir.models)) {\n if (modelDef.type === \"record\") {\n for (const field of modelDef.record.fields) {\n scanFieldTypeForRefs(field.fieldType, refTypes);\n }\n }\n }\n\n return refTypes;\n}\n\nfunction scanFieldTypeForRefs(fieldType: IFieldTypeUnion, out: Set<string>): void {\n switch (fieldType.type) {\n case \"array\":\n scanFieldValueForRefs(fieldType.array.value, out);\n break;\n case \"value\":\n scanFieldValueForRefs(fieldType.value, out);\n break;\n }\n}\n\nfunction scanFieldValueForRefs(value: IFieldValueUnion, out: Set<string>): void {\n switch (value.type) {\n case \"resourceRef\":\n out.add(\"ResourceRid\");\n break;\n case \"docRef\":\n out.add(\"DocumentId\");\n break;\n case \"mediaRef\":\n out.add(\"MediaId\");\n break;\n case \"object\":\n out.add(\"ObjectId\");\n break;\n case \"userRef\":\n out.add(\"UserId\");\n break;\n }\n}\n\n/**\n * Collect schema-local type references (versioned type names) from a field type.\n */\nexport function collectReferencedTypes(\n fieldType: IFieldTypeUnion,\n version: number,\n out: Set<string>,\n): void {\n switch (fieldType.type) {\n case \"array\":\n collectReferencedValuesTypes(fieldType.array.value, version, out);\n break;\n case \"value\":\n collectReferencedValuesTypes(fieldType.value, version, out);\n break;\n }\n}\n\nfunction collectReferencedValuesTypes(\n value: IFieldValueUnion,\n version: number,\n out: Set<string>,\n): void {\n if (value.type === \"modelRef\") {\n const modelKey = value.modelRef.modelTypes[0]!;\n out.add(versionedTypeName(modelKey, version));\n }\n}\n\n// ---------------------------------------------------------------------------\n// External ref field type detection (for model metadata)\n// ---------------------------------------------------------------------------\n\n/**\n * Detect the external ref type (resourceRef, docRef, mediaRef, objectRef, userRef) of a\n * field, if any.\n */\nexport function findExternalRefType(fieldType: IFieldTypeUnion): string | undefined {\n switch (fieldType.type) {\n case \"array\":\n return findExternalRefValueType(fieldType.array.value);\n case \"value\":\n return findExternalRefValueType(fieldType.value);\n default:\n return undefined;\n }\n}\n\nfunction findExternalRefValueType(value: IFieldValueUnion): string | undefined {\n switch (value.type) {\n case \"resourceRef\":\n return \"resourceRef\";\n case \"docRef\":\n return \"docRef\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"object\":\n return \"objectRef\";\n case \"userRef\":\n return \"userRef\";\n default:\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
  // documentType.ts
3
3
  // ============================================================
4
4
 
5
- /* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */
5
+ /* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */
6
6
 
7
7
  export const DOCUMENT_TYPE_NAME = 'Canvas Document Type';
8
8
  export const DOCUMENT_TYPE_DESCRIPTION = 'Document type description for demo canvas';
@@ -1 +1 @@
1
- {"version":3,"file":"with-name-and-description.js","names":["DOCUMENT_TYPE_NAME","DOCUMENT_TYPE_DESCRIPTION"],"sources":["with-name-and-description.ts"],"sourcesContent":["// ============================================================\n// documentType.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\nexport const DOCUMENT_TYPE_NAME = 'Canvas Document Type';\nexport const DOCUMENT_TYPE_DESCRIPTION =\n 'Document type description for demo canvas';\n"],"mappings":"AAAA;AACA;AACA;;AAEA;;AAEA,OAAO,MAAMA,kBAAkB,GAAG,sBAAsB;AACxD,OAAO,MAAMC,yBAAyB,GACpC,2CAA2C","ignoreList":[]}
1
+ {"version":3,"file":"with-name-and-description.js","names":["DOCUMENT_TYPE_NAME","DOCUMENT_TYPE_DESCRIPTION"],"sources":["with-name-and-description.ts"],"sourcesContent":["// ============================================================\n// documentType.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\nexport const DOCUMENT_TYPE_NAME = 'Canvas Document Type';\nexport const DOCUMENT_TYPE_DESCRIPTION =\n 'Document type description for demo canvas';\n"],"mappings":"AAAA;AACA;AACA;;AAEA;;AAEA,OAAO,MAAMA,kBAAkB,GAAG,sBAAsB;AACxD,OAAO,MAAMC,yBAAyB,GACpC,2CAA2C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"single-version.js","names":[],"sources":["single-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\nexport type SupportedVersions = 1;\nexport type LatestVersion = 1;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"single-version.js","names":[],"sources":["single-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\nexport type SupportedVersions = 1;\nexport type LatestVersion = 1;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"three-version-chain.js","names":[],"sources":["three-version-chain.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\nexport type SupportedVersions = 1 | 2 | 3;\nexport type LatestVersion = 3;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"three-version-chain.js","names":[],"sources":["three-version-chain.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\nexport type SupportedVersions = 1 | 2 | 3;\nexport type LatestVersion = 3;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"two-version.js","names":[],"sources":["two-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\nexport type SupportedVersions = 1 | 2;\nexport type LatestVersion = 2;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"two-version.js","names":[],"sources":["two-version.ts"],"sourcesContent":["// ============================================================\n// versions.ts\n// ============================================================\n\n/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\nexport type SupportedVersions = 1 | 2;\nexport type LatestVersion = 2;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
@@ -71,13 +71,16 @@ const addOpacityRequiredUpdate = defineSchemaUpdate("addOpacityRequired", schema
71
71
  }));
72
72
  export const twoVersionRequiredAdditiveSchema = nextSchema(singleVersionSchemaNarrow).addSchemaUpdate(addOpacityRequiredUpdate).build();
73
73
 
74
- /** Schema with ref fields: tests import paths for record refs, DocumentRef, UserRef */
74
+ /** Schema with ref fields: tests import paths for record refs, ResourceRef, DocumentRef, UserRef */
75
75
  const CircleRecord = defineRecord("Circle", {
76
76
  docs: "A circle",
77
77
  fields: {
78
78
  radius: P.Double
79
79
  }
80
80
  });
81
+ const ResourceRefField = {
82
+ type: "resourceRef"
83
+ };
81
84
  const DocRef = {
82
85
  type: "docRef"
83
86
  };
@@ -93,7 +96,8 @@ export const refFieldsSchema = defineSchema({
93
96
  extraShapes: P.Array(modelToRef(CircleRecord)),
94
97
  background: P.Optional(modelToRef(CircleRecord)),
95
98
  attachment: DocRef,
96
- owner: P.Optional(UserRefField)
99
+ owner: P.Optional(UserRefField),
100
+ resource: ResourceRefField
97
101
  }
98
102
  })
99
103
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","names":["defineRecord","defineSchema","defineSchemaUpdate","defineUnion","modelToRef","nextSchema","P","singleVersionModels","ShapeBox","docs","fields","left","Double","right","top","bottom","color","Optional","String","singleVersionSchemaNarrow","singleVersionSchema","twoVersionFieldRemovalSchema","type","models","fillColor","strokeColor","opacity","version","previous","addFillColorUpdate","schema","addField","build","twoVersionAdditiveSchema","addSchemaUpdate","addOpacityRequiredUpdate","twoVersionRequiredAdditiveSchema","CircleRecord","radius","DocRef","UserRefField","refFieldsSchema","Circle","Drawing","mainShape","extraShapes","Array","background","attachment","owner","RectangleRecord","width","height","unionTypesSchema","Rectangle","Shape","variants","circle","rectangle","nestedOptionalsSchema","Config","tags","scores","label","twoVersionDerivedFieldsSchema","migrations","derivedFrom","aliasedEntryNameSchema","FooAlias","name","AnimalRecord","species","PlantRecord","genus","LivingBeingUnion","animal","plant","nestedUnionSchema","Animal","Plant","LivingBeing","Entity","livingBeing","optionalToRequiredFieldSchema","v1","Item","threeVersionChainSchema","v1Models","v2Models","hexColor","v3Models"],"sources":["fixtures.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 { SchemaBuilder, SchemaDefinition } from \"@palantir/pack.schema\";\nimport {\n defineRecord,\n defineSchema,\n defineSchemaUpdate,\n defineUnion,\n modelToRef,\n nextSchema,\n} from \"@palantir/pack.schema\";\nimport * as P from \"@palantir/pack.schema\";\n\n/** Single-version schema: ShapeBox with 5 fields */\nconst singleVersionModels = {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n color: P.Optional(P.String),\n },\n }),\n};\nconst singleVersionSchemaNarrow = defineSchema(singleVersionModels);\nexport const singleVersionSchema: SchemaDefinition = singleVersionSchemaNarrow;\n\n/** Two-version schema with field removal (color removed, fillColor + strokeColor + opacity added) */\nexport const twoVersionFieldRemovalSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n};\n\n/** Two-version schema with additive change only (adds fillColor) */\nconst addFillColorUpdate = defineSchemaUpdate(\n \"addFillColor\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"fillColor\", P.Optional(P.String))\n .build(),\n }),\n);\n\nexport const twoVersionAdditiveSchema: SchemaDefinition = nextSchema(singleVersionSchemaNarrow)\n .addSchemaUpdate(addFillColorUpdate)\n .build();\n\n/**\n * Two-version schema adding a *required* additive field. Drives the type\n * generator down the path where `DocumentUpgradeFns` must include a zero-arg\n * thunk for the new field — `() => Model__v<current>[field]`. Optional\n * additive fields (above) are deliberately absent from `DocumentUpgradeFns`.\n */\nconst addOpacityRequiredUpdate = defineSchemaUpdate(\n \"addOpacityRequired\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"opacity\", P.Double)\n .build(),\n }),\n);\n\nexport const twoVersionRequiredAdditiveSchema: SchemaDefinition = nextSchema(\n singleVersionSchemaNarrow,\n).addSchemaUpdate(addOpacityRequiredUpdate).build();\n\n/** Schema with ref fields: tests import paths for record refs, DocumentRef, UserRef */\nconst CircleRecord = defineRecord(\"Circle\", {\n docs: \"A circle\",\n fields: {\n radius: P.Double,\n },\n});\n\nconst DocRef: P.DocRef = { type: \"docRef\" };\nconst UserRefField: P.UserRef = { type: \"userRef\" };\n\nexport const refFieldsSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Drawing: defineRecord(\"Drawing\", {\n docs: \"A drawing with references\",\n fields: {\n mainShape: CircleRecord,\n extraShapes: P.Array(modelToRef(CircleRecord)),\n background: P.Optional(modelToRef(CircleRecord)),\n attachment: DocRef,\n owner: P.Optional(UserRefField),\n },\n }),\n});\n\n/** Schema with union types: tests union variant interfaces, discriminated union, and type guards */\nconst RectangleRecord = defineRecord(\"Rectangle\", {\n docs: \"A rectangle\",\n fields: {\n width: P.Double,\n height: P.Double,\n },\n});\n\nexport const unionTypesSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Rectangle: RectangleRecord,\n Shape: defineUnion(\"Shape\", {\n docs: \"A shape\",\n variants: {\n circle: CircleRecord,\n rectangle: RectangleRecord,\n },\n }),\n});\n\n/** Schema with nested optionals: tests that optional inside array structures is preserved */\nexport const nestedOptionalsSchema: SchemaDefinition = defineSchema({\n Config: defineRecord(\"Config\", {\n docs: \"A config with nested optional fields\",\n fields: {\n tags: P.Array(P.Optional(P.String)),\n scores: P.Array(P.Optional(P.Double)),\n label: P.Optional(P.String),\n },\n }),\n});\n\n/** Two-version schema with derived fields (color split into fillColor + strokeColor) */\nexport const twoVersionDerivedFieldsSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n migrations: {\n ShapeBox: {\n fillColor: {\n derivedFrom: [\"color\"],\n },\n strokeColor: {\n derivedFrom: [\"color\"],\n },\n },\n },\n};\n\n/** Schema with aliased export key: export key \"FooAlias\" differs from model name \"Foo\" */\nexport const aliasedEntryNameSchema: SchemaDefinition = defineSchema({\n FooAlias: defineRecord(\"Foo\", {\n docs: \"A record exported under an alias\",\n fields: {\n name: P.String,\n },\n }),\n});\n\n/** Schema with nested union: Entity union has a variant that points to another union (LivingBeing) */\nconst AnimalRecord = defineRecord(\"Animal\", {\n docs: \"An animal\",\n fields: { species: P.String },\n});\n\nconst PlantRecord = defineRecord(\"Plant\", {\n docs: \"A plant\",\n fields: { genus: P.String },\n});\n\nconst LivingBeingUnion = defineUnion(\"LivingBeing\", {\n docs: \"A living being\",\n variants: {\n animal: AnimalRecord,\n plant: PlantRecord,\n },\n});\n\nexport const nestedUnionSchema: SchemaDefinition = defineSchema({\n Animal: AnimalRecord,\n Plant: PlantRecord,\n LivingBeing: LivingBeingUnion,\n Entity: defineUnion(\"Entity\", {\n docs: \"An entity\",\n variants: {\n livingBeing: LivingBeingUnion,\n },\n }),\n});\n\n/**\n * Two-version schema where a field starts as Optional(String) in v1 and becomes\n * required (String) in v2. The internal schema must remain optional because\n * documents written under v1 may legitimately omit the field.\n */\nexport const optionalToRequiredFieldSchema: SchemaDefinition = (() => {\n const v1 = defineSchema({\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.Optional(P.String),\n },\n }),\n });\n return {\n type: \"versioned\" as const,\n models: {\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.String,\n },\n }),\n },\n version: 2,\n previous: v1,\n };\n})();\n\n/** Three-version chain: Item (name, color -> name, hexColor -> name, hexColor, tags) */\nexport const threeVersionChainSchema: SchemaDefinition = (() => {\n const v1Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n color: P.Optional(P.String),\n },\n }),\n };\n const v2Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n },\n }),\n };\n const v3Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n tags: P.Optional(P.String),\n },\n }),\n };\n return {\n type: \"versioned\",\n models: v3Models,\n version: 3,\n previous: {\n type: \"versioned\",\n models: v2Models,\n version: 2,\n previous: { type: \"initial\", version: 1, models: v1Models },\n },\n };\n})();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fixtures.js","names":["defineRecord","defineSchema","defineSchemaUpdate","defineUnion","modelToRef","nextSchema","P","singleVersionModels","ShapeBox","docs","fields","left","Double","right","top","bottom","color","Optional","String","singleVersionSchemaNarrow","singleVersionSchema","twoVersionFieldRemovalSchema","type","models","fillColor","strokeColor","opacity","version","previous","addFillColorUpdate","schema","addField","build","twoVersionAdditiveSchema","addSchemaUpdate","addOpacityRequiredUpdate","twoVersionRequiredAdditiveSchema","CircleRecord","radius","ResourceRefField","DocRef","UserRefField","refFieldsSchema","Circle","Drawing","mainShape","extraShapes","Array","background","attachment","owner","resource","RectangleRecord","width","height","unionTypesSchema","Rectangle","Shape","variants","circle","rectangle","nestedOptionalsSchema","Config","tags","scores","label","twoVersionDerivedFieldsSchema","migrations","derivedFrom","aliasedEntryNameSchema","FooAlias","name","AnimalRecord","species","PlantRecord","genus","LivingBeingUnion","animal","plant","nestedUnionSchema","Animal","Plant","LivingBeing","Entity","livingBeing","optionalToRequiredFieldSchema","v1","Item","threeVersionChainSchema","v1Models","v2Models","hexColor","v3Models"],"sources":["fixtures.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 { SchemaBuilder, SchemaDefinition } from \"@palantir/pack.schema\";\nimport {\n defineRecord,\n defineSchema,\n defineSchemaUpdate,\n defineUnion,\n modelToRef,\n nextSchema,\n} from \"@palantir/pack.schema\";\nimport * as P from \"@palantir/pack.schema\";\n\n/** Single-version schema: ShapeBox with 5 fields */\nconst singleVersionModels = {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n color: P.Optional(P.String),\n },\n }),\n};\nconst singleVersionSchemaNarrow = defineSchema(singleVersionModels);\nexport const singleVersionSchema: SchemaDefinition = singleVersionSchemaNarrow;\n\n/** Two-version schema with field removal (color removed, fillColor + strokeColor + opacity added) */\nexport const twoVersionFieldRemovalSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n};\n\n/** Two-version schema with additive change only (adds fillColor) */\nconst addFillColorUpdate = defineSchemaUpdate(\n \"addFillColor\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"fillColor\", P.Optional(P.String))\n .build(),\n }),\n);\n\nexport const twoVersionAdditiveSchema: SchemaDefinition = nextSchema(singleVersionSchemaNarrow)\n .addSchemaUpdate(addFillColorUpdate)\n .build();\n\n/**\n * Two-version schema adding a *required* additive field. Drives the type\n * generator down the path where `DocumentUpgradeFns` must include a zero-arg\n * thunk for the new field — `() => Model__v<current>[field]`. Optional\n * additive fields (above) are deliberately absent from `DocumentUpgradeFns`.\n */\nconst addOpacityRequiredUpdate = defineSchemaUpdate(\n \"addOpacityRequired\",\n (schema: SchemaBuilder<typeof singleVersionModels>) => ({\n ShapeBox: schema.ShapeBox\n .addField(\"opacity\", P.Double)\n .build(),\n }),\n);\n\nexport const twoVersionRequiredAdditiveSchema: SchemaDefinition = nextSchema(\n singleVersionSchemaNarrow,\n).addSchemaUpdate(addOpacityRequiredUpdate).build();\n\n/** Schema with ref fields: tests import paths for record refs, ResourceRef, DocumentRef, UserRef */\nconst CircleRecord = defineRecord(\"Circle\", {\n docs: \"A circle\",\n fields: {\n radius: P.Double,\n },\n});\n\nconst ResourceRefField: P.ResourceRef = { type: \"resourceRef\" };\nconst DocRef: P.DocRef = { type: \"docRef\" };\nconst UserRefField: P.UserRef = { type: \"userRef\" };\n\nexport const refFieldsSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Drawing: defineRecord(\"Drawing\", {\n docs: \"A drawing with references\",\n fields: {\n mainShape: CircleRecord,\n extraShapes: P.Array(modelToRef(CircleRecord)),\n background: P.Optional(modelToRef(CircleRecord)),\n attachment: DocRef,\n owner: P.Optional(UserRefField),\n resource: ResourceRefField,\n },\n }),\n});\n\n/** Schema with union types: tests union variant interfaces, discriminated union, and type guards */\nconst RectangleRecord = defineRecord(\"Rectangle\", {\n docs: \"A rectangle\",\n fields: {\n width: P.Double,\n height: P.Double,\n },\n});\n\nexport const unionTypesSchema: SchemaDefinition = defineSchema({\n Circle: CircleRecord,\n Rectangle: RectangleRecord,\n Shape: defineUnion(\"Shape\", {\n docs: \"A shape\",\n variants: {\n circle: CircleRecord,\n rectangle: RectangleRecord,\n },\n }),\n});\n\n/** Schema with nested optionals: tests that optional inside array structures is preserved */\nexport const nestedOptionalsSchema: SchemaDefinition = defineSchema({\n Config: defineRecord(\"Config\", {\n docs: \"A config with nested optional fields\",\n fields: {\n tags: P.Array(P.Optional(P.String)),\n scores: P.Array(P.Optional(P.Double)),\n label: P.Optional(P.String),\n },\n }),\n});\n\n/** Two-version schema with derived fields (color split into fillColor + strokeColor) */\nexport const twoVersionDerivedFieldsSchema: SchemaDefinition = {\n type: \"versioned\",\n models: {\n ShapeBox: defineRecord(\"ShapeBox\", {\n docs: \"A box shape\",\n fields: {\n left: P.Double,\n right: P.Double,\n top: P.Double,\n bottom: P.Double,\n fillColor: P.Optional(P.String),\n strokeColor: P.Optional(P.String),\n opacity: P.Optional(P.Double),\n },\n }),\n },\n version: 2,\n previous: singleVersionSchema,\n migrations: {\n ShapeBox: {\n fillColor: {\n derivedFrom: [\"color\"],\n },\n strokeColor: {\n derivedFrom: [\"color\"],\n },\n },\n },\n};\n\n/** Schema with aliased export key: export key \"FooAlias\" differs from model name \"Foo\" */\nexport const aliasedEntryNameSchema: SchemaDefinition = defineSchema({\n FooAlias: defineRecord(\"Foo\", {\n docs: \"A record exported under an alias\",\n fields: {\n name: P.String,\n },\n }),\n});\n\n/** Schema with nested union: Entity union has a variant that points to another union (LivingBeing) */\nconst AnimalRecord = defineRecord(\"Animal\", {\n docs: \"An animal\",\n fields: { species: P.String },\n});\n\nconst PlantRecord = defineRecord(\"Plant\", {\n docs: \"A plant\",\n fields: { genus: P.String },\n});\n\nconst LivingBeingUnion = defineUnion(\"LivingBeing\", {\n docs: \"A living being\",\n variants: {\n animal: AnimalRecord,\n plant: PlantRecord,\n },\n});\n\nexport const nestedUnionSchema: SchemaDefinition = defineSchema({\n Animal: AnimalRecord,\n Plant: PlantRecord,\n LivingBeing: LivingBeingUnion,\n Entity: defineUnion(\"Entity\", {\n docs: \"An entity\",\n variants: {\n livingBeing: LivingBeingUnion,\n },\n }),\n});\n\n/**\n * Two-version schema where a field starts as Optional(String) in v1 and becomes\n * required (String) in v2. The internal schema must remain optional because\n * documents written under v1 may legitimately omit the field.\n */\nexport const optionalToRequiredFieldSchema: SchemaDefinition = (() => {\n const v1 = defineSchema({\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.Optional(P.String),\n },\n }),\n });\n return {\n type: \"versioned\" as const,\n models: {\n Item: defineRecord(\"Item\", {\n docs: \"An item\",\n fields: {\n name: P.String,\n label: P.String,\n },\n }),\n },\n version: 2,\n previous: v1,\n };\n})();\n\n/** Three-version chain: Item (name, color -> name, hexColor -> name, hexColor, tags) */\nexport const threeVersionChainSchema: SchemaDefinition = (() => {\n const v1Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n color: P.Optional(P.String),\n },\n }),\n };\n const v2Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n },\n }),\n };\n const v3Models = {\n Item: defineRecord(\"Item\", {\n docs: \"\",\n fields: {\n name: P.String,\n hexColor: P.Optional(P.String),\n tags: P.Optional(P.String),\n },\n }),\n };\n return {\n type: \"versioned\",\n models: v3Models,\n version: 3,\n previous: {\n type: \"versioned\",\n models: v2Models,\n version: 2,\n previous: { type: \"initial\", version: 1, models: v1Models },\n },\n };\n})();\n"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,8 @@ function convertFieldType(field) {
19
19
  switch (field.type) {
20
20
  case "array":
21
21
  return `array<${convertFieldType(field.items)}>`;
22
+ case "resourceRef":
23
+ return "resourceRef";
22
24
  case "boolean":
23
25
  return "boolean";
24
26
  case "docRef":
@@ -1 +1 @@
1
- {"version":3,"file":"convertSchemaToSteps.js","names":["yaml","convertFieldType","field","type","items","item","name","Error","convertRecordToYaml","recordDef","result","fields","docs","fieldName","fieldDef","Object","entries","fieldType","convertUnionToYaml","unionDef","variants","variantName","variantRef","discriminant","convertSchemaToSteps","schema","exportKey","def","steps","records","unions","values","keys","length","push","convertStepsToYamlString","dump","flowLevel","lineWidth","noRefs","quotingType","forceQuotes","skipInvalid"],"sources":["convertSchemaToSteps.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport yaml from \"js-yaml\";\nimport type { MigrationStep, UnionDefinition } from \"../steps/parseMigrationSteps.js\";\nimport type { P } from \"./validateSchemaModule.js\";\n\nfunction convertFieldType(field: P.Type): string {\n switch (field.type) {\n case \"array\":\n return `array<${convertFieldType(field.items as P.Type)}>`;\n case \"boolean\":\n return \"boolean\";\n case \"docRef\":\n return \"docRef\";\n case \"double\":\n return \"double\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"objectRef\":\n return \"objectRef\";\n case \"optional\":\n return `optional<${convertFieldType(field.item as P.Type)}>`;\n case \"ref\":\n return field.name;\n case \"string\":\n return \"string\";\n case \"unknown\":\n return \"unknown\";\n case \"userRef\":\n return \"userRef\";\n default:\n field satisfies never;\n throw new Error(`Unsupported field type: ${(field as P.Type).type}`);\n }\n}\n\nfunction convertRecordToYaml(\n recordDef: P.RecordDef,\n): { docs?: string; fields: Record<string, string> } {\n const result: { docs?: string; fields: Record<string, string> } = {\n fields: {},\n };\n\n if (recordDef.docs) {\n result.docs = recordDef.docs;\n }\n\n for (const [fieldName, fieldDef] of Object.entries(recordDef.fields)) {\n const fieldType = convertFieldType(fieldDef);\n result.fields[fieldName] = fieldType;\n }\n\n return result;\n}\n\nfunction convertUnionToYaml(unionDef: P.UnionDef): UnionDefinition {\n const variants: Record<string, string> = {};\n\n for (const [variantName, variantRef] of Object.entries(unionDef.variants)) {\n variants[variantName] = variantRef.name;\n }\n\n const result: UnionDefinition = {\n variants,\n };\n\n if (unionDef.discriminant !== \"type\") {\n result.discriminant = unionDef.discriminant;\n }\n\n return result;\n}\n\nexport function convertSchemaToSteps(schema: P.ReturnedSchema): MigrationStep[] {\n // Reject aliased schemas: the YAML step format cannot represent exportKey !== declaredName\n for (const [exportKey, def] of Object.entries(schema)) {\n if (exportKey !== def.name) {\n throw new Error(\n `Schema entry \"${exportKey}\" has declared model name \"${def.name}\". `\n + `The migration-step YAML format cannot represent aliases (exportKey !== declaredName). `\n + `Use the same name for both, or use the IR pipeline instead.`,\n );\n }\n }\n\n const steps: MigrationStep[] = [];\n const records: Record<string, { docs?: string; fields: Record<string, string> }> = {};\n const unions: Record<string, UnionDefinition> = {};\n\n for (const def of Object.values(schema)) {\n switch (def.type) {\n case \"record\": {\n records[def.name] = convertRecordToYaml(def);\n break;\n }\n case \"union\": {\n unions[def.name] = convertUnionToYaml(def);\n break;\n }\n }\n }\n\n if (Object.keys(records).length > 0) {\n steps.push({ \"add-records\": records });\n }\n\n if (Object.keys(unions).length > 0) {\n steps.push({ \"add-union\": unions });\n }\n\n return steps;\n}\n\nexport function convertStepsToYamlString(steps: MigrationStep[]): string {\n return yaml.dump(steps, {\n flowLevel: -1,\n lineWidth: -1,\n noRefs: true,\n quotingType: \"'\",\n forceQuotes: false,\n skipInvalid: false,\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"convertSchemaToSteps.js","names":["yaml","convertFieldType","field","type","items","item","name","Error","convertRecordToYaml","recordDef","result","fields","docs","fieldName","fieldDef","Object","entries","fieldType","convertUnionToYaml","unionDef","variants","variantName","variantRef","discriminant","convertSchemaToSteps","schema","exportKey","def","steps","records","unions","values","keys","length","push","convertStepsToYamlString","dump","flowLevel","lineWidth","noRefs","quotingType","forceQuotes","skipInvalid"],"sources":["convertSchemaToSteps.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport yaml from \"js-yaml\";\nimport type { MigrationStep, UnionDefinition } from \"../steps/parseMigrationSteps.js\";\nimport type { P } from \"./validateSchemaModule.js\";\n\nfunction convertFieldType(field: P.Type): string {\n switch (field.type) {\n case \"array\":\n return `array<${convertFieldType(field.items as P.Type)}>`;\n case \"resourceRef\":\n return \"resourceRef\";\n case \"boolean\":\n return \"boolean\";\n case \"docRef\":\n return \"docRef\";\n case \"double\":\n return \"double\";\n case \"mediaRef\":\n return \"mediaRef\";\n case \"objectRef\":\n return \"objectRef\";\n case \"optional\":\n return `optional<${convertFieldType(field.item as P.Type)}>`;\n case \"ref\":\n return field.name;\n case \"string\":\n return \"string\";\n case \"unknown\":\n return \"unknown\";\n case \"userRef\":\n return \"userRef\";\n default:\n field satisfies never;\n throw new Error(`Unsupported field type: ${(field as P.Type).type}`);\n }\n}\n\nfunction convertRecordToYaml(\n recordDef: P.RecordDef,\n): { docs?: string; fields: Record<string, string> } {\n const result: { docs?: string; fields: Record<string, string> } = {\n fields: {},\n };\n\n if (recordDef.docs) {\n result.docs = recordDef.docs;\n }\n\n for (const [fieldName, fieldDef] of Object.entries(recordDef.fields)) {\n const fieldType = convertFieldType(fieldDef);\n result.fields[fieldName] = fieldType;\n }\n\n return result;\n}\n\nfunction convertUnionToYaml(unionDef: P.UnionDef): UnionDefinition {\n const variants: Record<string, string> = {};\n\n for (const [variantName, variantRef] of Object.entries(unionDef.variants)) {\n variants[variantName] = variantRef.name;\n }\n\n const result: UnionDefinition = {\n variants,\n };\n\n if (unionDef.discriminant !== \"type\") {\n result.discriminant = unionDef.discriminant;\n }\n\n return result;\n}\n\nexport function convertSchemaToSteps(schema: P.ReturnedSchema): MigrationStep[] {\n // Reject aliased schemas: the YAML step format cannot represent exportKey !== declaredName\n for (const [exportKey, def] of Object.entries(schema)) {\n if (exportKey !== def.name) {\n throw new Error(\n `Schema entry \"${exportKey}\" has declared model name \"${def.name}\". `\n + `The migration-step YAML format cannot represent aliases (exportKey !== declaredName). `\n + `Use the same name for both, or use the IR pipeline instead.`,\n );\n }\n }\n\n const steps: MigrationStep[] = [];\n const records: Record<string, { docs?: string; fields: Record<string, string> }> = {};\n const unions: Record<string, UnionDefinition> = {};\n\n for (const def of Object.values(schema)) {\n switch (def.type) {\n case \"record\": {\n records[def.name] = convertRecordToYaml(def);\n break;\n }\n case \"union\": {\n unions[def.name] = convertUnionToYaml(def);\n break;\n }\n }\n }\n\n if (Object.keys(records).length > 0) {\n steps.push({ \"add-records\": records });\n }\n\n if (Object.keys(unions).length > 0) {\n steps.push({ \"add-union\": unions });\n }\n\n return steps;\n}\n\nexport function convertStepsToYamlString(steps: MigrationStep[]): string {\n return yaml.dump(steps, {\n flowLevel: -1,\n lineWidth: -1,\n noRefs: true,\n quotingType: \"'\",\n forceQuotes: false,\n skipInvalid: false,\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -53,14 +53,17 @@ function detectUsedRefTypes(schema) {
53
53
  scanField(field.items);
54
54
  }
55
55
  break;
56
+ case TypeKind.RESOURCE_REF:
57
+ refTypes.add("ResourceRid");
58
+ break;
56
59
  case TypeKind.DOC_REF:
57
- refTypes.add("DocumentRef");
60
+ refTypes.add("DocumentId");
58
61
  break;
59
62
  case TypeKind.MEDIA_REF:
60
- refTypes.add("MediaRef");
63
+ refTypes.add("MediaId");
61
64
  break;
62
65
  case TypeKind.OBJECT_REF:
63
- refTypes.add("ObjectRef");
66
+ refTypes.add("ObjectId");
64
67
  break;
65
68
  case TypeKind.OPTIONAL:
66
69
  if (isOptionalField(field)) {
@@ -68,7 +71,7 @@ function detectUsedRefTypes(schema) {
68
71
  }
69
72
  break;
70
73
  case TypeKind.USER_REF:
71
- refTypes.add("UserRef");
74
+ refTypes.add("UserId");
72
75
  break;
73
76
  }
74
77
  }
@@ -196,14 +199,16 @@ function convertTypeToTypeScript(fieldType, schema) {
196
199
  throw new Error("Array field is missing items type");
197
200
  }
198
201
  return `readonly ${convertTypeToTypeScript(fieldType.items, schema)}[]`;
202
+ case TypeKind.RESOURCE_REF:
203
+ return "ResourceRid";
199
204
  case TypeKind.DOC_REF:
200
- return "DocumentRef";
205
+ return "DocumentId";
201
206
  case TypeKind.DOUBLE:
202
207
  return "number";
203
208
  case TypeKind.MEDIA_REF:
204
- return "MediaRef";
209
+ return "MediaId";
205
210
  case TypeKind.OBJECT_REF:
206
- return "ObjectRef";
211
+ return "ObjectId";
207
212
  case TypeKind.OPTIONAL:
208
213
  if (!isOptionalField(fieldType)) {
209
214
  throw new Error("Optional field is missing inner type");
@@ -221,7 +226,7 @@ function convertTypeToTypeScript(fieldType, schema) {
221
226
  case TypeKind.STRING:
222
227
  return "string";
223
228
  case TypeKind.USER_REF:
224
- return "UserRef";
229
+ return "UserId";
225
230
  default:
226
231
  {
227
232
  throw new Error(`Unknown schema field type: ${fieldType.type}`);
@@ -1 +1 @@
1
- {"version":3,"file":"generateTypesFromSchema.js","names":["TypeKind","SchemaTypeKind","formatVariantName","GENERATED_FILE_HEADER","ANY","SchemaDefKind","RECORD","UNION","isRecordSchema","item","type","isUnionSchema","isRefField","field","REF","isArrayField","ARRAY","isOptionalField","OPTIONAL","detectUsedRefTypes","schema","refTypes","Set","scanField","items","DOC_REF","add","MEDIA_REF","OBJECT_REF","USER_REF","Object","values","fields","variant","variants","generateTypesFromSchema","runtimeSchema","usedRefTypes","output","size","refTypesList","Array","from","sort","join","exportName","entries","generateRecordInterface","unionEntries","filter","_","forEach","i","unionOutput","generateUnionType","length","record","docs","fieldName","fieldType","tsType","convertTypeToTypeScript","optional","union","variantInterfaces","discriminantField","discriminant","variantName","variantType","interfaceName","push","name","discriminatorValue","refType","recordName","findRecordExportName","map","v","Error","DOUBLE","STRING"],"sources":["generateTypesFromSchema.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 { ReturnedSchema, Schema } from \"@palantir/pack.schema\";\nimport { TypeKind as SchemaTypeKind } from \"@palantir/pack.schema\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nconst TypeKind: typeof SchemaTypeKind & { readonly ANY: \"any\" } = {\n ...SchemaTypeKind,\n ANY: \"any\",\n};\n\nconst SchemaDefKind = {\n RECORD: \"record\",\n UNION: \"union\",\n} as const;\n\n// Base type definition for schema fields\ninterface BaseSchemaField {\n readonly type: string;\n}\n\ninterface AnyField extends BaseSchemaField {\n readonly type: typeof TypeKind.ANY;\n}\n\ninterface ArrayField extends BaseSchemaField {\n readonly type: typeof TypeKind.ARRAY;\n readonly items: SchemaField;\n}\n\ninterface DocRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.DOC_REF;\n}\n\ninterface DoubleField extends BaseSchemaField {\n readonly type: typeof TypeKind.DOUBLE;\n}\n\ninterface MediaRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.MEDIA_REF;\n}\n\ninterface ObjectRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.OBJECT_REF;\n}\n\ninterface OptionalField extends BaseSchemaField {\n readonly type: typeof TypeKind.OPTIONAL;\n readonly item: SchemaField;\n}\n\ninterface RefField extends BaseSchemaField {\n readonly type: typeof TypeKind.REF;\n readonly refType: \"record\" | \"union\";\n readonly name: string;\n}\n\ninterface StringField extends BaseSchemaField {\n readonly type: typeof TypeKind.STRING;\n}\n\ninterface UserRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.USER_REF;\n}\n\ntype SchemaField =\n | AnyField\n | ArrayField\n | DocRefField\n | DoubleField\n | MediaRefField\n | ObjectRefField\n | OptionalField\n | RefField\n | StringField\n | UserRefField;\n\ninterface RuntimeSchemaRecord {\n readonly type: typeof SchemaDefKind.RECORD;\n readonly name: string;\n readonly docs?: string;\n readonly fields: Readonly<Record<string, SchemaField>>;\n readonly ref?: RefField & {\n readonly refType: \"record\";\n };\n}\n\ninterface RuntimeSchemaUnion {\n readonly type: typeof SchemaDefKind.UNION;\n readonly name?: string;\n readonly variants: Readonly<Record<string, SchemaField>>;\n readonly discriminant: string;\n readonly ref?: RefField & {\n readonly refType: \"union\";\n };\n}\n\ntype RuntimeSchemaItem = RuntimeSchemaRecord | RuntimeSchemaUnion;\ntype RuntimeSchema = Record<string, RuntimeSchemaItem>;\n\n// Type guards\nfunction isRecordSchema(item: RuntimeSchemaItem): item is RuntimeSchemaRecord {\n return item.type === SchemaDefKind.RECORD && \"name\" in item && \"fields\" in item;\n}\n\nfunction isUnionSchema(item: RuntimeSchemaItem): item is RuntimeSchemaUnion {\n return item.type === SchemaDefKind.UNION && \"variants\" in item && \"discriminant\" in item;\n}\n\nfunction isRefField(field: SchemaField): field is RefField {\n return field.type === TypeKind.REF && \"refType\" in field && \"name\" in field;\n}\n\nfunction isArrayField(field: SchemaField): field is ArrayField {\n return field.type === TypeKind.ARRAY && \"items\" in field;\n}\n\nfunction isOptionalField(field: SchemaField): field is OptionalField {\n return field.type === TypeKind.OPTIONAL && \"item\" in field;\n}\n\nfunction detectUsedRefTypes(schema: RuntimeSchema): Set<string> {\n const refTypes = new Set<string>();\n\n function scanField(field: SchemaField): void {\n switch (field.type) {\n case TypeKind.ARRAY:\n if (isArrayField(field)) {\n scanField(field.items);\n }\n break;\n case TypeKind.DOC_REF:\n refTypes.add(\"DocumentRef\");\n break;\n case TypeKind.MEDIA_REF:\n refTypes.add(\"MediaRef\");\n break;\n case TypeKind.OBJECT_REF:\n refTypes.add(\"ObjectRef\");\n break;\n case TypeKind.OPTIONAL:\n if (isOptionalField(field)) {\n scanField(field.item);\n }\n break;\n case TypeKind.USER_REF:\n refTypes.add(\"UserRef\");\n break;\n }\n }\n\n for (const item of Object.values(schema)) {\n if (isRecordSchema(item)) {\n for (const field of Object.values(item.fields)) {\n scanField(field);\n }\n } else if (isUnionSchema(item)) {\n for (const variant of Object.values(item.variants)) {\n scanField(variant);\n }\n }\n }\n\n return refTypes;\n}\n\nexport function generateTypesFromSchema<T extends ReturnedSchema>(\n schema: Schema<T>,\n): string {\n const runtimeSchema = schema as unknown as RuntimeSchema;\n\n // Detect which ref types are used in the schema\n const usedRefTypes = detectUsedRefTypes(runtimeSchema);\n\n let output = GENERATED_FILE_HEADER;\n\n // Add conditional imports based on which ref types are used\n if (usedRefTypes.size > 0) {\n const refTypesList = Array.from(usedRefTypes).sort().join(\", \");\n output +=\n `import type { ${refTypesList} } from \"@palantir/pack.document-schema.model-types\";\\n`;\n }\n\n output += \"\\n\";\n\n // First pass: generate record interfaces\n for (const [exportName, item] of Object.entries(runtimeSchema)) {\n if (item.type === SchemaDefKind.RECORD && isRecordSchema(item)) {\n output += generateRecordInterface(item, exportName, runtimeSchema);\n output += \"\\n\";\n }\n }\n\n // Second pass: generate union types\n const unionEntries = Object.entries(runtimeSchema).filter(\n ([_, item]) => item.type === SchemaDefKind.UNION && isUnionSchema(item),\n );\n\n unionEntries.forEach(([exportName, item], i) => {\n if (isUnionSchema(item)) {\n const unionOutput = generateUnionType(item, exportName, runtimeSchema);\n if (unionOutput) {\n output += unionOutput;\n // Only add newline if not the last union\n if (i < unionEntries.length - 1) {\n output += \"\\n\";\n }\n }\n }\n });\n\n return output;\n}\n\nfunction generateRecordInterface(\n record: RuntimeSchemaRecord,\n exportName: string,\n schema: RuntimeSchema,\n): string {\n let output = \"\";\n\n if (record.docs) {\n output += `/**\\n * ${record.docs}\\n */\\n`;\n }\n\n output += `export interface ${exportName} {\\n`;\n\n for (const [fieldName, fieldType] of Object.entries(record.fields)) {\n const tsType = convertTypeToTypeScript(fieldType, schema);\n const optional = fieldType.type === TypeKind.OPTIONAL ? \"?\" : \"\";\n output += ` readonly ${fieldName}${optional}: ${tsType};\\n`;\n }\n\n output += \"}\\n\";\n\n return output;\n}\n\nfunction generateUnionType(\n union: RuntimeSchemaUnion,\n exportName: string,\n schema: RuntimeSchema,\n): string {\n let output = \"\";\n const variantInterfaces: Array<{ name: string; discriminatorValue: string }> = [];\n const discriminantField = union.discriminant;\n\n // First pass: generate variant interfaces\n for (const [variantName, variantType] of Object.entries(union.variants)) {\n const interfaceName = `${exportName}${formatVariantName(variantName)}`;\n variantInterfaces.push({ name: interfaceName, discriminatorValue: variantName });\n\n if (variantType.type === TypeKind.REF && variantType.refType === \"record\") {\n // Find the corresponding record name in the schema\n const recordName = findRecordExportName(variantType.name, schema);\n if (recordName) {\n output += `export interface ${interfaceName} extends ${recordName} {\\n`;\n output += ` readonly ${discriminantField}: \"${variantName}\";\\n`;\n output += \"}\\n\\n\";\n }\n } else {\n // Handle value types\n const tsType = convertTypeToTypeScript(variantType, schema);\n output += `export interface ${interfaceName} {\\n`;\n output += ` readonly ${discriminantField}: \"${variantName}\";\\n`;\n output += ` readonly value: ${tsType};\\n`;\n output += \"}\\n\\n\";\n }\n }\n\n // Second pass: generate the union type\n output += `export type ${exportName} = ${variantInterfaces.map(v => v.name).join(\" | \")};\\n\\n`;\n\n // Third pass: generate type guards\n for (let i = 0; i < variantInterfaces.length; i++) {\n const variant = variantInterfaces[i]!;\n output +=\n `export function is${variant.name}(value: ${exportName}): value is ${variant.name} {\\n`;\n output += ` return value.${discriminantField} === \"${variant.discriminatorValue}\";\\n`;\n output += \"}\\n\\n\";\n }\n\n return output;\n}\n\nfunction findRecordExportName(\n recordName: string,\n schema: RuntimeSchema,\n): string | null {\n for (const [exportName, item] of Object.entries(schema)) {\n if (isRecordSchema(item) && item.name === recordName) {\n return exportName;\n }\n }\n return null;\n}\n\nfunction convertTypeToTypeScript(\n fieldType: SchemaField,\n schema?: RuntimeSchema,\n): string {\n switch (fieldType.type) {\n case TypeKind.ANY:\n return \"any\";\n case TypeKind.ARRAY:\n if (!isArrayField(fieldType)) {\n throw new Error(\"Array field is missing items type\");\n }\n return `readonly ${convertTypeToTypeScript(fieldType.items, schema)}[]`;\n case TypeKind.DOC_REF:\n return \"DocumentRef\";\n case TypeKind.DOUBLE:\n return \"number\";\n case TypeKind.MEDIA_REF:\n return \"MediaRef\";\n case TypeKind.OBJECT_REF:\n return \"ObjectRef\";\n case TypeKind.OPTIONAL:\n if (!isOptionalField(fieldType)) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return convertTypeToTypeScript(fieldType.item, schema);\n case TypeKind.REF:\n if (!isRefField(fieldType)) {\n throw new Error(\"Ref field is missing name or refType\");\n }\n if (fieldType.refType === \"record\") {\n const exportName = schema ? findRecordExportName(fieldType.name, schema) : null;\n return exportName ?? fieldType.name;\n }\n return fieldType.name;\n case TypeKind.STRING:\n return \"string\";\n case TypeKind.USER_REF:\n return \"UserRef\";\n default: {\n const _exhaustive: never = fieldType;\n throw new Error(`Unknown schema field type: ${(_exhaustive as SchemaField).type}`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateTypesFromSchema.js","names":["TypeKind","SchemaTypeKind","formatVariantName","GENERATED_FILE_HEADER","ANY","SchemaDefKind","RECORD","UNION","isRecordSchema","item","type","isUnionSchema","isRefField","field","REF","isArrayField","ARRAY","isOptionalField","OPTIONAL","detectUsedRefTypes","schema","refTypes","Set","scanField","items","RESOURCE_REF","add","DOC_REF","MEDIA_REF","OBJECT_REF","USER_REF","Object","values","fields","variant","variants","generateTypesFromSchema","runtimeSchema","usedRefTypes","output","size","refTypesList","Array","from","sort","join","exportName","entries","generateRecordInterface","unionEntries","filter","_","forEach","i","unionOutput","generateUnionType","length","record","docs","fieldName","fieldType","tsType","convertTypeToTypeScript","optional","union","variantInterfaces","discriminantField","discriminant","variantName","variantType","interfaceName","push","name","discriminatorValue","refType","recordName","findRecordExportName","map","v","Error","DOUBLE","STRING"],"sources":["generateTypesFromSchema.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 { ReturnedSchema, Schema } from \"@palantir/pack.schema\";\nimport { TypeKind as SchemaTypeKind } from \"@palantir/pack.schema\";\nimport { formatVariantName } from \"../formatVariantName.js\";\nimport { GENERATED_FILE_HEADER } from \"../generatedFileHeader.js\";\n\nconst TypeKind: typeof SchemaTypeKind & { readonly ANY: \"any\" } = {\n ...SchemaTypeKind,\n ANY: \"any\",\n};\n\nconst SchemaDefKind = {\n RECORD: \"record\",\n UNION: \"union\",\n} as const;\n\n// Base type definition for schema fields\ninterface BaseSchemaField {\n readonly type: string;\n}\n\ninterface AnyField extends BaseSchemaField {\n readonly type: typeof TypeKind.ANY;\n}\n\ninterface ArrayField extends BaseSchemaField {\n readonly type: typeof TypeKind.ARRAY;\n readonly items: SchemaField;\n}\n\ninterface ResourceRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.RESOURCE_REF;\n}\n\ninterface DocRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.DOC_REF;\n}\n\ninterface DoubleField extends BaseSchemaField {\n readonly type: typeof TypeKind.DOUBLE;\n}\n\ninterface MediaRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.MEDIA_REF;\n}\n\ninterface ObjectRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.OBJECT_REF;\n}\n\ninterface OptionalField extends BaseSchemaField {\n readonly type: typeof TypeKind.OPTIONAL;\n readonly item: SchemaField;\n}\n\ninterface RefField extends BaseSchemaField {\n readonly type: typeof TypeKind.REF;\n readonly refType: \"record\" | \"union\";\n readonly name: string;\n}\n\ninterface StringField extends BaseSchemaField {\n readonly type: typeof TypeKind.STRING;\n}\n\ninterface UserRefField extends BaseSchemaField {\n readonly type: typeof TypeKind.USER_REF;\n}\n\ntype SchemaField =\n | AnyField\n | ArrayField\n | ResourceRefField\n | DocRefField\n | DoubleField\n | MediaRefField\n | ObjectRefField\n | OptionalField\n | RefField\n | StringField\n | UserRefField;\n\ninterface RuntimeSchemaRecord {\n readonly type: typeof SchemaDefKind.RECORD;\n readonly name: string;\n readonly docs?: string;\n readonly fields: Readonly<Record<string, SchemaField>>;\n readonly ref?: RefField & {\n readonly refType: \"record\";\n };\n}\n\ninterface RuntimeSchemaUnion {\n readonly type: typeof SchemaDefKind.UNION;\n readonly name?: string;\n readonly variants: Readonly<Record<string, SchemaField>>;\n readonly discriminant: string;\n readonly ref?: RefField & {\n readonly refType: \"union\";\n };\n}\n\ntype RuntimeSchemaItem = RuntimeSchemaRecord | RuntimeSchemaUnion;\ntype RuntimeSchema = Record<string, RuntimeSchemaItem>;\n\n// Type guards\nfunction isRecordSchema(item: RuntimeSchemaItem): item is RuntimeSchemaRecord {\n return item.type === SchemaDefKind.RECORD && \"name\" in item && \"fields\" in item;\n}\n\nfunction isUnionSchema(item: RuntimeSchemaItem): item is RuntimeSchemaUnion {\n return item.type === SchemaDefKind.UNION && \"variants\" in item && \"discriminant\" in item;\n}\n\nfunction isRefField(field: SchemaField): field is RefField {\n return field.type === TypeKind.REF && \"refType\" in field && \"name\" in field;\n}\n\nfunction isArrayField(field: SchemaField): field is ArrayField {\n return field.type === TypeKind.ARRAY && \"items\" in field;\n}\n\nfunction isOptionalField(field: SchemaField): field is OptionalField {\n return field.type === TypeKind.OPTIONAL && \"item\" in field;\n}\n\nfunction detectUsedRefTypes(schema: RuntimeSchema): Set<string> {\n const refTypes = new Set<string>();\n\n function scanField(field: SchemaField): void {\n switch (field.type) {\n case TypeKind.ARRAY:\n if (isArrayField(field)) {\n scanField(field.items);\n }\n break;\n case TypeKind.RESOURCE_REF:\n refTypes.add(\"ResourceRid\");\n break;\n case TypeKind.DOC_REF:\n refTypes.add(\"DocumentId\");\n break;\n case TypeKind.MEDIA_REF:\n refTypes.add(\"MediaId\");\n break;\n case TypeKind.OBJECT_REF:\n refTypes.add(\"ObjectId\");\n break;\n case TypeKind.OPTIONAL:\n if (isOptionalField(field)) {\n scanField(field.item);\n }\n break;\n case TypeKind.USER_REF:\n refTypes.add(\"UserId\");\n break;\n }\n }\n\n for (const item of Object.values(schema)) {\n if (isRecordSchema(item)) {\n for (const field of Object.values(item.fields)) {\n scanField(field);\n }\n } else if (isUnionSchema(item)) {\n for (const variant of Object.values(item.variants)) {\n scanField(variant);\n }\n }\n }\n\n return refTypes;\n}\n\nexport function generateTypesFromSchema<T extends ReturnedSchema>(\n schema: Schema<T>,\n): string {\n const runtimeSchema = schema as unknown as RuntimeSchema;\n\n // Detect which ref types are used in the schema\n const usedRefTypes = detectUsedRefTypes(runtimeSchema);\n\n let output = GENERATED_FILE_HEADER;\n\n // Add conditional imports based on which ref types are used\n if (usedRefTypes.size > 0) {\n const refTypesList = Array.from(usedRefTypes).sort().join(\", \");\n output +=\n `import type { ${refTypesList} } from \"@palantir/pack.document-schema.model-types\";\\n`;\n }\n\n output += \"\\n\";\n\n // First pass: generate record interfaces\n for (const [exportName, item] of Object.entries(runtimeSchema)) {\n if (item.type === SchemaDefKind.RECORD && isRecordSchema(item)) {\n output += generateRecordInterface(item, exportName, runtimeSchema);\n output += \"\\n\";\n }\n }\n\n // Second pass: generate union types\n const unionEntries = Object.entries(runtimeSchema).filter(\n ([_, item]) => item.type === SchemaDefKind.UNION && isUnionSchema(item),\n );\n\n unionEntries.forEach(([exportName, item], i) => {\n if (isUnionSchema(item)) {\n const unionOutput = generateUnionType(item, exportName, runtimeSchema);\n if (unionOutput) {\n output += unionOutput;\n // Only add newline if not the last union\n if (i < unionEntries.length - 1) {\n output += \"\\n\";\n }\n }\n }\n });\n\n return output;\n}\n\nfunction generateRecordInterface(\n record: RuntimeSchemaRecord,\n exportName: string,\n schema: RuntimeSchema,\n): string {\n let output = \"\";\n\n if (record.docs) {\n output += `/**\\n * ${record.docs}\\n */\\n`;\n }\n\n output += `export interface ${exportName} {\\n`;\n\n for (const [fieldName, fieldType] of Object.entries(record.fields)) {\n const tsType = convertTypeToTypeScript(fieldType, schema);\n const optional = fieldType.type === TypeKind.OPTIONAL ? \"?\" : \"\";\n output += ` readonly ${fieldName}${optional}: ${tsType};\\n`;\n }\n\n output += \"}\\n\";\n\n return output;\n}\n\nfunction generateUnionType(\n union: RuntimeSchemaUnion,\n exportName: string,\n schema: RuntimeSchema,\n): string {\n let output = \"\";\n const variantInterfaces: Array<{ name: string; discriminatorValue: string }> = [];\n const discriminantField = union.discriminant;\n\n // First pass: generate variant interfaces\n for (const [variantName, variantType] of Object.entries(union.variants)) {\n const interfaceName = `${exportName}${formatVariantName(variantName)}`;\n variantInterfaces.push({ name: interfaceName, discriminatorValue: variantName });\n\n if (variantType.type === TypeKind.REF && variantType.refType === \"record\") {\n // Find the corresponding record name in the schema\n const recordName = findRecordExportName(variantType.name, schema);\n if (recordName) {\n output += `export interface ${interfaceName} extends ${recordName} {\\n`;\n output += ` readonly ${discriminantField}: \"${variantName}\";\\n`;\n output += \"}\\n\\n\";\n }\n } else {\n // Handle value types\n const tsType = convertTypeToTypeScript(variantType, schema);\n output += `export interface ${interfaceName} {\\n`;\n output += ` readonly ${discriminantField}: \"${variantName}\";\\n`;\n output += ` readonly value: ${tsType};\\n`;\n output += \"}\\n\\n\";\n }\n }\n\n // Second pass: generate the union type\n output += `export type ${exportName} = ${variantInterfaces.map(v => v.name).join(\" | \")};\\n\\n`;\n\n // Third pass: generate type guards\n for (let i = 0; i < variantInterfaces.length; i++) {\n const variant = variantInterfaces[i]!;\n output +=\n `export function is${variant.name}(value: ${exportName}): value is ${variant.name} {\\n`;\n output += ` return value.${discriminantField} === \"${variant.discriminatorValue}\";\\n`;\n output += \"}\\n\\n\";\n }\n\n return output;\n}\n\nfunction findRecordExportName(\n recordName: string,\n schema: RuntimeSchema,\n): string | null {\n for (const [exportName, item] of Object.entries(schema)) {\n if (isRecordSchema(item) && item.name === recordName) {\n return exportName;\n }\n }\n return null;\n}\n\nfunction convertTypeToTypeScript(\n fieldType: SchemaField,\n schema?: RuntimeSchema,\n): string {\n switch (fieldType.type) {\n case TypeKind.ANY:\n return \"any\";\n case TypeKind.ARRAY:\n if (!isArrayField(fieldType)) {\n throw new Error(\"Array field is missing items type\");\n }\n return `readonly ${convertTypeToTypeScript(fieldType.items, schema)}[]`;\n case TypeKind.RESOURCE_REF:\n return \"ResourceRid\";\n case TypeKind.DOC_REF:\n return \"DocumentId\";\n case TypeKind.DOUBLE:\n return \"number\";\n case TypeKind.MEDIA_REF:\n return \"MediaId\";\n case TypeKind.OBJECT_REF:\n return \"ObjectId\";\n case TypeKind.OPTIONAL:\n if (!isOptionalField(fieldType)) {\n throw new Error(\"Optional field is missing inner type\");\n }\n return convertTypeToTypeScript(fieldType.item, schema);\n case TypeKind.REF:\n if (!isRefField(fieldType)) {\n throw new Error(\"Ref field is missing name or refType\");\n }\n if (fieldType.refType === \"record\") {\n const exportName = schema ? findRecordExportName(fieldType.name, schema) : null;\n return exportName ?? fieldType.name;\n }\n return fieldType.name;\n case TypeKind.STRING:\n return \"string\";\n case TypeKind.USER_REF:\n return \"UserId\";\n default: {\n const _exhaustive: never = fieldType;\n throw new Error(`Unknown schema field type: ${(_exhaustive as SchemaField).type}`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"arrayFields.js","names":[],"sources":["arrayFields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\n\nexport interface Container {\n readonly items: readonly string[];\n readonly numbers: readonly number[];\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"arrayFields.js","names":[],"sources":["arrayFields.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\n\nexport interface Container {\n readonly items: readonly string[];\n readonly numbers: readonly number[];\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */
2
2
 
3
3
  /**
4
4
  * A cat
@@ -1 +1 @@
1
- {"version":3,"file":"customDiscriminant.js","names":["isAnimalCat","value","kind","isAnimalDog"],"sources":["customDiscriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\n\n/**\n * A cat\n */\nexport interface Cat {\n readonly meow: string;\n readonly whiskers: number;\n}\n\n/**\n * A dog\n */\nexport interface Dog {\n readonly bark: string;\n readonly tailWags: number;\n}\n\nexport interface AnimalCat extends Cat {\n readonly kind: \"cat\";\n}\n\nexport interface AnimalDog extends Dog {\n readonly kind: \"dog\";\n}\n\nexport type Animal = AnimalCat | AnimalDog;\n\nexport function isAnimalCat(value: Animal): value is AnimalCat {\n return value.kind === \"cat\";\n}\n\nexport function isAnimalDog(value: Animal): value is AnimalDog {\n return value.kind === \"dog\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAgBA,OAAO,SAASA,WAAWA,CAACC,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B;AAEA,OAAO,SAASC,WAAWA,CAACF,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B","ignoreList":[]}
1
+ {"version":3,"file":"customDiscriminant.js","names":["isAnimalCat","value","kind","isAnimalDog"],"sources":["customDiscriminant.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\n\n/**\n * A cat\n */\nexport interface Cat {\n readonly meow: string;\n readonly whiskers: number;\n}\n\n/**\n * A dog\n */\nexport interface Dog {\n readonly bark: string;\n readonly tailWags: number;\n}\n\nexport interface AnimalCat extends Cat {\n readonly kind: \"cat\";\n}\n\nexport interface AnimalDog extends Dog {\n readonly kind: \"dog\";\n}\n\nexport type Animal = AnimalCat | AnimalDog;\n\nexport function isAnimalCat(value: Animal): value is AnimalCat {\n return value.kind === \"cat\";\n}\n\nexport function isAnimalDog(value: Animal): value is AnimalDog {\n return value.kind === \"dog\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAgBA,OAAO,SAASA,WAAWA,CAACC,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B;AAEA,OAAO,SAASC,WAAWA,CAACF,KAAa,EAAsB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,KAAK;AAC7B","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */
2
2
 
3
3
  /**
4
4
  * Represents an edge in a graph
@@ -1 +1 @@
1
- {"version":3,"file":"generateTypeScriptInterfaces.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["generateTypeScriptInterfaces.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\n\n/**\n * Represents an edge in a graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly label?: string;\n readonly color?: string;\n}\n\n/**\n * Represents a text box in a graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"text-box\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"text-box\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAiBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,UAAU;AAClC","ignoreList":[]}
1
+ {"version":3,"file":"generateTypeScriptInterfaces.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["generateTypeScriptInterfaces.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\n\n/**\n * Represents an edge in a graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly label?: string;\n readonly color?: string;\n}\n\n/**\n * Represents a text box in a graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"text-box\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"text-box\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAiBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,UAAU;AAClC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"refTypes.js","names":[],"sources":["refTypes.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\nimport type { DocumentRef, MediaRef, ObjectRef, UserRef } from \"@palantir/pack.document-schema.model-types\";\n\n/**\n * A record containing all reference types\n */\nexport interface Document {\n readonly id: string;\n readonly docRef: DocumentRef;\n readonly userRef: UserRef;\n readonly objectRef: ObjectRef;\n readonly mediaRef: MediaRef;\n readonly optionalDocRef?: DocumentRef;\n readonly docRefArray: readonly DocumentRef[];\n readonly userRefArray: readonly UserRef[];\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"refTypes.js","names":[],"sources":["refTypes.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\nimport type { DocumentId, MediaId, ObjectId, ResourceRid, UserId } from \"@palantir/pack.document-schema.model-types\";\n\n/**\n * A record containing all reference types\n */\nexport interface Document {\n readonly id: string;\n readonly docRef: DocumentId;\n readonly userRef: UserId;\n readonly objectRef: ObjectId;\n readonly mediaRef: MediaId;\n readonly resourceRef: ResourceRid;\n readonly optionalDocRef?: DocumentId;\n readonly docRefArray: readonly DocumentId[];\n readonly userRefArray: readonly UserId[];\n readonly optionalResourceRef?: ResourceRid;\n readonly resourceRefArray: readonly ResourceRid[];\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"simpleRecord.js","names":[],"sources":["simpleRecord.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\n\n/**\n * A person record\n */\nexport interface Person {\n readonly name: string;\n readonly age: number;\n readonly email?: string;\n}\n\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"simpleRecord.js","names":[],"sources":["simpleRecord.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\n\n/**\n * A person record\n */\nexport interface Person {\n readonly name: string;\n readonly age: number;\n readonly email?: string;\n}\n\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- /* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */
1
+ /* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */
2
2
 
3
3
  /**
4
4
  * A node in the graph
@@ -1 +1 @@
1
- {"version":3,"file":"simpleSteps.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["simpleSteps.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.20.0 */\n\n\n/**\n * A node in the graph\n */\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly object: string;\n readonly label?: string;\n readonly edges: readonly Edge[];\n}\n\n/**\n * A text box in the graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\n/**\n * An edge in the graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"textBox\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"textBox\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AASA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,SAAS;AACjC","ignoreList":[]}
1
+ {"version":3,"file":"simpleSteps.js","names":["isNodeObject","value","type","isNodeTextBox"],"sources":["simpleSteps.ts"],"sourcesContent":["/* Generated by @palantir/pack.document-schema.type-gen@0.24.0 */\n\n\n/**\n * A node in the graph\n */\nexport interface ObjectNode {\n readonly x: number;\n readonly y: number;\n readonly object: string;\n readonly label?: string;\n readonly edges: readonly Edge[];\n}\n\n/**\n * A text box in the graph\n */\nexport interface TextBox {\n readonly x: number;\n readonly y: number;\n readonly text: string;\n}\n\n/**\n * An edge in the graph\n */\nexport interface Edge {\n readonly source: ObjectNode;\n readonly target: ObjectNode;\n}\n\nexport interface NodeObject extends ObjectNode {\n readonly type: \"object\";\n}\n\nexport interface NodeTextBox extends TextBox {\n readonly type: \"textBox\";\n}\n\nexport type Node = NodeObject | NodeTextBox;\n\nexport function isNodeObject(value: Node): value is NodeObject {\n return value.type === \"object\";\n}\n\nexport function isNodeTextBox(value: Node): value is NodeTextBox {\n return value.type === \"textBox\";\n}\n\n"],"mappings":"AAAA;;AAGA;AACA;AACA;;AASA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,OAAO,SAASA,YAAYA,CAACC,KAAW,EAAuB;EAC7D,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAChC;AAEA,OAAO,SAASC,aAAaA,CAACF,KAAW,EAAwB;EAC/D,OAAOA,KAAK,CAACC,IAAI,KAAK,SAAS;AACjC","ignoreList":[]}
@@ -19,6 +19,9 @@ const refTypes = {
19
19
  "mediaRef": {
20
20
  "type": "mediaRef"
21
21
  },
22
+ "resourceRef": {
23
+ "type": "resourceRef"
24
+ },
22
25
  "optionalDocRef": {
23
26
  "type": "optional",
24
27
  "item": {
@@ -36,6 +39,18 @@ const refTypes = {
36
39
  "items": {
37
40
  "type": "userRef"
38
41
  }
42
+ },
43
+ "optionalResourceRef": {
44
+ "type": "optional",
45
+ "item": {
46
+ "type": "resourceRef"
47
+ }
48
+ },
49
+ "resourceRefArray": {
50
+ "type": "array",
51
+ "items": {
52
+ "type": "resourceRef"
53
+ }
39
54
  }
40
55
  }
41
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"refTypes.js","names":["refTypes"],"sources":["refTypes.ts"],"sourcesContent":["import { Schema } from \"@palantir/pack.schema\";\n\nconst refTypes = {\n \"Document\": {\n \"type\": \"record\",\n \"name\": \"Document\",\n \"docs\": \"A record containing all reference types\",\n \"fields\": {\n \"id\": {\n \"type\": \"string\",\n },\n \"docRef\": {\n \"type\": \"docRef\",\n },\n \"userRef\": {\n \"type\": \"userRef\",\n },\n \"objectRef\": {\n \"type\": \"objectRef\",\n },\n \"mediaRef\": {\n \"type\": \"mediaRef\",\n },\n \"optionalDocRef\": {\n \"type\": \"optional\",\n \"item\": {\n \"type\": \"docRef\",\n },\n },\n \"docRefArray\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"docRef\",\n },\n },\n \"userRefArray\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"userRef\",\n },\n },\n },\n },\n} satisfies Schema<any>;\n\nexport default refTypes;\n"],"mappings":"AAEA,MAAMA,QAAQ,GAAG;EACf,UAAU,EAAE;IACV,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,yCAAyC;IACjD,QAAQ,EAAE;MACR,IAAI,EAAE;QACJ,MAAM,EAAE;MACV,CAAC;MACD,QAAQ,EAAE;QACR,MAAM,EAAE;MACV,CAAC;MACD,SAAS,EAAE;QACT,MAAM,EAAE;MACV,CAAC;MACD,WAAW,EAAE;QACX,MAAM,EAAE;MACV,CAAC;MACD,UAAU,EAAE;QACV,MAAM,EAAE;MACV,CAAC;MACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;UACN,MAAM,EAAE;QACV;MACF,CAAC;MACD,aAAa,EAAE;QACb,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;UACP,MAAM,EAAE;QACV;MACF,CAAC;MACD,cAAc,EAAE;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;UACP,MAAM,EAAE;QACV;MACF;IACF;EACF;AACF,CAAuB;AAEvB,eAAeA,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"refTypes.js","names":["refTypes"],"sources":["refTypes.ts"],"sourcesContent":["import { Schema } from \"@palantir/pack.schema\";\n\nconst refTypes = {\n \"Document\": {\n \"type\": \"record\",\n \"name\": \"Document\",\n \"docs\": \"A record containing all reference types\",\n \"fields\": {\n \"id\": {\n \"type\": \"string\",\n },\n \"docRef\": {\n \"type\": \"docRef\",\n },\n \"userRef\": {\n \"type\": \"userRef\",\n },\n \"objectRef\": {\n \"type\": \"objectRef\",\n },\n \"mediaRef\": {\n \"type\": \"mediaRef\",\n },\n \"resourceRef\": {\n \"type\": \"resourceRef\",\n },\n \"optionalDocRef\": {\n \"type\": \"optional\",\n \"item\": {\n \"type\": \"docRef\",\n },\n },\n \"docRefArray\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"docRef\",\n },\n },\n \"userRefArray\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"userRef\",\n },\n },\n \"optionalResourceRef\": {\n \"type\": \"optional\",\n \"item\": {\n \"type\": \"resourceRef\",\n },\n },\n \"resourceRefArray\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"resourceRef\",\n },\n },\n },\n },\n} satisfies Schema<any>;\n\nexport default refTypes;\n"],"mappings":"AAEA,MAAMA,QAAQ,GAAG;EACf,UAAU,EAAE;IACV,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,yCAAyC;IACjD,QAAQ,EAAE;MACR,IAAI,EAAE;QACJ,MAAM,EAAE;MACV,CAAC;MACD,QAAQ,EAAE;QACR,MAAM,EAAE;MACV,CAAC;MACD,SAAS,EAAE;QACT,MAAM,EAAE;MACV,CAAC;MACD,WAAW,EAAE;QACX,MAAM,EAAE;MACV,CAAC;MACD,UAAU,EAAE;QACV,MAAM,EAAE;MACV,CAAC;MACD,aAAa,EAAE;QACb,MAAM,EAAE;MACV,CAAC;MACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;UACN,MAAM,EAAE;QACV;MACF,CAAC;MACD,aAAa,EAAE;QACb,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;UACP,MAAM,EAAE;QACV;MACF,CAAC;MACD,cAAc,EAAE;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;UACP,MAAM,EAAE;QACV;MACF,CAAC;MACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;UACN,MAAM,EAAE;QACV;MACF,CAAC;MACD,kBAAkB,EAAE;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;UACP,MAAM,EAAE;QACV;MACF;IACF;EACF;AACF,CAAuB;AAEvB,eAAeA,QAAQ","ignoreList":[]}