@palantir/pack.schema 0.3.1 → 0.4.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/.turbo/turbo-lint.log +3 -3
- package/.turbo/turbo-transpileBrowser.log +1 -1
- package/.turbo/turbo-transpileCjs.log +1 -1
- package/.turbo/turbo-transpileEsm.log +1 -1
- package/.turbo/turbo-transpileTypes.log +1 -1
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +9 -0
- package/build/browser/index.js +55 -5
- package/build/browser/index.js.map +1 -1
- package/build/cjs/index.cjs +57 -4
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +39 -5
- package/build/esm/index.js +55 -5
- package/build/esm/index.js.map +1 -1
- package/build/types/__tests__/defineSchemaUpdate.test.d.ts +1 -0
- package/build/types/__tests__/defineSchemaUpdate.test.d.ts.map +1 -0
- package/build/types/defineMigration.d.ts +9 -7
- package/build/types/defineMigration.d.ts.map +1 -1
- package/build/types/defineSchemaUpdate.d.ts +38 -0
- package/build/types/defineSchemaUpdate.d.ts.map +1 -0
- package/build/types/defs.d.ts +1 -0
- package/build/types/defs.d.ts.map +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/defineSchemaUpdate.test.ts +365 -0
- package/src/defineMigration.ts +13 -29
- package/src/defineSchemaUpdate.ts +114 -0
- package/src/defs.ts +1 -0
- package/src/index.ts +1 -0
package/.turbo/turbo-lint.log
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.schema@0.
|
|
2
|
+
> @palantir/pack.schema@0.4.0 lint /home/runner/work/pack/pack/packages/schema
|
|
3
3
|
> eslint ./src && dprint check --config $(find-up dprint.json) --allow-no-files
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
/home/runner/work/pack/pack/packages/schema/src/defineMigration.ts
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
50:23 warning { [k in K]: Ref; } is overridden by S in this intersection type @typescript-eslint/no-redundant-type-constituents
|
|
8
|
+
66:23 warning Record<K, Ref> is overridden by S in this intersection type @typescript-eslint/no-redundant-type-constituents
|
|
9
9
|
|
|
10
10
|
✖ 2 problems (0 errors, 2 warnings)
|
|
11
11
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.schema@0.
|
|
2
|
+
> @palantir/pack.schema@0.4.0 transpileBrowser /home/runner/work/pack/pack/packages/schema
|
|
3
3
|
> monorepo-transpile -f esm -m bundle -t browser
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.schema@0.
|
|
2
|
+
> @palantir/pack.schema@0.4.0 transpileCjs /home/runner/work/pack/pack/packages/schema
|
|
3
3
|
> monorepo-transpile -f cjs -m bundle -t node
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.schema@0.
|
|
2
|
+
> @palantir/pack.schema@0.4.0 transpileEsm /home/runner/work/pack/pack/packages/schema
|
|
3
3
|
> monorepo-transpile -f esm -m bundle -t node
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @palantir/pack.schema
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2b00422: Add 'gen-types' command, along with scope, metadata and manifest generators
|
|
8
|
+
- 222e157: Wire in lens upgrade registry to reads in the yjs layer
|
|
9
|
+
- d6d49e3: Add new schema builder methods for schema updates
|
|
10
|
+
- 792a1b0: Add new 'gen-types' command, direct from TS schema to Versioned SDK Types.
|
|
11
|
+
|
|
3
12
|
## 0.3.1
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/build/browser/index.js
CHANGED
|
@@ -146,10 +146,10 @@ var RecordBuilderImpl = class _RecordBuilderImpl {
|
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
|
-
function defineMigration(
|
|
149
|
+
function defineMigration(models, migration) {
|
|
150
150
|
const builders = {};
|
|
151
|
-
for (const key in
|
|
152
|
-
const v =
|
|
151
|
+
for (const key in models) {
|
|
152
|
+
const v = models[key];
|
|
153
153
|
if (isRecordDef(v)) {
|
|
154
154
|
const recordBuilder = new RecordBuilderImpl(v);
|
|
155
155
|
builders[key] = recordBuilder;
|
|
@@ -159,7 +159,7 @@ function defineMigration(previous, migration) {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
return {
|
|
162
|
-
...
|
|
162
|
+
...models,
|
|
163
163
|
...migration(builders)
|
|
164
164
|
};
|
|
165
165
|
}
|
|
@@ -183,6 +183,56 @@ function defineRecord(name, record) {
|
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
// src/defineSchemaUpdate.ts
|
|
187
|
+
function defineSchema(models) {
|
|
188
|
+
return {
|
|
189
|
+
type: "initial",
|
|
190
|
+
version: 1,
|
|
191
|
+
models
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function defineSchemaUpdate(name, migration) {
|
|
195
|
+
return {
|
|
196
|
+
name,
|
|
197
|
+
migration
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
var SchemaVersionBuilderImpl = class _SchemaVersionBuilderImpl {
|
|
201
|
+
models;
|
|
202
|
+
version;
|
|
203
|
+
previous;
|
|
204
|
+
_migrations;
|
|
205
|
+
constructor(models, version, previous, migrations) {
|
|
206
|
+
this.models = models;
|
|
207
|
+
this.version = version;
|
|
208
|
+
this.previous = previous;
|
|
209
|
+
this._migrations = migrations;
|
|
210
|
+
}
|
|
211
|
+
addSchemaUpdate(update) {
|
|
212
|
+
const merged = defineMigration(this.models, update.migration);
|
|
213
|
+
return new _SchemaVersionBuilderImpl(merged, this.version, this.previous, this._migrations);
|
|
214
|
+
}
|
|
215
|
+
withMigrations(migrations) {
|
|
216
|
+
return new _SchemaVersionBuilderImpl(this.models, this.version, this.previous, migrations);
|
|
217
|
+
}
|
|
218
|
+
build() {
|
|
219
|
+
return {
|
|
220
|
+
type: "versioned",
|
|
221
|
+
models: {
|
|
222
|
+
...this.models
|
|
223
|
+
},
|
|
224
|
+
version: this.version,
|
|
225
|
+
previous: this.previous,
|
|
226
|
+
...this._migrations != null ? {
|
|
227
|
+
migrations: this._migrations
|
|
228
|
+
} : {}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
function nextSchema(previous) {
|
|
233
|
+
return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export { Array, Boolean, Double, ModelDefType, Optional, String, TypeKind, Unknown, createRef, defineMigration, defineRecord, defineSchema, defineSchemaUpdate, defineUnion, isRecordDef, isUnionDef, modelToRef, nextSchema, resolveUnionVariantArg };
|
|
187
237
|
//# sourceMappingURL=index.js.map
|
|
188
238
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/defs.ts","../../src/primitives.ts","../../src/utils.ts","../../src/defineUnion.ts","../../src/defineMigration.ts","../../src/defineRecord.ts"],"names":[],"mappings":"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","file":"index.js","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\nexport const ModelDefType = {\n RECORD: \"record\",\n UNION: \"union\"\n};","/*\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\nexport const TypeKind = {\n ARRAY: \"array\",\n BOOLEAN: \"boolean\",\n DOC_REF: \"docRef\",\n DOUBLE: \"double\",\n MEDIA_REF: \"mediaRef\",\n OBJECT_REF: \"objectRef\",\n OPTIONAL: \"optional\",\n REF: \"ref\",\n STRING: \"string\",\n UNKNOWN: \"unknown\",\n USER_REF: \"userRef\"\n};\n\n// Forward declaration to avoid circular reference\n\n// A reference to a record or a union type\n\nexport const String = {\n type: TypeKind.STRING\n};\nexport const Double = {\n type: TypeKind.DOUBLE\n};\nexport const Boolean = {\n type: TypeKind.BOOLEAN\n};\nexport const Unknown = {\n type: TypeKind.UNKNOWN\n};\nexport const Array = item => ({\n type: TypeKind.ARRAY,\n items: item\n});\nexport const Optional = item => ({\n type: TypeKind.OPTIONAL,\n item\n});","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\n\n/**\n * Helper function to safely transform a record definition to a reference.\n * This function helps TypeScript track type transformations better.\n */\nexport function modelToRef(model) {\n return createRef(model.name, model.type);\n}\n\n/**\n * Helper function to create a reference with proper typing.\n * This avoids type assertions in multiple places.\n */\nexport function createRef(name, refType) {\n return {\n type: TypeKind.REF,\n name,\n refType\n };\n}\n\n/**\n * Type guard to check if a value is a RecordDef\n */\nexport function isRecordDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.RECORD && \"fields\" in value;\n}\n\n/**\n * Type guard to check if a value is a UnionDef\n */\nexport function isUnionDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.UNION && \"variants\" in value;\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\nimport { modelToRef } from \"./utils.js\";\nexport function defineUnion(name, {\n discriminant = \"type\",\n docs,\n variants\n}) {\n const entries = Object.entries(variants).map(([key, value]) => [key, resolveUnionVariantArg(value)]);\n const resolvedVariants = Object.fromEntries(entries);\n return {\n type: ModelDefType.UNION,\n discriminant,\n name,\n docs,\n variants: resolvedVariants\n };\n}\nexport function resolveUnionVariantArg(arg) {\n const resolved = typeof arg === \"function\" ? arg() : arg;\n return resolved.type === TypeKind.REF ? resolved : modelToRef(resolved);\n}","/*\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 { resolveUnionVariantArg } from \"./defineUnion.js\";\nimport { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef } from \"./utils.js\";\nclass UnionBuilderImpl {\n name;\n docs;\n variants;\n constructor({\n name,\n docs,\n variants\n }) {\n this.name = name;\n this.docs = docs;\n this.variants = {\n ...variants\n };\n }\n addVariant(variantName, modelDefOrRef) {\n const ref = resolveUnionVariantArg(modelDefOrRef);\n const newVariants = {\n ...this.variants,\n [variantName]: ref\n };\n return new UnionBuilderImpl({\n type: ModelDefType.UNION,\n name: this.name,\n variants: newVariants,\n discriminant: \"type\"\n });\n }\n build() {\n return {\n type: ModelDefType.UNION,\n variants: this.variants,\n discriminant: \"type\",\n name: this.name\n };\n }\n}\nclass RecordBuilderImpl {\n name;\n fields;\n constructor(initialRecordDef) {\n this.name = initialRecordDef.name;\n this.fields = {\n ...initialRecordDef.fields\n };\n }\n\n // TODO: resolve field value from arg instead\n addField(name, value) {\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: {\n ...this.fields,\n [name]: value\n },\n docs: \"\"\n });\n }\n build() {\n return {\n type: ModelDefType.RECORD,\n name: this.name,\n fields: this.fields,\n docs: \"\"\n };\n }\n}\nexport function defineMigration(previous, migration) {\n /**\n * Create a map of builders for the schema.\n *\n * Note about type assertions:\n * We use a type assertion here (SchemaBuilder<T>) because TypeScript cannot\n * track the relationship between the keys in the original schema and the\n * corresponding builder types. This is a fundamental limitation of TypeScript's\n * type system when dealing with dynamically constructed objects.\n *\n * The assertion is safe because:\n * 1. We're only adding keys that exist in the original schema\n * 2. For each key, we're creating a builder of the correct type\n * 3. The resulting object exactly matches the SchemaBuilder<T> type\n */\n const builders = {};\n for (const key in previous) {\n const v = previous[key];\n\n // Use our type guards for safer type narrowing\n if (isRecordDef(v)) {\n // This assertion is necessary because TypeScript can't track the field types\n // through the dynamic property access and object construction\n const recordBuilder = new RecordBuilderImpl(v);\n builders[key] = recordBuilder;\n } else if (isUnionDef(v)) {\n // Similar assertion needed for union builders\n const unionBuilder = new UnionBuilderImpl(v);\n builders[key] = unionBuilder;\n }\n }\n return {\n ...previous,\n ...migration(builders)\n };\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef, modelToRef } from \"./utils.js\";\n/**\n * Helper function to resolve a field value, handling functions and transforming\n * types as needed.\n */\nfunction resolveFieldArg(value) {\n // Handle function values\n const resolved = typeof value === \"function\" ? value() : value;\n if (isRecordDef(resolved) || isUnionDef(resolved)) {\n return modelToRef(resolved);\n }\n\n // For primitive types and other Types\n return resolved;\n}\nexport function defineRecord(name, record) {\n const entries = Object.entries(record.fields).map(([key, value]) => [key, resolveFieldArg(value)]);\n const fields = Object.fromEntries(entries);\n return {\n type: ModelDefType.RECORD,\n name: name,\n docs: record.docs,\n fields\n };\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/defs.ts","../../src/primitives.ts","../../src/utils.ts","../../src/defineUnion.ts","../../src/defineMigration.ts","../../src/defineRecord.ts","../../src/defineSchemaUpdate.ts"],"names":[],"mappings":"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","file":"index.js","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\nexport const ModelDefType = {\n RECORD: \"record\",\n UNION: \"union\"\n};","/*\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\nexport const TypeKind = {\n ARRAY: \"array\",\n BOOLEAN: \"boolean\",\n DOC_REF: \"docRef\",\n DOUBLE: \"double\",\n MEDIA_REF: \"mediaRef\",\n OBJECT_REF: \"objectRef\",\n OPTIONAL: \"optional\",\n REF: \"ref\",\n STRING: \"string\",\n UNKNOWN: \"unknown\",\n USER_REF: \"userRef\"\n};\n\n// Forward declaration to avoid circular reference\n\n// A reference to a record or a union type\n\nexport const String = {\n type: TypeKind.STRING\n};\nexport const Double = {\n type: TypeKind.DOUBLE\n};\nexport const Boolean = {\n type: TypeKind.BOOLEAN\n};\nexport const Unknown = {\n type: TypeKind.UNKNOWN\n};\nexport const Array = item => ({\n type: TypeKind.ARRAY,\n items: item\n});\nexport const Optional = item => ({\n type: TypeKind.OPTIONAL,\n item\n});","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\n\n/**\n * Helper function to safely transform a record definition to a reference.\n * This function helps TypeScript track type transformations better.\n */\nexport function modelToRef(model) {\n return createRef(model.name, model.type);\n}\n\n/**\n * Helper function to create a reference with proper typing.\n * This avoids type assertions in multiple places.\n */\nexport function createRef(name, refType) {\n return {\n type: TypeKind.REF,\n name,\n refType\n };\n}\n\n/**\n * Type guard to check if a value is a RecordDef\n */\nexport function isRecordDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.RECORD && \"fields\" in value;\n}\n\n/**\n * Type guard to check if a value is a UnionDef\n */\nexport function isUnionDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.UNION && \"variants\" in value;\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\nimport { modelToRef } from \"./utils.js\";\nexport function defineUnion(name, {\n discriminant = \"type\",\n docs,\n variants\n}) {\n const entries = Object.entries(variants).map(([key, value]) => [key, resolveUnionVariantArg(value)]);\n const resolvedVariants = Object.fromEntries(entries);\n return {\n type: ModelDefType.UNION,\n discriminant,\n name,\n docs,\n variants: resolvedVariants\n };\n}\nexport function resolveUnionVariantArg(arg) {\n const resolved = typeof arg === \"function\" ? arg() : arg;\n return resolved.type === TypeKind.REF ? resolved : modelToRef(resolved);\n}","/*\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 { resolveUnionVariantArg } from \"./defineUnion.js\";\nimport { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef } from \"./utils.js\";\n\n/** Soon to be deprecated - Use `ModelDefs` instead. */\n\n/** Soon to be deprecated - use `ModelDefs` instead. */\n\nclass UnionBuilderImpl {\n name;\n docs;\n variants;\n constructor({\n name,\n docs,\n variants\n }) {\n this.name = name;\n this.docs = docs;\n this.variants = {\n ...variants\n };\n }\n addVariant(variantName, modelDefOrRef) {\n const ref = resolveUnionVariantArg(modelDefOrRef);\n const newVariants = {\n ...this.variants,\n [variantName]: ref\n };\n return new UnionBuilderImpl({\n type: ModelDefType.UNION,\n name: this.name,\n variants: newVariants,\n discriminant: \"type\"\n });\n }\n build() {\n return {\n type: ModelDefType.UNION,\n variants: this.variants,\n discriminant: \"type\",\n name: this.name\n };\n }\n}\nclass RecordBuilderImpl {\n name;\n fields;\n constructor(initialRecordDef) {\n this.name = initialRecordDef.name;\n this.fields = {\n ...initialRecordDef.fields\n };\n }\n\n // TODO: resolve field value from arg instead\n addField(name, value) {\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: {\n ...this.fields,\n [name]: value\n },\n docs: \"\"\n });\n }\n build() {\n return {\n type: ModelDefType.RECORD,\n name: this.name,\n fields: this.fields,\n docs: \"\"\n };\n }\n}\nexport function defineMigration(models, migration) {\n const builders = {};\n for (const key in models) {\n const v = models[key];\n if (isRecordDef(v)) {\n const recordBuilder = new RecordBuilderImpl(v);\n builders[key] = recordBuilder;\n } else if (isUnionDef(v)) {\n const unionBuilder = new UnionBuilderImpl(v);\n builders[key] = unionBuilder;\n }\n }\n return {\n ...models,\n ...migration(builders)\n };\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef, modelToRef } from \"./utils.js\";\n/**\n * Helper function to resolve a field value, handling functions and transforming\n * types as needed.\n */\nfunction resolveFieldArg(value) {\n // Handle function values\n const resolved = typeof value === \"function\" ? value() : value;\n if (isRecordDef(resolved) || isUnionDef(resolved)) {\n return modelToRef(resolved);\n }\n\n // For primitive types and other Types\n return resolved;\n}\nexport function defineRecord(name, record) {\n const entries = Object.entries(record.fields).map(([key, value]) => [key, resolveFieldArg(value)]);\n const fields = Object.fromEntries(entries);\n return {\n type: ModelDefType.RECORD,\n name: name,\n docs: record.docs,\n fields\n };\n}","/*\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 { defineMigration } from \"./defineMigration.js\";\nexport function defineSchema(models) {\n return {\n type: \"initial\",\n version: 1,\n models\n };\n}\nexport function defineSchemaUpdate(name, migration) {\n return {\n name,\n migration\n };\n}\nclass SchemaVersionBuilderImpl {\n models;\n version;\n previous;\n _migrations;\n constructor(models, version, previous, migrations) {\n this.models = models;\n this.version = version;\n this.previous = previous;\n this._migrations = migrations;\n }\n addSchemaUpdate(update) {\n const merged = defineMigration(this.models, update.migration);\n return new SchemaVersionBuilderImpl(merged, this.version, this.previous, this._migrations);\n }\n withMigrations(migrations) {\n return new SchemaVersionBuilderImpl(this.models, this.version, this.previous, migrations);\n }\n build() {\n return {\n type: \"versioned\",\n models: {\n ...this.models\n },\n version: this.version,\n previous: this.previous,\n ...(this._migrations != null ? {\n migrations: this._migrations\n } : {})\n };\n }\n}\nexport function nextSchema(previous) {\n return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);\n}"]}
|
package/build/cjs/index.cjs
CHANGED
|
@@ -148,10 +148,10 @@ var RecordBuilderImpl = class _RecordBuilderImpl {
|
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
|
-
function defineMigration(
|
|
151
|
+
function defineMigration(models, migration) {
|
|
152
152
|
const builders = {};
|
|
153
|
-
for (const key in
|
|
154
|
-
const v =
|
|
153
|
+
for (const key in models) {
|
|
154
|
+
const v = models[key];
|
|
155
155
|
if (isRecordDef(v)) {
|
|
156
156
|
const recordBuilder = new RecordBuilderImpl(v);
|
|
157
157
|
builders[key] = recordBuilder;
|
|
@@ -161,7 +161,7 @@ function defineMigration(previous, migration) {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
return {
|
|
164
|
-
...
|
|
164
|
+
...models,
|
|
165
165
|
...migration(builders)
|
|
166
166
|
};
|
|
167
167
|
}
|
|
@@ -185,6 +185,56 @@ function defineRecord(name, record) {
|
|
|
185
185
|
};
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
+
// src/defineSchemaUpdate.ts
|
|
189
|
+
function defineSchema(models) {
|
|
190
|
+
return {
|
|
191
|
+
type: "initial",
|
|
192
|
+
version: 1,
|
|
193
|
+
models
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function defineSchemaUpdate(name, migration) {
|
|
197
|
+
return {
|
|
198
|
+
name,
|
|
199
|
+
migration
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
var SchemaVersionBuilderImpl = class _SchemaVersionBuilderImpl {
|
|
203
|
+
models;
|
|
204
|
+
version;
|
|
205
|
+
previous;
|
|
206
|
+
_migrations;
|
|
207
|
+
constructor(models, version, previous, migrations) {
|
|
208
|
+
this.models = models;
|
|
209
|
+
this.version = version;
|
|
210
|
+
this.previous = previous;
|
|
211
|
+
this._migrations = migrations;
|
|
212
|
+
}
|
|
213
|
+
addSchemaUpdate(update) {
|
|
214
|
+
const merged = defineMigration(this.models, update.migration);
|
|
215
|
+
return new _SchemaVersionBuilderImpl(merged, this.version, this.previous, this._migrations);
|
|
216
|
+
}
|
|
217
|
+
withMigrations(migrations) {
|
|
218
|
+
return new _SchemaVersionBuilderImpl(this.models, this.version, this.previous, migrations);
|
|
219
|
+
}
|
|
220
|
+
build() {
|
|
221
|
+
return {
|
|
222
|
+
type: "versioned",
|
|
223
|
+
models: {
|
|
224
|
+
...this.models
|
|
225
|
+
},
|
|
226
|
+
version: this.version,
|
|
227
|
+
previous: this.previous,
|
|
228
|
+
...this._migrations != null ? {
|
|
229
|
+
migrations: this._migrations
|
|
230
|
+
} : {}
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
function nextSchema(previous) {
|
|
235
|
+
return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);
|
|
236
|
+
}
|
|
237
|
+
|
|
188
238
|
exports.Array = Array;
|
|
189
239
|
exports.Boolean = Boolean;
|
|
190
240
|
exports.Double = Double;
|
|
@@ -196,10 +246,13 @@ exports.Unknown = Unknown;
|
|
|
196
246
|
exports.createRef = createRef;
|
|
197
247
|
exports.defineMigration = defineMigration;
|
|
198
248
|
exports.defineRecord = defineRecord;
|
|
249
|
+
exports.defineSchema = defineSchema;
|
|
250
|
+
exports.defineSchemaUpdate = defineSchemaUpdate;
|
|
199
251
|
exports.defineUnion = defineUnion;
|
|
200
252
|
exports.isRecordDef = isRecordDef;
|
|
201
253
|
exports.isUnionDef = isUnionDef;
|
|
202
254
|
exports.modelToRef = modelToRef;
|
|
255
|
+
exports.nextSchema = nextSchema;
|
|
203
256
|
exports.resolveUnionVariantArg = resolveUnionVariantArg;
|
|
204
257
|
//# sourceMappingURL=index.cjs.map
|
|
205
258
|
//# sourceMappingURL=index.cjs.map
|
package/build/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/defs.ts","../../src/primitives.ts","../../src/utils.ts","../../src/defineUnion.ts","../../src/defineMigration.ts","../../src/defineRecord.ts"],"names":[],"mappings":"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","file":"index.cjs","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\nexport const ModelDefType = {\n RECORD: \"record\",\n UNION: \"union\"\n};","/*\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\nexport const TypeKind = {\n ARRAY: \"array\",\n BOOLEAN: \"boolean\",\n DOC_REF: \"docRef\",\n DOUBLE: \"double\",\n MEDIA_REF: \"mediaRef\",\n OBJECT_REF: \"objectRef\",\n OPTIONAL: \"optional\",\n REF: \"ref\",\n STRING: \"string\",\n UNKNOWN: \"unknown\",\n USER_REF: \"userRef\"\n};\n\n// Forward declaration to avoid circular reference\n\n// A reference to a record or a union type\n\nexport const String = {\n type: TypeKind.STRING\n};\nexport const Double = {\n type: TypeKind.DOUBLE\n};\nexport const Boolean = {\n type: TypeKind.BOOLEAN\n};\nexport const Unknown = {\n type: TypeKind.UNKNOWN\n};\nexport const Array = item => ({\n type: TypeKind.ARRAY,\n items: item\n});\nexport const Optional = item => ({\n type: TypeKind.OPTIONAL,\n item\n});","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\n\n/**\n * Helper function to safely transform a record definition to a reference.\n * This function helps TypeScript track type transformations better.\n */\nexport function modelToRef(model) {\n return createRef(model.name, model.type);\n}\n\n/**\n * Helper function to create a reference with proper typing.\n * This avoids type assertions in multiple places.\n */\nexport function createRef(name, refType) {\n return {\n type: TypeKind.REF,\n name,\n refType\n };\n}\n\n/**\n * Type guard to check if a value is a RecordDef\n */\nexport function isRecordDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.RECORD && \"fields\" in value;\n}\n\n/**\n * Type guard to check if a value is a UnionDef\n */\nexport function isUnionDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.UNION && \"variants\" in value;\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\nimport { modelToRef } from \"./utils.js\";\nexport function defineUnion(name, {\n discriminant = \"type\",\n docs,\n variants\n}) {\n const entries = Object.entries(variants).map(([key, value]) => [key, resolveUnionVariantArg(value)]);\n const resolvedVariants = Object.fromEntries(entries);\n return {\n type: ModelDefType.UNION,\n discriminant,\n name,\n docs,\n variants: resolvedVariants\n };\n}\nexport function resolveUnionVariantArg(arg) {\n const resolved = typeof arg === \"function\" ? arg() : arg;\n return resolved.type === TypeKind.REF ? resolved : modelToRef(resolved);\n}","/*\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 { resolveUnionVariantArg } from \"./defineUnion.js\";\nimport { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef } from \"./utils.js\";\nclass UnionBuilderImpl {\n name;\n docs;\n variants;\n constructor({\n name,\n docs,\n variants\n }) {\n this.name = name;\n this.docs = docs;\n this.variants = {\n ...variants\n };\n }\n addVariant(variantName, modelDefOrRef) {\n const ref = resolveUnionVariantArg(modelDefOrRef);\n const newVariants = {\n ...this.variants,\n [variantName]: ref\n };\n return new UnionBuilderImpl({\n type: ModelDefType.UNION,\n name: this.name,\n variants: newVariants,\n discriminant: \"type\"\n });\n }\n build() {\n return {\n type: ModelDefType.UNION,\n variants: this.variants,\n discriminant: \"type\",\n name: this.name\n };\n }\n}\nclass RecordBuilderImpl {\n name;\n fields;\n constructor(initialRecordDef) {\n this.name = initialRecordDef.name;\n this.fields = {\n ...initialRecordDef.fields\n };\n }\n\n // TODO: resolve field value from arg instead\n addField(name, value) {\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: {\n ...this.fields,\n [name]: value\n },\n docs: \"\"\n });\n }\n build() {\n return {\n type: ModelDefType.RECORD,\n name: this.name,\n fields: this.fields,\n docs: \"\"\n };\n }\n}\nexport function defineMigration(previous, migration) {\n /**\n * Create a map of builders for the schema.\n *\n * Note about type assertions:\n * We use a type assertion here (SchemaBuilder<T>) because TypeScript cannot\n * track the relationship between the keys in the original schema and the\n * corresponding builder types. This is a fundamental limitation of TypeScript's\n * type system when dealing with dynamically constructed objects.\n *\n * The assertion is safe because:\n * 1. We're only adding keys that exist in the original schema\n * 2. For each key, we're creating a builder of the correct type\n * 3. The resulting object exactly matches the SchemaBuilder<T> type\n */\n const builders = {};\n for (const key in previous) {\n const v = previous[key];\n\n // Use our type guards for safer type narrowing\n if (isRecordDef(v)) {\n // This assertion is necessary because TypeScript can't track the field types\n // through the dynamic property access and object construction\n const recordBuilder = new RecordBuilderImpl(v);\n builders[key] = recordBuilder;\n } else if (isUnionDef(v)) {\n // Similar assertion needed for union builders\n const unionBuilder = new UnionBuilderImpl(v);\n builders[key] = unionBuilder;\n }\n }\n return {\n ...previous,\n ...migration(builders)\n };\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef, modelToRef } from \"./utils.js\";\n/**\n * Helper function to resolve a field value, handling functions and transforming\n * types as needed.\n */\nfunction resolveFieldArg(value) {\n // Handle function values\n const resolved = typeof value === \"function\" ? value() : value;\n if (isRecordDef(resolved) || isUnionDef(resolved)) {\n return modelToRef(resolved);\n }\n\n // For primitive types and other Types\n return resolved;\n}\nexport function defineRecord(name, record) {\n const entries = Object.entries(record.fields).map(([key, value]) => [key, resolveFieldArg(value)]);\n const fields = Object.fromEntries(entries);\n return {\n type: ModelDefType.RECORD,\n name: name,\n docs: record.docs,\n fields\n };\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/defs.ts","../../src/primitives.ts","../../src/utils.ts","../../src/defineUnion.ts","../../src/defineMigration.ts","../../src/defineRecord.ts","../../src/defineSchemaUpdate.ts"],"names":[],"mappings":"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","file":"index.cjs","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\nexport const ModelDefType = {\n RECORD: \"record\",\n UNION: \"union\"\n};","/*\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\nexport const TypeKind = {\n ARRAY: \"array\",\n BOOLEAN: \"boolean\",\n DOC_REF: \"docRef\",\n DOUBLE: \"double\",\n MEDIA_REF: \"mediaRef\",\n OBJECT_REF: \"objectRef\",\n OPTIONAL: \"optional\",\n REF: \"ref\",\n STRING: \"string\",\n UNKNOWN: \"unknown\",\n USER_REF: \"userRef\"\n};\n\n// Forward declaration to avoid circular reference\n\n// A reference to a record or a union type\n\nexport const String = {\n type: TypeKind.STRING\n};\nexport const Double = {\n type: TypeKind.DOUBLE\n};\nexport const Boolean = {\n type: TypeKind.BOOLEAN\n};\nexport const Unknown = {\n type: TypeKind.UNKNOWN\n};\nexport const Array = item => ({\n type: TypeKind.ARRAY,\n items: item\n});\nexport const Optional = item => ({\n type: TypeKind.OPTIONAL,\n item\n});","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\n\n/**\n * Helper function to safely transform a record definition to a reference.\n * This function helps TypeScript track type transformations better.\n */\nexport function modelToRef(model) {\n return createRef(model.name, model.type);\n}\n\n/**\n * Helper function to create a reference with proper typing.\n * This avoids type assertions in multiple places.\n */\nexport function createRef(name, refType) {\n return {\n type: TypeKind.REF,\n name,\n refType\n };\n}\n\n/**\n * Type guard to check if a value is a RecordDef\n */\nexport function isRecordDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.RECORD && \"fields\" in value;\n}\n\n/**\n * Type guard to check if a value is a UnionDef\n */\nexport function isUnionDef(value) {\n return value != null && typeof value === \"object\" && \"type\" in value && value.type === ModelDefType.UNION && \"variants\" in value;\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { TypeKind } from \"./primitives.js\";\nimport { modelToRef } from \"./utils.js\";\nexport function defineUnion(name, {\n discriminant = \"type\",\n docs,\n variants\n}) {\n const entries = Object.entries(variants).map(([key, value]) => [key, resolveUnionVariantArg(value)]);\n const resolvedVariants = Object.fromEntries(entries);\n return {\n type: ModelDefType.UNION,\n discriminant,\n name,\n docs,\n variants: resolvedVariants\n };\n}\nexport function resolveUnionVariantArg(arg) {\n const resolved = typeof arg === \"function\" ? arg() : arg;\n return resolved.type === TypeKind.REF ? resolved : modelToRef(resolved);\n}","/*\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 { resolveUnionVariantArg } from \"./defineUnion.js\";\nimport { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef } from \"./utils.js\";\n\n/** Soon to be deprecated - Use `ModelDefs` instead. */\n\n/** Soon to be deprecated - use `ModelDefs` instead. */\n\nclass UnionBuilderImpl {\n name;\n docs;\n variants;\n constructor({\n name,\n docs,\n variants\n }) {\n this.name = name;\n this.docs = docs;\n this.variants = {\n ...variants\n };\n }\n addVariant(variantName, modelDefOrRef) {\n const ref = resolveUnionVariantArg(modelDefOrRef);\n const newVariants = {\n ...this.variants,\n [variantName]: ref\n };\n return new UnionBuilderImpl({\n type: ModelDefType.UNION,\n name: this.name,\n variants: newVariants,\n discriminant: \"type\"\n });\n }\n build() {\n return {\n type: ModelDefType.UNION,\n variants: this.variants,\n discriminant: \"type\",\n name: this.name\n };\n }\n}\nclass RecordBuilderImpl {\n name;\n fields;\n constructor(initialRecordDef) {\n this.name = initialRecordDef.name;\n this.fields = {\n ...initialRecordDef.fields\n };\n }\n\n // TODO: resolve field value from arg instead\n addField(name, value) {\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: {\n ...this.fields,\n [name]: value\n },\n docs: \"\"\n });\n }\n build() {\n return {\n type: ModelDefType.RECORD,\n name: this.name,\n fields: this.fields,\n docs: \"\"\n };\n }\n}\nexport function defineMigration(models, migration) {\n const builders = {};\n for (const key in models) {\n const v = models[key];\n if (isRecordDef(v)) {\n const recordBuilder = new RecordBuilderImpl(v);\n builders[key] = recordBuilder;\n } else if (isUnionDef(v)) {\n const unionBuilder = new UnionBuilderImpl(v);\n builders[key] = unionBuilder;\n }\n }\n return {\n ...models,\n ...migration(builders)\n };\n}","/*\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 { ModelDefType } from \"./defs.js\";\nimport { isRecordDef, isUnionDef, modelToRef } from \"./utils.js\";\n/**\n * Helper function to resolve a field value, handling functions and transforming\n * types as needed.\n */\nfunction resolveFieldArg(value) {\n // Handle function values\n const resolved = typeof value === \"function\" ? value() : value;\n if (isRecordDef(resolved) || isUnionDef(resolved)) {\n return modelToRef(resolved);\n }\n\n // For primitive types and other Types\n return resolved;\n}\nexport function defineRecord(name, record) {\n const entries = Object.entries(record.fields).map(([key, value]) => [key, resolveFieldArg(value)]);\n const fields = Object.fromEntries(entries);\n return {\n type: ModelDefType.RECORD,\n name: name,\n docs: record.docs,\n fields\n };\n}","/*\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 { defineMigration } from \"./defineMigration.js\";\nexport function defineSchema(models) {\n return {\n type: \"initial\",\n version: 1,\n models\n };\n}\nexport function defineSchemaUpdate(name, migration) {\n return {\n name,\n migration\n };\n}\nclass SchemaVersionBuilderImpl {\n models;\n version;\n previous;\n _migrations;\n constructor(models, version, previous, migrations) {\n this.models = models;\n this.version = version;\n this.previous = previous;\n this._migrations = migrations;\n }\n addSchemaUpdate(update) {\n const merged = defineMigration(this.models, update.migration);\n return new SchemaVersionBuilderImpl(merged, this.version, this.previous, this._migrations);\n }\n withMigrations(migrations) {\n return new SchemaVersionBuilderImpl(this.models, this.version, this.previous, migrations);\n }\n build() {\n return {\n type: \"versioned\",\n models: {\n ...this.models\n },\n version: this.version,\n previous: this.previous,\n ...(this._migrations != null ? {\n migrations: this._migrations\n } : {})\n };\n }\n}\nexport function nextSchema(previous) {\n return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);\n}"]}
|
package/build/cjs/index.d.cts
CHANGED
|
@@ -82,6 +82,7 @@ interface RecordDef<TFields extends RecordFields = RecordFields> extends ModelDe
|
|
|
82
82
|
readonly fields: TFields;
|
|
83
83
|
}
|
|
84
84
|
type ModelDef = RecordDef | UnionDef;
|
|
85
|
+
type ModelDefs = Record<string, ModelDef>;
|
|
85
86
|
|
|
86
87
|
type UnionVariantArgExplicit = Ref | ModelDef;
|
|
87
88
|
type UnionVariantArg = UnionVariantArgExplicit | (() => UnionVariantArgExplicit);
|
|
@@ -102,9 +103,11 @@ type UnionArgs<T extends UnionVariantArgs> = {
|
|
|
102
103
|
declare function defineUnion<const TVariants extends UnionVariantArgs>(name: string, { discriminant, docs, variants, }: UnionArgs<TVariants>): UnionDef<ResolvedUnionVariants<TVariants>>;
|
|
103
104
|
declare function resolveUnionVariantArg(arg: UnionVariantArg): Ref;
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
type
|
|
107
|
-
|
|
106
|
+
/** Soon to be deprecated - Use `ModelDefs` instead. */
|
|
107
|
+
type ReturnedSchema = ModelDefs;
|
|
108
|
+
/** Soon to be deprecated - use `ModelDefs` instead. */
|
|
109
|
+
type Schema<T extends ModelDefs> = T;
|
|
110
|
+
type SchemaBuilder<T extends ModelDefs> = {
|
|
108
111
|
[k in keyof T]: T[k] extends UnionDef<infer R> ? UnionBuilder<R> : T[k] extends RecordDef<infer R> ? RecordBuilder<R> : never;
|
|
109
112
|
};
|
|
110
113
|
interface RecordBuilder<T extends Record<string, Type>> {
|
|
@@ -119,7 +122,7 @@ interface UnionBuilder<S extends UnionVariants> {
|
|
|
119
122
|
}>;
|
|
120
123
|
build(): UnionDef<S>;
|
|
121
124
|
}
|
|
122
|
-
declare function defineMigration<const T extends
|
|
125
|
+
declare function defineMigration<const T extends ModelDefs, const S extends ModelDefs>(models: T, migration: (schema: SchemaBuilder<T>) => S): T & S;
|
|
123
126
|
|
|
124
127
|
type FieldArgExplicit = Type | RecordDef | UnionDef;
|
|
125
128
|
type FieldArg = FieldArgExplicit | (() => FieldArgExplicit);
|
|
@@ -136,6 +139,37 @@ type RecordArgs<T extends FieldArgs> = {
|
|
|
136
139
|
};
|
|
137
140
|
declare function defineRecord<const T extends FieldArgs>(name: string, record: RecordArgs<T>): RecordDef<ResolvedFields<T>>;
|
|
138
141
|
|
|
142
|
+
interface InitialSchema<T extends ModelDefs = ModelDefs> {
|
|
143
|
+
readonly type: "initial";
|
|
144
|
+
readonly version: 1;
|
|
145
|
+
readonly models: T;
|
|
146
|
+
}
|
|
147
|
+
interface FieldMigration {
|
|
148
|
+
readonly derivedFrom: readonly string[];
|
|
149
|
+
readonly forward: (oldFields: Record<string, unknown>) => unknown;
|
|
150
|
+
}
|
|
151
|
+
type VersionMigrations = Record<string, Record<string, FieldMigration>>;
|
|
152
|
+
interface VersionedSchema<T extends ModelDefs = ModelDefs> {
|
|
153
|
+
readonly type: "versioned";
|
|
154
|
+
readonly models: T;
|
|
155
|
+
readonly version: number;
|
|
156
|
+
readonly previous: SchemaDefinition;
|
|
157
|
+
readonly migrations?: VersionMigrations;
|
|
158
|
+
}
|
|
159
|
+
type SchemaDefinition<T extends ModelDefs = ModelDefs> = InitialSchema<T> | VersionedSchema<T>;
|
|
160
|
+
declare function defineSchema<T extends ModelDefs>(models: T): InitialSchema<T>;
|
|
161
|
+
interface SchemaUpdate<T extends ModelDefs, S extends ModelDefs> {
|
|
162
|
+
readonly name: string;
|
|
163
|
+
readonly migration: (schema: SchemaBuilder<T>) => S;
|
|
164
|
+
}
|
|
165
|
+
declare function defineSchemaUpdate<T extends ModelDefs, S extends ModelDefs>(name: string, migration: (schema: SchemaBuilder<T>) => S): SchemaUpdate<T, S>;
|
|
166
|
+
interface SchemaVersionBuilder<T extends ModelDefs> {
|
|
167
|
+
addSchemaUpdate<S extends ModelDefs>(update: SchemaUpdate<T, S>): SchemaVersionBuilder<T & S>;
|
|
168
|
+
withMigrations(migrations: VersionMigrations): SchemaVersionBuilder<T>;
|
|
169
|
+
build(): VersionedSchema<T>;
|
|
170
|
+
}
|
|
171
|
+
declare function nextSchema<T extends ModelDefs>(previous: SchemaDefinition<T>): SchemaVersionBuilder<T>;
|
|
172
|
+
|
|
139
173
|
/**
|
|
140
174
|
* Helper function to safely transform a record definition to a reference.
|
|
141
175
|
* This function helps TypeScript track type transformations better.
|
|
@@ -155,4 +189,4 @@ declare function isRecordDef(value: unknown): value is RecordDef;
|
|
|
155
189
|
*/
|
|
156
190
|
declare function isUnionDef(value: unknown): value is UnionDef;
|
|
157
191
|
|
|
158
|
-
export { Array, Boolean, type DocRef, Double, type FieldArg, type FieldArgExplicit, type FieldArgExplicitOf, type FieldArgs, type MediaRef, type ModelDef, ModelDefType, type ObjectRef, Optional, type RecordArgs, type RecordBuilder, type RecordDef, type RecordFields, type Ref, type ResolvedFieldArg, type ResolvedFieldArgExplicit, type ResolvedFields, type ResolvedUnionVariants, type ReturnedSchema, type Schema, type SchemaBuilder, String, type Type, TypeKind, type UnionArgs, type UnionBuilder, type UnionDef, type UnionVariantArg, type UnionVariantArgExplicit, type UnionVariantArgs, type UnionVariants, Unknown, type UserRef, createRef, defineMigration, defineRecord, defineUnion, isRecordDef, isUnionDef, modelToRef, resolveUnionVariantArg };
|
|
192
|
+
export { Array, Boolean, type DocRef, Double, type FieldArg, type FieldArgExplicit, type FieldArgExplicitOf, type FieldArgs, type FieldMigration, type InitialSchema, type MediaRef, type ModelDef, ModelDefType, type ModelDefs, type ObjectRef, Optional, type RecordArgs, type RecordBuilder, type RecordDef, type RecordFields, type Ref, type ResolvedFieldArg, type ResolvedFieldArgExplicit, type ResolvedFields, type ResolvedUnionVariants, type ReturnedSchema, type Schema, type SchemaBuilder, type SchemaDefinition, type SchemaUpdate, type SchemaVersionBuilder, String, type Type, TypeKind, type UnionArgs, type UnionBuilder, type UnionDef, type UnionVariantArg, type UnionVariantArgExplicit, type UnionVariantArgs, type UnionVariants, Unknown, type UserRef, type VersionMigrations, type VersionedSchema, createRef, defineMigration, defineRecord, defineSchema, defineSchemaUpdate, defineUnion, isRecordDef, isUnionDef, modelToRef, nextSchema, resolveUnionVariantArg };
|
package/build/esm/index.js
CHANGED
|
@@ -146,10 +146,10 @@ var RecordBuilderImpl = class _RecordBuilderImpl {
|
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
|
-
function defineMigration(
|
|
149
|
+
function defineMigration(models, migration) {
|
|
150
150
|
const builders = {};
|
|
151
|
-
for (const key in
|
|
152
|
-
const v =
|
|
151
|
+
for (const key in models) {
|
|
152
|
+
const v = models[key];
|
|
153
153
|
if (isRecordDef(v)) {
|
|
154
154
|
const recordBuilder = new RecordBuilderImpl(v);
|
|
155
155
|
builders[key] = recordBuilder;
|
|
@@ -159,7 +159,7 @@ function defineMigration(previous, migration) {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
return {
|
|
162
|
-
...
|
|
162
|
+
...models,
|
|
163
163
|
...migration(builders)
|
|
164
164
|
};
|
|
165
165
|
}
|
|
@@ -183,6 +183,56 @@ function defineRecord(name, record) {
|
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
// src/defineSchemaUpdate.ts
|
|
187
|
+
function defineSchema(models) {
|
|
188
|
+
return {
|
|
189
|
+
type: "initial",
|
|
190
|
+
version: 1,
|
|
191
|
+
models
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function defineSchemaUpdate(name, migration) {
|
|
195
|
+
return {
|
|
196
|
+
name,
|
|
197
|
+
migration
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
var SchemaVersionBuilderImpl = class _SchemaVersionBuilderImpl {
|
|
201
|
+
models;
|
|
202
|
+
version;
|
|
203
|
+
previous;
|
|
204
|
+
_migrations;
|
|
205
|
+
constructor(models, version, previous, migrations) {
|
|
206
|
+
this.models = models;
|
|
207
|
+
this.version = version;
|
|
208
|
+
this.previous = previous;
|
|
209
|
+
this._migrations = migrations;
|
|
210
|
+
}
|
|
211
|
+
addSchemaUpdate(update) {
|
|
212
|
+
const merged = defineMigration(this.models, update.migration);
|
|
213
|
+
return new _SchemaVersionBuilderImpl(merged, this.version, this.previous, this._migrations);
|
|
214
|
+
}
|
|
215
|
+
withMigrations(migrations) {
|
|
216
|
+
return new _SchemaVersionBuilderImpl(this.models, this.version, this.previous, migrations);
|
|
217
|
+
}
|
|
218
|
+
build() {
|
|
219
|
+
return {
|
|
220
|
+
type: "versioned",
|
|
221
|
+
models: {
|
|
222
|
+
...this.models
|
|
223
|
+
},
|
|
224
|
+
version: this.version,
|
|
225
|
+
previous: this.previous,
|
|
226
|
+
...this._migrations != null ? {
|
|
227
|
+
migrations: this._migrations
|
|
228
|
+
} : {}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
function nextSchema(previous) {
|
|
233
|
+
return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export { Array, Boolean, Double, ModelDefType, Optional, String, TypeKind, Unknown, createRef, defineMigration, defineRecord, defineSchema, defineSchemaUpdate, defineUnion, isRecordDef, isUnionDef, modelToRef, nextSchema, resolveUnionVariantArg };
|
|
187
237
|
//# sourceMappingURL=index.js.map
|
|
188
238
|
//# sourceMappingURL=index.js.map
|