@palantir/pack.document-schema.type-gen 0.8.0 → 0.10.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.
- package/build/esm/commands/asset/__tests__/buildPrefixRewriteFetch.test.js +85 -0
- package/build/esm/commands/asset/__tests__/buildPrefixRewriteFetch.test.js.map +1 -0
- package/build/esm/commands/asset/assetDeployHandler.js +36 -1
- package/build/esm/commands/asset/assetDeployHandler.js.map +1 -1
- package/build/esm/commands/asset/registerAssetCommands.js +1 -1
- package/build/esm/commands/asset/registerAssetCommands.js.map +1 -1
- package/build/esm/commands/ir/irGenTypesHandler.js +49 -0
- package/build/esm/commands/ir/irGenTypesHandler.js.map +1 -0
- package/build/esm/commands/ir/registerIrCommands.js +2 -0
- package/build/esm/commands/ir/registerIrCommands.js.map +1 -1
- package/build/esm/commands/schema/registerSchemaCommands.js +2 -0
- package/build/esm/commands/schema/registerSchemaCommands.js.map +1 -1
- package/build/esm/commands/schema/schemaIrHandler.js +56 -0
- package/build/esm/commands/schema/schemaIrHandler.js.map +1 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/lib/pack-docschema-api/pack-docschema-ir/recordDef.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/custom-discriminant.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/external-refs.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/simple-record.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateModelsFromIr/union-types.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/array-and-map-types.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/boolean-fields.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/custom-discriminant.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/datetime-fields.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/simple-records.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-before-records.js.map +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js +1 -1
- package/build/esm/utils/ir/__tests__/__snapshots__/generateZodSchemasFromIr/union-types.js.map +1 -1
- package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js +27 -16
- package/build/esm/utils/ir/__tests__/convertIrToWireSchema.test.js.map +1 -1
- package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js +6 -24
- package/build/esm/utils/ir/__tests__/generateModelsFromIr.test.js.map +1 -1
- package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js +10 -40
- package/build/esm/utils/ir/__tests__/generateZodSchemasFromIr.test.js.map +1 -1
- package/build/esm/utils/ir/convertIrToWireSchema.js +4 -2
- package/build/esm/utils/ir/convertIrToWireSchema.js.map +1 -1
- package/build/esm/utils/ir/generateZodSchemasFromIr.js +1 -1
- package/build/esm/utils/ir/generateZodSchemasFromIr.js.map +1 -1
- package/build/esm/utils/ir/irFieldHelpers.js +383 -0
- package/build/esm/utils/ir/irFieldHelpers.js.map +1 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/single-version.js.map +1 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/three-version-chain.js.map +1 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js +2 -0
- package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map +1 -0
- package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js +13 -0
- package/build/esm/utils/schema/__tests__/convertSchemaToSteps.test.js.map +1 -1
- package/build/esm/utils/schema/__tests__/fixtures.js +278 -0
- package/build/esm/utils/schema/__tests__/fixtures.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js +53 -0
- package/build/esm/utils/schema/__tests__/generateInternalFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js +42 -0
- package/build/esm/utils/schema/__tests__/generateModelMetadataFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js +38 -0
- package/build/esm/utils/schema/__tests__/generateScopeFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js +64 -0
- package/build/esm/utils/schema/__tests__/generateVersionedTypesFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js +60 -0
- package/build/esm/utils/schema/__tests__/generateVersionedZodFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js +38 -0
- package/build/esm/utils/schema/__tests__/generateVersionsFromSchema.test.js.map +1 -0
- package/build/esm/utils/schema/__tests__/snapshotUtils.js +106 -0
- package/build/esm/utils/schema/__tests__/snapshotUtils.js.map +1 -0
- package/build/esm/utils/schema/convertSchemaToSteps.js +6 -0
- package/build/esm/utils/schema/convertSchemaToSteps.js.map +1 -1
- package/build/esm/utils/schema/generateIndexFromSchema.js +74 -0
- package/build/esm/utils/schema/generateIndexFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateInternalFromSchema.js +264 -0
- package/build/esm/utils/schema/generateInternalFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js +172 -0
- package/build/esm/utils/schema/generateModelMetadataFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateScopeFromSchema.js +151 -0
- package/build/esm/utils/schema/generateScopeFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateTypesFromSchema.js +20 -26
- package/build/esm/utils/schema/generateTypesFromSchema.js.map +1 -1
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js +187 -0
- package/build/esm/utils/schema/generateVersionedTypesFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js +153 -0
- package/build/esm/utils/schema/generateVersionedZodFromSchema.js.map +1 -0
- package/build/esm/utils/schema/generateVersionsFromSchema.js +52 -0
- package/build/esm/utils/schema/generateVersionsFromSchema.js.map +1 -0
- package/build/esm/utils/schema/loadSchemaModule.js +53 -0
- package/build/esm/utils/schema/loadSchemaModule.js.map +1 -0
- package/build/esm/utils/schema/resolveSchemaChain.js +104 -0
- package/build/esm/utils/schema/resolveSchemaChain.js.map +1 -0
- package/build/esm/utils/schema/runtimeSchema.js +69 -0
- package/build/esm/utils/schema/runtimeSchema.js.map +1 -0
- package/build/esm/utils/schema/writeAllSdkFiles.js +111 -0
- package/build/esm/utils/schema/writeAllSdkFiles.js.map +1 -0
- package/build/esm/utils/steps/__tests__/__snapshots__/types/arrayFields.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/customDiscriminant.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/generateTypeScriptInterfaces.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/refTypes.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleRecord.js.map +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js +1 -1
- package/build/esm/utils/steps/__tests__/__snapshots__/types/simpleSteps.js.map +1 -1
- package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js +93 -1
- package/build/esm/utils/steps/__tests__/convertStepsToIr.test.js.map +1 -1
- package/build/esm/utils/steps/convertStepsToIr.js +45 -40
- package/build/esm/utils/steps/convertStepsToIr.js.map +1 -1
- package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts +2 -0
- package/build/types/commands/asset/__tests__/buildPrefixRewriteFetch.test.d.ts.map +1 -0
- package/build/types/commands/asset/assetDeployHandler.d.ts +15 -0
- package/build/types/commands/asset/assetDeployHandler.d.ts.map +1 -1
- package/build/types/commands/asset/registerAssetCommands.d.ts.map +1 -1
- package/build/types/commands/ir/irGenTypesHandler.d.ts +8 -0
- package/build/types/commands/ir/irGenTypesHandler.d.ts.map +1 -0
- package/build/types/commands/ir/registerIrCommands.d.ts.map +1 -1
- package/build/types/commands/schema/registerSchemaCommands.d.ts.map +1 -1
- package/build/types/commands/schema/schemaIrHandler.d.ts +19 -0
- package/build/types/commands/schema/schemaIrHandler.d.ts.map +1 -0
- package/build/types/index.d.ts +1 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts +0 -2
- package/build/types/lib/pack-docschema-api/pack-docschema-ir/recordDef.d.ts.map +1 -1
- package/build/types/utils/ir/irFieldHelpers.d.ts +36 -0
- package/build/types/utils/ir/irFieldHelpers.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/fixtures.d.ts +23 -0
- package/build/types/utils/schema/__tests__/fixtures.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateInternalFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateModelMetadataFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateScopeFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionedTypesFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionedZodFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts +2 -0
- package/build/types/utils/schema/__tests__/generateVersionsFromSchema.test.d.ts.map +1 -0
- package/build/types/utils/schema/__tests__/snapshotUtils.d.ts +47 -0
- package/build/types/utils/schema/__tests__/snapshotUtils.d.ts.map +1 -0
- package/build/types/utils/schema/convertSchemaToSteps.d.ts.map +1 -1
- package/build/types/utils/schema/generateIndexFromSchema.d.ts +14 -0
- package/build/types/utils/schema/generateIndexFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateInternalFromSchema.d.ts +15 -0
- package/build/types/utils/schema/generateInternalFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts +10 -0
- package/build/types/utils/schema/generateModelMetadataFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateScopeFromSchema.d.ts +13 -0
- package/build/types/utils/schema/generateScopeFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateTypesFromSchema.d.ts.map +1 -1
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts +15 -0
- package/build/types/utils/schema/generateVersionedTypesFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts +12 -0
- package/build/types/utils/schema/generateVersionedZodFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts +13 -0
- package/build/types/utils/schema/generateVersionsFromSchema.d.ts.map +1 -0
- package/build/types/utils/schema/loadSchemaModule.d.ts +14 -0
- package/build/types/utils/schema/loadSchemaModule.d.ts.map +1 -0
- package/build/types/utils/schema/resolveSchemaChain.d.ts +39 -0
- package/build/types/utils/schema/resolveSchemaChain.d.ts.map +1 -0
- package/build/types/utils/schema/runtimeSchema.d.ts +27 -0
- package/build/types/utils/schema/runtimeSchema.d.ts.map +1 -0
- package/build/types/utils/schema/writeAllSdkFiles.d.ts +8 -0
- package/build/types/utils/schema/writeAllSdkFiles.d.ts.map +1 -0
- package/build/types/utils/steps/convertStepsToIr.d.ts +3 -3
- package/build/types/utils/steps/convertStepsToIr.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { versionedSchemaName, versionedTypeName } from "../schema/runtimeSchema.js";
|
|
18
|
+
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Public read-type TypeScript conversion
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Convert an IR field type to a TypeScript type string for public read types.
|
|
25
|
+
*/
|
|
26
|
+
export function convertFieldTypeToTypeScript(fieldType, version) {
|
|
27
|
+
switch (fieldType.type) {
|
|
28
|
+
case "array":
|
|
29
|
+
return `readonly ${convertCollectionValueToTypeScript(fieldType.array, version)}[]`;
|
|
30
|
+
case "map":
|
|
31
|
+
case "set":
|
|
32
|
+
throw new Error(`${fieldType.type} is not yet supported in TypeScript generation`);
|
|
33
|
+
case "value":
|
|
34
|
+
return convertFieldValueToTypeScript(fieldType.value, version);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function convertCollectionValueToTypeScript(collection, version) {
|
|
38
|
+
// allowNullValue is ignored in public read types (current behavior)
|
|
39
|
+
return convertFieldValueToTypeScript(collection.value, version);
|
|
40
|
+
}
|
|
41
|
+
function convertFieldValueToTypeScript(value, version) {
|
|
42
|
+
switch (value.type) {
|
|
43
|
+
case "boolean":
|
|
44
|
+
return "boolean";
|
|
45
|
+
case "datetime":
|
|
46
|
+
return "string";
|
|
47
|
+
case "docRef":
|
|
48
|
+
return "DocumentRef";
|
|
49
|
+
case "double":
|
|
50
|
+
return "number";
|
|
51
|
+
case "integer":
|
|
52
|
+
return "number";
|
|
53
|
+
case "mediaRef":
|
|
54
|
+
return "MediaRef";
|
|
55
|
+
case "modelRef":
|
|
56
|
+
{
|
|
57
|
+
const modelKey = value.modelRef.modelTypes[0];
|
|
58
|
+
return version != null ? versionedTypeName(modelKey, version) : modelKey;
|
|
59
|
+
}
|
|
60
|
+
case "object":
|
|
61
|
+
return "ObjectRef";
|
|
62
|
+
case "string":
|
|
63
|
+
return "string";
|
|
64
|
+
case "text":
|
|
65
|
+
return "string";
|
|
66
|
+
case "unmanagedJson":
|
|
67
|
+
return "any";
|
|
68
|
+
case "userRef":
|
|
69
|
+
return "UserRef";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Zod schema conversion
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Convert an IR field type to a Zod schema string.
|
|
79
|
+
*/
|
|
80
|
+
export function convertFieldTypeToZodSchema(fieldType, version) {
|
|
81
|
+
switch (fieldType.type) {
|
|
82
|
+
case "array":
|
|
83
|
+
{
|
|
84
|
+
const inner = convertFieldValueToZodSchema(fieldType.array.value, version);
|
|
85
|
+
const optSuffix = fieldType.array.allowNullValue ? ".optional()" : "";
|
|
86
|
+
return `z.array(${inner}${optSuffix})`;
|
|
87
|
+
}
|
|
88
|
+
case "map":
|
|
89
|
+
case "set":
|
|
90
|
+
throw new Error(`${fieldType.type} is not yet supported in Zod generation`);
|
|
91
|
+
case "value":
|
|
92
|
+
return convertFieldValueToZodSchema(fieldType.value, version);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function convertFieldValueToZodSchema(value, version) {
|
|
96
|
+
switch (value.type) {
|
|
97
|
+
case "boolean":
|
|
98
|
+
return "z.boolean()";
|
|
99
|
+
case "datetime":
|
|
100
|
+
case "docRef":
|
|
101
|
+
case "mediaRef":
|
|
102
|
+
case "object":
|
|
103
|
+
case "string":
|
|
104
|
+
case "text":
|
|
105
|
+
case "userRef":
|
|
106
|
+
return "z.string()";
|
|
107
|
+
case "double":
|
|
108
|
+
case "integer":
|
|
109
|
+
return "z.number()";
|
|
110
|
+
case "modelRef":
|
|
111
|
+
{
|
|
112
|
+
const modelKey = value.modelRef.modelTypes[0];
|
|
113
|
+
const refSchemaName = version != null ? versionedSchemaName(modelKey, version) : `${modelKey}Schema`;
|
|
114
|
+
const refTypeName = version != null ? versionedTypeName(modelKey, version) : modelKey;
|
|
115
|
+
return `z.lazy((): ZodType<${refTypeName}> => ${refSchemaName})`;
|
|
116
|
+
}
|
|
117
|
+
case "unmanagedJson":
|
|
118
|
+
return "z.unknown()";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
// Internal TypeScript conversion (refs → unknown, external refs → string)
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Convert an IR field type to a TypeScript string for internal types.
|
|
128
|
+
*/
|
|
129
|
+
export function convertFieldTypeToInternalTypeScript(fieldType, isOptional) {
|
|
130
|
+
const base = convertFieldTypeToInternalTsInner(fieldType);
|
|
131
|
+
if (isOptional) {
|
|
132
|
+
return `(${base} | undefined)`;
|
|
133
|
+
}
|
|
134
|
+
return base;
|
|
135
|
+
}
|
|
136
|
+
function convertFieldTypeToInternalTsInner(fieldType) {
|
|
137
|
+
switch (fieldType.type) {
|
|
138
|
+
case "array":
|
|
139
|
+
{
|
|
140
|
+
const inner = convertCollectionValueToInternalTs(fieldType.array);
|
|
141
|
+
const needsParens = inner.includes("|") || inner.startsWith("readonly ");
|
|
142
|
+
const wrapped = needsParens ? `(${inner})` : inner;
|
|
143
|
+
return `readonly ${wrapped}[]`;
|
|
144
|
+
}
|
|
145
|
+
case "map":
|
|
146
|
+
case "set":
|
|
147
|
+
throw new Error(`${fieldType.type} is not yet supported in internal TypeScript generation`);
|
|
148
|
+
case "value":
|
|
149
|
+
return convertFieldValueToInternalTs(fieldType.value);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function convertCollectionValueToInternalTs(collection) {
|
|
153
|
+
const base = convertFieldValueToInternalTs(collection.value);
|
|
154
|
+
if (collection.allowNullValue) {
|
|
155
|
+
return `(${base} | undefined)`;
|
|
156
|
+
}
|
|
157
|
+
return base;
|
|
158
|
+
}
|
|
159
|
+
function convertFieldValueToInternalTs(value) {
|
|
160
|
+
switch (value.type) {
|
|
161
|
+
case "boolean":
|
|
162
|
+
return "boolean";
|
|
163
|
+
case "double":
|
|
164
|
+
case "integer":
|
|
165
|
+
return "number";
|
|
166
|
+
case "datetime":
|
|
167
|
+
case "docRef":
|
|
168
|
+
case "mediaRef":
|
|
169
|
+
case "object":
|
|
170
|
+
case "string":
|
|
171
|
+
case "text":
|
|
172
|
+
case "userRef":
|
|
173
|
+
return "string";
|
|
174
|
+
case "modelRef":
|
|
175
|
+
case "unmanagedJson":
|
|
176
|
+
return "unknown";
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
// Internal Zod schema conversion
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Convert an IR field type to a Zod schema string for internal schemas.
|
|
186
|
+
*/
|
|
187
|
+
export function convertFieldTypeToInternalZod(fieldType, isOptional) {
|
|
188
|
+
const base = convertFieldTypeToInternalZodInner(fieldType);
|
|
189
|
+
if (isOptional) {
|
|
190
|
+
if (base.endsWith(".optional()")) {
|
|
191
|
+
return base;
|
|
192
|
+
}
|
|
193
|
+
return `${base}.optional()`;
|
|
194
|
+
}
|
|
195
|
+
return base;
|
|
196
|
+
}
|
|
197
|
+
function convertFieldTypeToInternalZodInner(fieldType) {
|
|
198
|
+
switch (fieldType.type) {
|
|
199
|
+
case "array":
|
|
200
|
+
{
|
|
201
|
+
const inner = convertCollectionValueToInternalZod(fieldType.array);
|
|
202
|
+
return `z.array(${inner})`;
|
|
203
|
+
}
|
|
204
|
+
case "map":
|
|
205
|
+
case "set":
|
|
206
|
+
throw new Error(`${fieldType.type} is not yet supported in internal Zod generation`);
|
|
207
|
+
case "value":
|
|
208
|
+
return convertFieldValueToInternalZod(fieldType.value);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function convertCollectionValueToInternalZod(collection) {
|
|
212
|
+
const base = convertFieldValueToInternalZod(collection.value);
|
|
213
|
+
if (collection.allowNullValue) {
|
|
214
|
+
return `${base}.optional()`;
|
|
215
|
+
}
|
|
216
|
+
return base;
|
|
217
|
+
}
|
|
218
|
+
function convertFieldValueToInternalZod(value) {
|
|
219
|
+
switch (value.type) {
|
|
220
|
+
case "boolean":
|
|
221
|
+
return "z.boolean()";
|
|
222
|
+
case "double":
|
|
223
|
+
case "integer":
|
|
224
|
+
return "z.number()";
|
|
225
|
+
case "datetime":
|
|
226
|
+
case "docRef":
|
|
227
|
+
case "mediaRef":
|
|
228
|
+
case "object":
|
|
229
|
+
case "string":
|
|
230
|
+
case "text":
|
|
231
|
+
case "userRef":
|
|
232
|
+
return "z.string()";
|
|
233
|
+
case "modelRef":
|
|
234
|
+
case "unmanagedJson":
|
|
235
|
+
return "z.unknown()";
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
// FieldTypeDescriptor conversion (for UpgradeLens)
|
|
241
|
+
// ---------------------------------------------------------------------------
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Convert an IR field type to a FieldTypeDescriptor source string for UpgradeLens.
|
|
245
|
+
*/
|
|
246
|
+
export function convertFieldTypeToDescriptor(fieldType, isOptional) {
|
|
247
|
+
const base = convertFieldTypeToDescriptorInner(fieldType);
|
|
248
|
+
if (isOptional) {
|
|
249
|
+
return `{ kind: "optional", inner: ${base} }`;
|
|
250
|
+
}
|
|
251
|
+
return base;
|
|
252
|
+
}
|
|
253
|
+
function convertFieldTypeToDescriptorInner(fieldType) {
|
|
254
|
+
switch (fieldType.type) {
|
|
255
|
+
case "array":
|
|
256
|
+
{
|
|
257
|
+
const inner = convertCollectionValueToDescriptor(fieldType.array);
|
|
258
|
+
return `{ kind: "array", element: ${inner} }`;
|
|
259
|
+
}
|
|
260
|
+
case "map":
|
|
261
|
+
case "set":
|
|
262
|
+
throw new Error(`${fieldType.type} is not yet supported in descriptor generation`);
|
|
263
|
+
case "value":
|
|
264
|
+
return convertFieldValueToDescriptor(fieldType.value);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function convertCollectionValueToDescriptor(collection) {
|
|
268
|
+
const base = convertFieldValueToDescriptor(collection.value);
|
|
269
|
+
if (collection.allowNullValue) {
|
|
270
|
+
return `{ kind: "optional", inner: ${base} }`;
|
|
271
|
+
}
|
|
272
|
+
return base;
|
|
273
|
+
}
|
|
274
|
+
function convertFieldValueToDescriptor(value) {
|
|
275
|
+
switch (value.type) {
|
|
276
|
+
case "modelRef":
|
|
277
|
+
{
|
|
278
|
+
const modelKey = value.modelRef.modelTypes[0];
|
|
279
|
+
return `{ kind: "modelRef", model: "${modelKey}" }`;
|
|
280
|
+
}
|
|
281
|
+
default:
|
|
282
|
+
return `{ kind: "primitive" }`;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// ---------------------------------------------------------------------------
|
|
287
|
+
// Ref type detection (for import generation)
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Detect which external ref types (DocumentRef, MediaRef, ObjectRef, UserRef)
|
|
292
|
+
* are used anywhere in the IR schema.
|
|
293
|
+
*/
|
|
294
|
+
export function detectUsedRefTypes(ir) {
|
|
295
|
+
const refTypes = new Set();
|
|
296
|
+
for (const modelDef of Object.values(ir.models)) {
|
|
297
|
+
if (modelDef.type === "record") {
|
|
298
|
+
for (const field of modelDef.record.fields) {
|
|
299
|
+
scanFieldTypeForRefs(field.fieldType, refTypes);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return refTypes;
|
|
304
|
+
}
|
|
305
|
+
function scanFieldTypeForRefs(fieldType, out) {
|
|
306
|
+
switch (fieldType.type) {
|
|
307
|
+
case "array":
|
|
308
|
+
scanFieldValueForRefs(fieldType.array.value, out);
|
|
309
|
+
break;
|
|
310
|
+
case "value":
|
|
311
|
+
scanFieldValueForRefs(fieldType.value, out);
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function scanFieldValueForRefs(value, out) {
|
|
316
|
+
switch (value.type) {
|
|
317
|
+
case "docRef":
|
|
318
|
+
out.add("DocumentRef");
|
|
319
|
+
break;
|
|
320
|
+
case "mediaRef":
|
|
321
|
+
out.add("MediaRef");
|
|
322
|
+
break;
|
|
323
|
+
case "object":
|
|
324
|
+
out.add("ObjectRef");
|
|
325
|
+
break;
|
|
326
|
+
case "userRef":
|
|
327
|
+
out.add("UserRef");
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Collect schema-local type references (versioned type names) from a field type.
|
|
334
|
+
*/
|
|
335
|
+
export function collectReferencedTypes(fieldType, version, out) {
|
|
336
|
+
switch (fieldType.type) {
|
|
337
|
+
case "array":
|
|
338
|
+
collectReferencedValuesTypes(fieldType.array.value, version, out);
|
|
339
|
+
break;
|
|
340
|
+
case "value":
|
|
341
|
+
collectReferencedValuesTypes(fieldType.value, version, out);
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function collectReferencedValuesTypes(value, version, out) {
|
|
346
|
+
if (value.type === "modelRef") {
|
|
347
|
+
const modelKey = value.modelRef.modelTypes[0];
|
|
348
|
+
out.add(versionedTypeName(modelKey, version));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// ---------------------------------------------------------------------------
|
|
353
|
+
// External ref field type detection (for model metadata)
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Detect the external ref type (docRef, mediaRef, objectRef, userRef) of a field, if any.
|
|
358
|
+
*/
|
|
359
|
+
export function findExternalRefType(fieldType) {
|
|
360
|
+
switch (fieldType.type) {
|
|
361
|
+
case "array":
|
|
362
|
+
return findExternalRefValueType(fieldType.array.value);
|
|
363
|
+
case "value":
|
|
364
|
+
return findExternalRefValueType(fieldType.value);
|
|
365
|
+
default:
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
function findExternalRefValueType(value) {
|
|
370
|
+
switch (value.type) {
|
|
371
|
+
case "docRef":
|
|
372
|
+
return "docRef";
|
|
373
|
+
case "mediaRef":
|
|
374
|
+
return "mediaRef";
|
|
375
|
+
case "object":
|
|
376
|
+
return "objectRef";
|
|
377
|
+
case "userRef":
|
|
378
|
+
return "userRef";
|
|
379
|
+
default:
|
|
380
|
+
return undefined;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=irFieldHelpers.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +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.10.0 */\n\nexport type SupportedVersions = 1;\nexport type LatestVersion = 1;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +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.10.0 */\n\nexport type SupportedVersions = 1 | 2 | 3;\nexport type LatestVersion = 3;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
package/build/esm/utils/schema/__tests__/__snapshots__/generateVersionsFromSchema/two-version.js.map
ADDED
|
@@ -0,0 +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.10.0 */\n\nexport type SupportedVersions = 1 | 2;\nexport type LatestVersion = 2;\nexport type MinSupportedVersion = 1;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -217,5 +217,18 @@ describe("convertSchemaToSteps", () => {
|
|
|
217
217
|
await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);
|
|
218
218
|
});
|
|
219
219
|
});
|
|
220
|
+
it("rejects aliased schemas where exportKey differs from declared name", () => {
|
|
221
|
+
const schema = P.defineMigration({}, () => {
|
|
222
|
+
return {
|
|
223
|
+
FooAlias: P.defineRecord("Foo", {
|
|
224
|
+
docs: "A foo",
|
|
225
|
+
fields: {
|
|
226
|
+
x: P.String
|
|
227
|
+
}
|
|
228
|
+
})
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
expect(() => convertSchemaToSteps(schema)).toThrow(/cannot represent aliases/);
|
|
232
|
+
});
|
|
220
233
|
});
|
|
221
234
|
//# sourceMappingURL=convertSchemaToSteps.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertSchemaToSteps.test.js","names":["P","path","describe","expect","it","convertSchemaToSteps","convertStepsToYamlString","schema","defineMigration","Person","defineRecord","docs","fields","name","String","age","Double","email","Optional","steps","toHaveLength","toHaveProperty","toEqual","Company","Entity","defineUnion","variants","person","company","ObjectNode","x","Container","items","Array","values","Node","Edge","source","target","y","label","TextBox","text","object","textBox","yamlOutput","snapshotPath","join","__dirname","toMatchFileSnapshot","OtherRecord","id","AllFieldTypes","stringField","doubleField","booleanField","Boolean","optionalField","arrayField","unknownField","Unknown","refField"],"sources":["convertSchemaToSteps.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as P from \"@palantir/pack.schema\";\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { convertSchemaToSteps, convertStepsToYamlString } from \"../convertSchemaToSteps.js\";\n\ndescribe(\"convertSchemaToSteps\", () => {\n it(\"should convert a simple record schema to YAML steps\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n age: P.Double,\n email: P.Optional(P.String),\n },\n });\n return { Person };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(1);\n expect(steps[0]).toHaveProperty(\"add-records\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]!.Person!.fields).toEqual({\n name: \"string\",\n age: \"double\",\n email: \"optional<string>\",\n });\n });\n\n it(\"should handle union types\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n },\n });\n\n const Company = P.defineRecord(\"Company\", {\n docs: \"A company record\",\n fields: {\n name: P.String,\n },\n });\n\n const Entity = P.defineUnion(\"Entity\", {\n docs: \"Entity union\",\n variants: {\n person: Person,\n company: Company,\n },\n });\n\n return { Person, Company, Entity };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(2);\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Company\");\n expect(steps[1]![\"add-union\"]).toHaveProperty(\"Entity\");\n expect(steps[1]![\"add-union\"]!.Entity).toEqual({\n variants: {\n person: \"Person\",\n company: \"Company\",\n },\n });\n });\n\n it(\"should preserve record names as defined\", () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Object node\",\n fields: {\n x: P.Double,\n },\n });\n return { ObjectNode };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"ObjectNode\");\n });\n\n it(\"should handle array types\", () => {\n const schema = P.defineMigration({}, () => {\n const Container = P.defineRecord(\"Container\", {\n docs: \"Container record\",\n fields: {\n items: P.Array(P.String),\n values: P.Array(P.Double),\n },\n });\n return { Container };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Container!.fields).toEqual({\n items: \"array<string>\",\n values: \"array<double>\",\n });\n });\n\n it(\"should handle record references\", () => {\n const schema = P.defineMigration({}, () => {\n const Node = P.defineRecord(\"Node\", {\n docs: \"Node record\",\n fields: {\n x: P.Double,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Edge record\",\n fields: {\n source: () => Node,\n target: () => Node,\n },\n });\n return { Edge };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Edge!.fields).toEqual({\n source: \"Node\",\n target: \"Node\",\n });\n });\n\n describe(\"YAML output snapshots\", () => {\n it(\"should generate correct YAML for complex schema\", async () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Represents a node in a graph\",\n fields: {\n x: P.Double,\n y: P.Double,\n label: P.Optional(P.String),\n },\n });\n\n const TextBox = P.defineRecord(\"TextBox\", {\n docs: \"Represents a text box\",\n fields: {\n x: P.Double,\n y: P.Double,\n text: P.String,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Represents an edge\",\n fields: {\n source: () => ObjectNode,\n target: () => ObjectNode,\n },\n });\n\n const Node = P.defineUnion(\"Node\", {\n docs: \"Node union\",\n variants: {\n object: ObjectNode,\n textBox: TextBox,\n },\n });\n\n return { ObjectNode, TextBox, Edge, Node };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"complex-schema.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n\n it(\"should generate correct YAML for schema with various field types\", async () => {\n const schema = P.defineMigration({}, () => {\n const OtherRecord = P.defineRecord(\"OtherRecord\", {\n docs: \"Other record\",\n fields: {\n id: P.String,\n },\n });\n\n const AllFieldTypes = P.defineRecord(\"AllFieldTypes\", {\n docs: \"Test all field types\",\n fields: {\n stringField: P.String,\n doubleField: P.Double,\n booleanField: P.Optional(P.Boolean),\n optionalField: P.Optional(P.String),\n arrayField: P.Array(P.Double),\n unknownField: P.Unknown,\n refField: () => OtherRecord,\n },\n });\n\n return { OtherRecord, AllFieldTypes };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"all-field-types.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"convertSchemaToSteps.test.js","names":["P","path","describe","expect","it","convertSchemaToSteps","convertStepsToYamlString","schema","defineMigration","Person","defineRecord","docs","fields","name","String","age","Double","email","Optional","steps","toHaveLength","toHaveProperty","toEqual","Company","Entity","defineUnion","variants","person","company","ObjectNode","x","Container","items","Array","values","Node","Edge","source","target","y","label","TextBox","text","object","textBox","yamlOutput","snapshotPath","join","__dirname","toMatchFileSnapshot","OtherRecord","id","AllFieldTypes","stringField","doubleField","booleanField","Boolean","optionalField","arrayField","unknownField","Unknown","refField","FooAlias","toThrow"],"sources":["convertSchemaToSteps.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as P from \"@palantir/pack.schema\";\nimport path from \"path\";\nimport { describe, expect, it } from \"vitest\";\nimport { convertSchemaToSteps, convertStepsToYamlString } from \"../convertSchemaToSteps.js\";\n\ndescribe(\"convertSchemaToSteps\", () => {\n it(\"should convert a simple record schema to YAML steps\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n age: P.Double,\n email: P.Optional(P.String),\n },\n });\n return { Person };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(1);\n expect(steps[0]).toHaveProperty(\"add-records\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]!.Person!.fields).toEqual({\n name: \"string\",\n age: \"double\",\n email: \"optional<string>\",\n });\n });\n\n it(\"should handle union types\", () => {\n const schema = P.defineMigration({}, () => {\n const Person = P.defineRecord(\"Person\", {\n docs: \"A person record\",\n fields: {\n name: P.String,\n },\n });\n\n const Company = P.defineRecord(\"Company\", {\n docs: \"A company record\",\n fields: {\n name: P.String,\n },\n });\n\n const Entity = P.defineUnion(\"Entity\", {\n docs: \"Entity union\",\n variants: {\n person: Person,\n company: Company,\n },\n });\n\n return { Person, Company, Entity };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps).toHaveLength(2);\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Person\");\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"Company\");\n expect(steps[1]![\"add-union\"]).toHaveProperty(\"Entity\");\n expect(steps[1]![\"add-union\"]!.Entity).toEqual({\n variants: {\n person: \"Person\",\n company: \"Company\",\n },\n });\n });\n\n it(\"should preserve record names as defined\", () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Object node\",\n fields: {\n x: P.Double,\n },\n });\n return { ObjectNode };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]).toHaveProperty(\"ObjectNode\");\n });\n\n it(\"should handle array types\", () => {\n const schema = P.defineMigration({}, () => {\n const Container = P.defineRecord(\"Container\", {\n docs: \"Container record\",\n fields: {\n items: P.Array(P.String),\n values: P.Array(P.Double),\n },\n });\n return { Container };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Container!.fields).toEqual({\n items: \"array<string>\",\n values: \"array<double>\",\n });\n });\n\n it(\"should handle record references\", () => {\n const schema = P.defineMigration({}, () => {\n const Node = P.defineRecord(\"Node\", {\n docs: \"Node record\",\n fields: {\n x: P.Double,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Edge record\",\n fields: {\n source: () => Node,\n target: () => Node,\n },\n });\n return { Edge };\n });\n\n const steps = convertSchemaToSteps(schema);\n\n expect(steps[0]![\"add-records\"]!.Edge!.fields).toEqual({\n source: \"Node\",\n target: \"Node\",\n });\n });\n\n describe(\"YAML output snapshots\", () => {\n it(\"should generate correct YAML for complex schema\", async () => {\n const schema = P.defineMigration({}, () => {\n const ObjectNode = P.defineRecord(\"ObjectNode\", {\n docs: \"Represents a node in a graph\",\n fields: {\n x: P.Double,\n y: P.Double,\n label: P.Optional(P.String),\n },\n });\n\n const TextBox = P.defineRecord(\"TextBox\", {\n docs: \"Represents a text box\",\n fields: {\n x: P.Double,\n y: P.Double,\n text: P.String,\n },\n });\n\n const Edge = P.defineRecord(\"Edge\", {\n docs: \"Represents an edge\",\n fields: {\n source: () => ObjectNode,\n target: () => ObjectNode,\n },\n });\n\n const Node = P.defineUnion(\"Node\", {\n docs: \"Node union\",\n variants: {\n object: ObjectNode,\n textBox: TextBox,\n },\n });\n\n return { ObjectNode, TextBox, Edge, Node };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"complex-schema.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n\n it(\"should generate correct YAML for schema with various field types\", async () => {\n const schema = P.defineMigration({}, () => {\n const OtherRecord = P.defineRecord(\"OtherRecord\", {\n docs: \"Other record\",\n fields: {\n id: P.String,\n },\n });\n\n const AllFieldTypes = P.defineRecord(\"AllFieldTypes\", {\n docs: \"Test all field types\",\n fields: {\n stringField: P.String,\n doubleField: P.Double,\n booleanField: P.Optional(P.Boolean),\n optionalField: P.Optional(P.String),\n arrayField: P.Array(P.Double),\n unknownField: P.Unknown,\n refField: () => OtherRecord,\n },\n });\n\n return { OtherRecord, AllFieldTypes };\n });\n\n const steps = convertSchemaToSteps(schema);\n const yamlOutput = convertStepsToYamlString(steps);\n const snapshotPath = path.join(__dirname, \"__snapshots__\", \"schema\", \"all-field-types.yaml\");\n\n await expect(yamlOutput).toMatchFileSnapshot(snapshotPath);\n });\n });\n\n it(\"rejects aliased schemas where exportKey differs from declared name\", () => {\n const schema = P.defineMigration({}, () => {\n return {\n FooAlias: P.defineRecord(\"Foo\", {\n docs: \"A foo\",\n fields: { x: P.String },\n }),\n };\n });\n\n expect(() => convertSchemaToSteps(schema)).toThrow(/cannot represent aliases/);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|