@palantir/pack.schema 0.4.0 → 0.6.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 +7 -4
- 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 +13 -0
- package/build/browser/index.js +162 -22
- package/build/browser/index.js.map +1 -1
- package/build/cjs/index.cjs +163 -22
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +52 -3
- package/build/esm/index.js +162 -22
- package/build/esm/index.js.map +1 -1
- package/build/types/__tests__/addFieldOptions.test.d.ts +1 -0
- package/build/types/__tests__/addFieldOptions.test.d.ts.map +1 -0
- package/build/types/defineMigration.d.ts +55 -1
- package/build/types/defineMigration.d.ts.map +1 -1
- package/build/types/defineSchemaUpdate.d.ts +0 -1
- package/build/types/defineSchemaUpdate.d.ts.map +1 -1
- package/build/types/primitives.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/addFieldOptions.test.ts +577 -0
- package/src/__tests__/primitives.test.ts +11 -24
- package/src/defineMigration.ts +220 -22
- package/src/defineSchemaUpdate.ts +66 -5
- package/src/primitives.ts +19 -8
package/build/esm/index.js
CHANGED
|
@@ -30,14 +30,27 @@ var Boolean = {
|
|
|
30
30
|
var Unknown = {
|
|
31
31
|
type: TypeKind.UNKNOWN
|
|
32
32
|
};
|
|
33
|
-
|
|
34
|
-
type
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
function unwrapOneOptional(t) {
|
|
34
|
+
return t.type === TypeKind.OPTIONAL && "item" in t ? t.item : t;
|
|
35
|
+
}
|
|
36
|
+
var Array2 = (item) => {
|
|
37
|
+
if (unwrapOneOptional(item).type === TypeKind.ARRAY) {
|
|
38
|
+
throw new Error("Nested arrays (Array(Array(...)) or Array(Optional(Array(...)))) are not supported. Wrap the inner array in a record instead.");
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
type: TypeKind.ARRAY,
|
|
42
|
+
items: item
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
var Optional = (item) => {
|
|
46
|
+
if (item.type === TypeKind.OPTIONAL) {
|
|
47
|
+
throw new Error("Nested optionals (Optional(Optional(...))) are not supported.");
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
type: TypeKind.OPTIONAL,
|
|
51
|
+
item
|
|
52
|
+
};
|
|
53
|
+
};
|
|
41
54
|
|
|
42
55
|
// src/utils.ts
|
|
43
56
|
function modelToRef(model) {
|
|
@@ -79,6 +92,34 @@ function resolveUnionVariantArg(arg) {
|
|
|
79
92
|
}
|
|
80
93
|
|
|
81
94
|
// src/defineMigration.ts
|
|
95
|
+
function assertJsonDefault(value, path) {
|
|
96
|
+
if (value === null) return;
|
|
97
|
+
const t = typeof value;
|
|
98
|
+
if (t === "undefined") {
|
|
99
|
+
throw new Error(`Invalid JSON default at ${path}: undefined is not valid JSON`);
|
|
100
|
+
}
|
|
101
|
+
if (t === "string" || t === "number" || t === "boolean") return;
|
|
102
|
+
if (t === "function" || t === "symbol" || t === "bigint") {
|
|
103
|
+
throw new Error(`Invalid JSON default at ${path}: ${t} is not valid JSON`);
|
|
104
|
+
}
|
|
105
|
+
if (Array.isArray(value)) {
|
|
106
|
+
for (let i = 0; i < value.length; i++) {
|
|
107
|
+
assertJsonDefault(value[i], `${path}[${i}]`);
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const proto = Object.getPrototypeOf(value);
|
|
112
|
+
if (proto !== Object.prototype && proto != null) {
|
|
113
|
+
const ctorName = value.constructor?.name ?? "non-plain object";
|
|
114
|
+
throw new Error(`Invalid JSON default at ${path}: ${ctorName} is not valid JSON`);
|
|
115
|
+
}
|
|
116
|
+
if (Object.getOwnPropertySymbols(value).length > 0) {
|
|
117
|
+
throw new Error(`Invalid JSON default at ${path}: symbol-keyed properties are not valid JSON`);
|
|
118
|
+
}
|
|
119
|
+
for (const [k, v] of Object.entries(value)) {
|
|
120
|
+
assertJsonDefault(v, `${path}.${k}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
82
123
|
var UnionBuilderImpl = class _UnionBuilderImpl {
|
|
83
124
|
name;
|
|
84
125
|
docs;
|
|
@@ -116,17 +157,27 @@ var UnionBuilderImpl = class _UnionBuilderImpl {
|
|
|
116
157
|
};
|
|
117
158
|
}
|
|
118
159
|
};
|
|
160
|
+
var UPGRADE_OPTIONS_CARRIER = "__pack_upgrade_options__";
|
|
119
161
|
var RecordBuilderImpl = class _RecordBuilderImpl {
|
|
120
162
|
name;
|
|
121
163
|
fields;
|
|
122
|
-
|
|
164
|
+
upgradeOptions;
|
|
165
|
+
constructor(initialRecordDef, upgradeOptions) {
|
|
123
166
|
this.name = initialRecordDef.name;
|
|
124
167
|
this.fields = {
|
|
125
168
|
...initialRecordDef.fields
|
|
126
169
|
};
|
|
170
|
+
this.upgradeOptions = new Map(upgradeOptions ?? []);
|
|
127
171
|
}
|
|
128
172
|
// TODO: resolve field value from arg instead
|
|
129
|
-
addField(name, value) {
|
|
173
|
+
addField(name, value, options) {
|
|
174
|
+
if (options != null && "default" in options && options.default !== void 0) {
|
|
175
|
+
assertJsonDefault(options.default, `addField("${name}").default`);
|
|
176
|
+
}
|
|
177
|
+
const next = new Map(this.upgradeOptions);
|
|
178
|
+
if (options != null) {
|
|
179
|
+
next.set(name, options);
|
|
180
|
+
}
|
|
130
181
|
return new _RecordBuilderImpl({
|
|
131
182
|
type: ModelDefType.RECORD,
|
|
132
183
|
name: this.name,
|
|
@@ -135,33 +186,82 @@ var RecordBuilderImpl = class _RecordBuilderImpl {
|
|
|
135
186
|
[name]: value
|
|
136
187
|
},
|
|
137
188
|
docs: ""
|
|
138
|
-
});
|
|
189
|
+
}, next);
|
|
190
|
+
}
|
|
191
|
+
removeField(name) {
|
|
192
|
+
const {
|
|
193
|
+
[name]: _removed,
|
|
194
|
+
...rest
|
|
195
|
+
} = this.fields;
|
|
196
|
+
const next = new Map(this.upgradeOptions);
|
|
197
|
+
next.delete(name);
|
|
198
|
+
return new _RecordBuilderImpl({
|
|
199
|
+
type: ModelDefType.RECORD,
|
|
200
|
+
name: this.name,
|
|
201
|
+
fields: rest,
|
|
202
|
+
docs: ""
|
|
203
|
+
}, next);
|
|
139
204
|
}
|
|
140
205
|
build() {
|
|
141
|
-
|
|
206
|
+
const result = {
|
|
142
207
|
type: ModelDefType.RECORD,
|
|
143
208
|
name: this.name,
|
|
144
209
|
fields: this.fields,
|
|
145
210
|
docs: ""
|
|
146
211
|
};
|
|
212
|
+
if (this.upgradeOptions.size > 0) {
|
|
213
|
+
Object.defineProperty(result, UPGRADE_OPTIONS_CARRIER, {
|
|
214
|
+
value: this.upgradeOptions,
|
|
215
|
+
enumerable: false,
|
|
216
|
+
configurable: true,
|
|
217
|
+
writable: false
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
147
221
|
}
|
|
148
222
|
};
|
|
149
|
-
function
|
|
223
|
+
function makeBuilders(models) {
|
|
150
224
|
const builders = {};
|
|
151
225
|
for (const key in models) {
|
|
152
226
|
const v = models[key];
|
|
153
227
|
if (isRecordDef(v)) {
|
|
154
|
-
|
|
155
|
-
builders[key] = recordBuilder;
|
|
228
|
+
builders[key] = new RecordBuilderImpl(v);
|
|
156
229
|
} else if (isUnionDef(v)) {
|
|
157
|
-
|
|
158
|
-
builders[key] = unionBuilder;
|
|
230
|
+
builders[key] = new UnionBuilderImpl(v);
|
|
159
231
|
}
|
|
160
232
|
}
|
|
161
|
-
return
|
|
233
|
+
return builders;
|
|
234
|
+
}
|
|
235
|
+
function applyMigration(models, migration) {
|
|
236
|
+
const builders = makeBuilders(models);
|
|
237
|
+
const merged = {
|
|
162
238
|
...models,
|
|
163
239
|
...migration(builders)
|
|
164
240
|
};
|
|
241
|
+
const upgrades = {};
|
|
242
|
+
for (const [modelKey, def] of Object.entries(merged)) {
|
|
243
|
+
if (!isRecordDef(def)) continue;
|
|
244
|
+
const carrier = def;
|
|
245
|
+
const opts = carrier[UPGRADE_OPTIONS_CARRIER];
|
|
246
|
+
if (opts == null) continue;
|
|
247
|
+
delete carrier[UPGRADE_OPTIONS_CARRIER];
|
|
248
|
+
const fieldEntries = {};
|
|
249
|
+
for (const [fieldName, options] of opts) {
|
|
250
|
+
if ("derivedFrom" in options) {
|
|
251
|
+
fieldEntries[fieldName] = options;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (Object.keys(fieldEntries).length > 0) {
|
|
255
|
+
upgrades[modelKey] = fieldEntries;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
models: merged,
|
|
260
|
+
upgrades: Object.keys(upgrades).length > 0 ? upgrades : void 0
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function defineMigration(models, migration) {
|
|
264
|
+
return applyMigration(models, migration).models;
|
|
165
265
|
}
|
|
166
266
|
|
|
167
267
|
// src/defineRecord.ts
|
|
@@ -197,6 +297,39 @@ function defineSchemaUpdate(name, migration) {
|
|
|
197
297
|
migration
|
|
198
298
|
};
|
|
199
299
|
}
|
|
300
|
+
function mergeMigrations(base, override) {
|
|
301
|
+
if (base == null) return override;
|
|
302
|
+
if (override == null) return base;
|
|
303
|
+
const result = {
|
|
304
|
+
...base
|
|
305
|
+
};
|
|
306
|
+
for (const [modelKey, fields] of Object.entries(override)) {
|
|
307
|
+
result[modelKey] = {
|
|
308
|
+
...result[modelKey],
|
|
309
|
+
...fields
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
function pruneMigrations(migrations, models) {
|
|
315
|
+
if (migrations == null) return void 0;
|
|
316
|
+
const result = {};
|
|
317
|
+
for (const [modelKey, fields] of Object.entries(migrations)) {
|
|
318
|
+
const def = models[modelKey];
|
|
319
|
+
if (def == null || def.type !== "record") continue;
|
|
320
|
+
const recordFields = def.fields;
|
|
321
|
+
const kept = {};
|
|
322
|
+
for (const [fieldName, migration] of Object.entries(fields)) {
|
|
323
|
+
if (fieldName in recordFields) {
|
|
324
|
+
kept[fieldName] = migration;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (Object.keys(kept).length > 0) {
|
|
328
|
+
result[modelKey] = kept;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return Object.keys(result).length > 0 ? result : void 0;
|
|
332
|
+
}
|
|
200
333
|
var SchemaVersionBuilderImpl = class _SchemaVersionBuilderImpl {
|
|
201
334
|
models;
|
|
202
335
|
version;
|
|
@@ -209,11 +342,18 @@ var SchemaVersionBuilderImpl = class _SchemaVersionBuilderImpl {
|
|
|
209
342
|
this._migrations = migrations;
|
|
210
343
|
}
|
|
211
344
|
addSchemaUpdate(update) {
|
|
212
|
-
const
|
|
213
|
-
|
|
345
|
+
const {
|
|
346
|
+
models,
|
|
347
|
+
upgrades
|
|
348
|
+
} = applyMigration(this.models, update.migration);
|
|
349
|
+
const merged = mergeMigrations(this._migrations, upgrades);
|
|
350
|
+
const pruned = pruneMigrations(merged, models);
|
|
351
|
+
return new _SchemaVersionBuilderImpl(models, this.version, this.previous, pruned);
|
|
214
352
|
}
|
|
215
353
|
withMigrations(migrations) {
|
|
216
|
-
|
|
354
|
+
const merged = mergeMigrations(this._migrations, migrations);
|
|
355
|
+
const pruned = pruneMigrations(merged, this.models);
|
|
356
|
+
return new _SchemaVersionBuilderImpl(this.models, this.version, this.previous, pruned);
|
|
217
357
|
}
|
|
218
358
|
build() {
|
|
219
359
|
return {
|
|
@@ -233,6 +373,6 @@ function nextSchema(previous) {
|
|
|
233
373
|
return new SchemaVersionBuilderImpl(previous.models, previous.version + 1, previous);
|
|
234
374
|
}
|
|
235
375
|
|
|
236
|
-
export { Array, Boolean, Double, ModelDefType, Optional, String, TypeKind, Unknown, createRef, defineMigration, defineRecord, defineSchema, defineSchemaUpdate, defineUnion, isRecordDef, isUnionDef, modelToRef, nextSchema, resolveUnionVariantArg };
|
|
376
|
+
export { Array2 as Array, Boolean, Double, ModelDefType, Optional, String, TypeKind, Unknown, applyMigration, createRef, defineMigration, defineRecord, defineSchema, defineSchemaUpdate, defineUnion, isRecordDef, isUnionDef, modelToRef, nextSchema, resolveUnionVariantArg };
|
|
237
377
|
//# sourceMappingURL=index.js.map
|
|
238
378
|
//# sourceMappingURL=index.js.map
|
package/build/esm/index.js.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","../../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}"]}
|
|
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":["Array"],"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};\nfunction unwrapOneOptional(t) {\n return t.type === TypeKind.OPTIONAL && \"item\" in t ? t.item : t;\n}\nexport const Array = item => {\n if (unwrapOneOptional(item).type === TypeKind.ARRAY) {\n throw new Error(\"Nested arrays (Array(Array(...)) or Array(Optional(Array(...)))) are not supported. \" + \"Wrap the inner array in a record instead.\");\n }\n return {\n type: TypeKind.ARRAY,\n items: item\n };\n};\nexport const Optional = item => {\n if (item.type === TypeKind.OPTIONAL) {\n throw new Error(\"Nested optionals (Optional(Optional(...))) are not supported.\");\n }\n return {\n type: TypeKind.OPTIONAL,\n item\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 { 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\n/**\n * Recursive literal-JSON type. Constrains schema-time `default` values to\n * data that JSON-serializes losslessly — no `Date`, `RegExp`, functions, class\n * instances, or `undefined`. Mirrors the `JsonValue` exported by\n * `@palantir/pack.document-schema.model-types`; kept local here to avoid a\n * package dependency from `pack.schema`.\n */\n\n/**\n * Upgrade options for a field whose value is derived from prior-version fields.\n * Supplied as the third argument to `addField`; surfaced by `applyMigration`\n * as part of `MigrationResult.upgrades`. Declares the structural dependency\n * (`derivedFrom`) and an optional literal JSON `default` used when no source\n * data exists. The runtime forward function is supplied separately via the\n * generated `DocumentModel(...)` factory's `UpgradeFns` parameter.\n */\n\n/**\n * Options for a purely additive field. `default` is literal JSON only;\n * validated at `addField()` call time.\n */\n\n/**\n * Recursively assert `value` is representable as literal JSON. Rejects `Date`,\n * `RegExp`, functions, class instances, symbol-keyed properties, `undefined`\n * (anywhere — top-level or nested), `symbol`, and `bigint`. Throws on the\n * first offending value, naming the path for debuggability.\n */\nfunction assertJsonDefault(value, path) {\n // eslint-disable-next-line eqeqeq -- need to distinguish null (valid JSON) from undefined (not).\n if (value === null) return;\n const t = typeof value;\n if (t === \"undefined\") {\n throw new Error(`Invalid JSON default at ${path}: undefined is not valid JSON`);\n }\n if (t === \"string\" || t === \"number\" || t === \"boolean\") return;\n if (t === \"function\" || t === \"symbol\" || t === \"bigint\") {\n throw new Error(`Invalid JSON default at ${path}: ${t} is not valid JSON`);\n }\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n assertJsonDefault(value[i], `${path}[${i}]`);\n }\n return;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto !== Object.prototype && proto != null) {\n const ctorName = value.constructor?.name ?? \"non-plain object\";\n throw new Error(`Invalid JSON default at ${path}: ${ctorName} is not valid JSON`);\n }\n if (Object.getOwnPropertySymbols(value).length > 0) {\n throw new Error(`Invalid JSON default at ${path}: symbol-keyed properties are not valid JSON`);\n }\n for (const [k, v] of Object.entries(value)) {\n assertJsonDefault(v, `${path}.${k}`);\n }\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}\n\n/**\n * Non-enumerable carrier property attached to a `RecordDef` by\n * `RecordBuilderImpl.build()` when the builder has collected one or more\n * `FieldOptions`. `applyMigration` reads this and then deletes the property,\n * so the `RecordDef` it returns is structurally clean (no extra keys, no\n * symbol-keyed metadata).\n */\nconst UPGRADE_OPTIONS_CARRIER = \"__pack_upgrade_options__\";\nclass RecordBuilderImpl {\n name;\n fields;\n upgradeOptions;\n constructor(initialRecordDef, upgradeOptions) {\n this.name = initialRecordDef.name;\n this.fields = {\n ...initialRecordDef.fields\n };\n // Upgrade options only flow forward within a single migration callback —\n // they are NOT inherited from the prior version's RecordDef, because each\n // version's upgrades describe a specific version transition.\n this.upgradeOptions = new Map(upgradeOptions ?? []);\n }\n\n // TODO: resolve field value from arg instead\n addField(name, value, options) {\n if (options != null && \"default\" in options && options.default !== undefined) {\n assertJsonDefault(options.default, `addField(\"${name}\").default`);\n }\n const next = new Map(this.upgradeOptions);\n if (options != null) {\n next.set(name, options);\n }\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: {\n ...this.fields,\n [name]: value\n },\n docs: \"\"\n }, next);\n }\n removeField(name) {\n const {\n [name]: _removed,\n ...rest\n } = this.fields;\n const next = new Map(this.upgradeOptions);\n next.delete(name);\n return new RecordBuilderImpl({\n type: ModelDefType.RECORD,\n name: this.name,\n fields: rest,\n docs: \"\"\n }, next);\n }\n build() {\n const result = {\n type: ModelDefType.RECORD,\n name: this.name,\n fields: this.fields,\n docs: \"\"\n };\n if (this.upgradeOptions.size > 0) {\n Object.defineProperty(result, UPGRADE_OPTIONS_CARRIER, {\n value: this.upgradeOptions,\n enumerable: false,\n configurable: true,\n writable: false\n });\n }\n return result;\n }\n}\nfunction makeBuilders(models) {\n const builders = {};\n for (const key in models) {\n const v = models[key];\n if (isRecordDef(v)) {\n builders[key] = new RecordBuilderImpl(v);\n } else if (isUnionDef(v)) {\n builders[key] = new UnionBuilderImpl(v);\n }\n }\n return builders;\n}\n\n/** Per-model field migrations: `[modelKey][fieldName]` → upgrade options. */\n\n/**\n * Lower-level entry point that returns both the merged models AND any\n * `UpgradeFieldOptions` collected via `addField(name, type, options)` during\n * the migration callback. Used by `addSchemaUpdate` to fold sugar-form\n * upgrades into a `VersionedSchema`'s migrations map.\n *\n * Each `RecordBuilderImpl.build()` attaches its collected options to the\n * produced `RecordDef` via a non-enumerable carrier property; this function\n * walks the merged result, extracts the options keyed by the user's chosen\n * output key (so renames are handled), and strips the carrier so the returned\n * `RecordDef`s are structurally clean.\n */\nexport function applyMigration(models, migration) {\n const builders = makeBuilders(models);\n const merged = {\n ...models,\n ...migration(builders)\n };\n const upgrades = {};\n for (const [modelKey, def] of Object.entries(merged)) {\n if (!isRecordDef(def)) continue;\n const carrier = def;\n const opts = carrier[UPGRADE_OPTIONS_CARRIER];\n if (opts == null) continue;\n // Strip the carrier so the returned RecordDef is structurally clean.\n delete carrier[UPGRADE_OPTIONS_CARRIER];\n const fieldEntries = {};\n for (const [fieldName, options] of opts) {\n // Only `UpgradeFieldOptions` (which declare `derivedFrom`) flow into the\n // upgrades map; `AdditiveFieldOptions` carry only a literal `default`\n // and have no read-time lens effect.\n if (\"derivedFrom\" in options) {\n fieldEntries[fieldName] = options;\n }\n }\n if (Object.keys(fieldEntries).length > 0) {\n upgrades[modelKey] = fieldEntries;\n }\n }\n return {\n models: merged,\n upgrades: Object.keys(upgrades).length > 0 ? upgrades : undefined\n };\n}\nexport function defineMigration(models, migration) {\n return applyMigration(models, migration).models;\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 { applyMigration } 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}\n/**\n * Merge two `VersionMigrations` records. Per-model field migrations from\n * `override` take precedence over `base` for the same field, but the maps are\n * combined at both the model and field level so explicit `withMigrations`\n * calls can supplement (not just replace) the sugar from `addField` options.\n */\nfunction mergeMigrations(base, override) {\n if (base == null) return override;\n if (override == null) return base;\n const result = {\n ...base\n };\n for (const [modelKey, fields] of Object.entries(override)) {\n result[modelKey] = {\n ...result[modelKey],\n ...fields\n };\n }\n return result;\n}\n\n/**\n * Drop migration entries that no longer correspond to a field on a record in\n * `models`. Required because `mergeMigrations` is monotonic — a later\n * `addSchemaUpdate` that removes or retypes a field would otherwise leave a\n * stale entry in the accumulator. Entries are dropped when:\n * - the model key is no longer present,\n * - the model is no longer a record (e.g. replaced by a union), or\n * - the field name is no longer one of the record's fields.\n */\nfunction pruneMigrations(migrations, models) {\n if (migrations == null) return undefined;\n const result = {};\n for (const [modelKey, fields] of Object.entries(migrations)) {\n const def = models[modelKey];\n if (def == null || def.type !== \"record\") continue;\n const recordFields = def.fields;\n const kept = {};\n for (const [fieldName, migration] of Object.entries(fields)) {\n if (fieldName in recordFields) {\n kept[fieldName] = migration;\n }\n }\n if (Object.keys(kept).length > 0) {\n result[modelKey] = kept;\n }\n }\n return Object.keys(result).length > 0 ? result : undefined;\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 // applyMigration returns both the merged models and any sugar-form\n // upgrades collected via `addField(name, type, { derivedFrom, forward })`.\n const {\n models,\n upgrades\n } = applyMigration(this.models, update.migration);\n const merged = mergeMigrations(this._migrations, upgrades);\n // Reconcile against the new models: a later update that removes or\n // retypes a field must drop the prior step's stale migration entry.\n const pruned = pruneMigrations(merged, models);\n return new SchemaVersionBuilderImpl(models, this.version, this.previous, pruned);\n }\n withMigrations(migrations) {\n const merged = mergeMigrations(this._migrations, migrations);\n const pruned = pruneMigrations(merged, this.models);\n return new SchemaVersionBuilderImpl(this.models, this.version, this.previous, pruned);\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}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"","names":[],"sources":["../../../src/__tests__/addFieldOptions.test.ts"],"version":3,"file":"addFieldOptions.test.d.ts"}
|
|
@@ -6,18 +6,72 @@ export type ReturnedSchema = ModelDefs;
|
|
|
6
6
|
/** Soon to be deprecated - use `ModelDefs` instead. */
|
|
7
7
|
export type Schema<T extends ModelDefs> = T;
|
|
8
8
|
export type SchemaBuilder<T extends ModelDefs> = { [k in keyof T] : T[k] extends UnionDef<infer R> ? UnionBuilder<R> : T[k] extends RecordDef<infer R> ? RecordBuilder<R> : never };
|
|
9
|
+
/**
|
|
10
|
+
* Recursive literal-JSON type. Constrains schema-time `default` values to
|
|
11
|
+
* data that JSON-serializes losslessly — no `Date`, `RegExp`, functions, class
|
|
12
|
+
* instances, or `undefined`. Mirrors the `JsonValue` exported by
|
|
13
|
+
* `@palantir/pack.document-schema.model-types`; kept local here to avoid a
|
|
14
|
+
* package dependency from `pack.schema`.
|
|
15
|
+
*/
|
|
16
|
+
type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
17
|
+
[key: string]: JsonValue;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Upgrade options for a field whose value is derived from prior-version fields.
|
|
21
|
+
* Supplied as the third argument to `addField`; surfaced by `applyMigration`
|
|
22
|
+
* as part of `MigrationResult.upgrades`. Declares the structural dependency
|
|
23
|
+
* (`derivedFrom`) and an optional literal JSON `default` used when no source
|
|
24
|
+
* data exists. The runtime forward function is supplied separately via the
|
|
25
|
+
* generated `DocumentModel(...)` factory's `UpgradeFns` parameter.
|
|
26
|
+
*/
|
|
27
|
+
export interface UpgradeFieldOptions<TOld extends Record<string, unknown>> {
|
|
28
|
+
readonly derivedFrom: ReadonlyArray<keyof TOld & string>;
|
|
29
|
+
readonly default?: JsonValue;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for a purely additive field. `default` is literal JSON only;
|
|
33
|
+
* validated at `addField()` call time.
|
|
34
|
+
*/
|
|
35
|
+
export interface AdditiveFieldOptions {
|
|
36
|
+
readonly default?: JsonValue;
|
|
37
|
+
}
|
|
38
|
+
export type FieldOptions = UpgradeFieldOptions<Record<string, unknown>> | AdditiveFieldOptions;
|
|
9
39
|
export interface RecordBuilder<T extends Record<string, Type>> {
|
|
10
40
|
addField<
|
|
11
41
|
const K extends string,
|
|
12
42
|
V extends Type
|
|
13
|
-
>(name: K, type: V): RecordBuilder<T & { [k in K] : V }>;
|
|
43
|
+
>(name: K, type: V, options?: FieldOptions): RecordBuilder<T & { [k in K] : V }>;
|
|
44
|
+
removeField<K extends keyof T & string>(name: K): RecordBuilder<Omit<T, K>>;
|
|
14
45
|
build(): RecordDef<T>;
|
|
15
46
|
}
|
|
16
47
|
export interface UnionBuilder<S extends UnionVariants> {
|
|
17
48
|
addVariant<const K extends string>(name: K, modelDefOrRef: UnionVariantArg): UnionBuilder<S & { [k in K] : Ref }>;
|
|
18
49
|
build(): UnionDef<S>;
|
|
19
50
|
}
|
|
51
|
+
/** Per-model field migrations: `[modelKey][fieldName]` → upgrade options. */
|
|
52
|
+
export type FieldUpgrades = Record<string, Record<string, UpgradeFieldOptions<Record<string, unknown>>>>;
|
|
53
|
+
export interface MigrationResult<M extends ModelDefs> {
|
|
54
|
+
readonly models: M;
|
|
55
|
+
readonly upgrades?: FieldUpgrades;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Lower-level entry point that returns both the merged models AND any
|
|
59
|
+
* `UpgradeFieldOptions` collected via `addField(name, type, options)` during
|
|
60
|
+
* the migration callback. Used by `addSchemaUpdate` to fold sugar-form
|
|
61
|
+
* upgrades into a `VersionedSchema`'s migrations map.
|
|
62
|
+
*
|
|
63
|
+
* Each `RecordBuilderImpl.build()` attaches its collected options to the
|
|
64
|
+
* produced `RecordDef` via a non-enumerable carrier property; this function
|
|
65
|
+
* walks the merged result, extracts the options keyed by the user's chosen
|
|
66
|
+
* output key (so renames are handled), and strips the carrier so the returned
|
|
67
|
+
* `RecordDef`s are structurally clean.
|
|
68
|
+
*/
|
|
69
|
+
export declare function applyMigration<
|
|
70
|
+
const T extends ModelDefs,
|
|
71
|
+
const S extends ModelDefs
|
|
72
|
+
>(models: T, migration: (schema: SchemaBuilder<T>) => S): MigrationResult<T & S>;
|
|
20
73
|
export declare function defineMigration<
|
|
21
74
|
const T extends ModelDefs,
|
|
22
75
|
const S extends ModelDefs
|
|
23
76
|
>(models: T, migration: (schema: SchemaBuilder<T>) => S): T & S;
|
|
77
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cAAc,uBAAuB;AAErC,cAAc,WAAW,WAAyB,UAAU,qBAAqB;AAEjF,cAAc,KAAK,YAAY;;AAI/B,YAAY,iBAAiB;;AAG7B,YAAY,OAAO,UAAU,aAAa;AAE1C,YAAY,cAAc,UAAU,gBACjC,WAAW,KAAI,EAAE,WAAW,eAAe,KAAK,aAAa,KAC1D,EAAE,WAAW,gBAAgB,KAAK,cAAc;
|
|
1
|
+
{"mappings":"AAgBA,cAAc,uBAAuB;AAErC,cAAc,WAAW,WAAyB,UAAU,qBAAqB;AAEjF,cAAc,KAAK,YAAY;;AAI/B,YAAY,iBAAiB;;AAG7B,YAAY,OAAO,UAAU,aAAa;AAE1C,YAAY,cAAc,UAAU,gBACjC,WAAW,KAAI,EAAE,WAAW,eAAe,KAAK,aAAa,KAC1D,EAAE,WAAW,gBAAgB,KAAK,cAAc;;;;;;;;KAWjD,+CAKD,cACA;gBAAiB;;;;;;;;;;AAUrB,iBAAiB,oBAAoB,aAAa,yBAAyB;UAChE,aAAa,oBAAoB;UACjC,UAAU;;;;;;AAOrB,iBAAiB,qBAAqB;UAC3B,UAAU;;AAGrB,YAAY,eACR,oBAAoB,2BACpB;AAuCJ,iBAAiB,cAAc,UAAU,eAAe,OAAO;CAE7D;QAAe;EAAkB,UAAU;GACzC,MAAM,GACN,MAAM,GACN,UAAU,eACT,cAAc,OAAO,KAAK,KAAI;CACjC,YAAY,gBAAgB,YAC1B,MAAM,IACL,cAAc,KAAK,GAAG;CACzB,SAAS,UAAU;;AAGrB,iBAAiB,aAAa,UAAU,eAAe;CAErD,iBAAiB,kBACf,MAAM,GACN,eAAe,kBACd,aAAa,OAAO,KAAK,KAAI;CAChC,SAAS,SAAS;;;AAwIpB,YAAY,gBAAgB,eAE1B,eAAe,oBAAoB;AAGrC,iBAAiB,gBAAgB,UAAU,WAAW;UAC3C,QAAQ;UACR,WAAW;;;;;;;;;;;;;;AAetB,OAAO,iBAAS;OACR,UAAU;OACV,UAAU;EAEhB,QAAQ,GACR,YAAY,QAAQ,cAAc,OAAO,IACxC,gBAAgB,IAAI;AAqCvB,OAAO,iBAAS;OACR,UAAU;OACV,UAAU;EAEhB,QAAQ,GACR,YAAY,QAAQ,cAAc,OAAO,IACxC,IAAI","names":[],"sources":["../../src/defineMigration.ts"],"version":3,"file":"defineMigration.d.ts"}
|
|
@@ -7,7 +7,6 @@ export interface InitialSchema<T extends ModelDefs = ModelDefs> {
|
|
|
7
7
|
}
|
|
8
8
|
export interface FieldMigration {
|
|
9
9
|
readonly derivedFrom: readonly string[];
|
|
10
|
-
readonly forward: (oldFields: Record<string, unknown>) => unknown;
|
|
11
10
|
}
|
|
12
11
|
export type VersionMigrations = Record<string, Record<string, FieldMigration>>;
|
|
13
12
|
export interface VersionedSchema<T extends ModelDefs = ModelDefs> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cAAc,qBAAqB;AAEnC,cAAc,iBAAiB;AAE/B,iBAAiB,cAAc,UAAU,YAAY,WAAW;UACrD,MAAM;UACN,SAAS;UACT,QAAQ;;AAGnB,iBAAiB,eAAe;UACrB
|
|
1
|
+
{"mappings":"AAgBA,cAAc,qBAAqB;AAEnC,cAAc,iBAAiB;AAE/B,iBAAiB,cAAc,UAAU,YAAY,WAAW;UACrD,MAAM;UACN,SAAS;UACT,QAAQ;;AAGnB,iBAAiB,eAAe;UACrB;;AAGX,YAAY,oBAAoB,eAAe,eAAe;AAE9D,iBAAiB,gBAAgB,UAAU,YAAY,WAAW;UACvD,MAAM;UACN,QAAQ;UACR;UACA,UAAU;UACV,aAAa;;AAGxB,YAAY,iBAAiB,UAAU,YAAY,aAC/C,cAAc,KACd,gBAAgB;AAEpB,OAAO,iBAAS,aAAa,UAAU,WAAW,QAAQ,IAAI,cAAc;AAI5E,iBAAiB;CAAa,UAAU;CAAW,UAAU;EAAW;UAC7D;UACA,YAAY,QAAQ,cAAc,OAAO;;AAGpD,OAAO,iBAAS;CAAmB,UAAU;CAAW,UAAU;EAChE,cACA,YAAY,QAAQ,cAAc,OAAO,IACxC,aAAa,GAAG;AAInB,iBAAiB,qBAAqB,UAAU,WAAW;CACzD,gBAAgB,UAAU,WACxB,QAAQ,aAAa,GAAG,KACvB,qBAAqB,IAAI;CAC5B,eAAe,YAAY,oBAAoB,qBAAqB;CACpE,SAAS,gBAAgB;;AAyG3B,OAAO,iBAAS,WAAW,UAAU,WACnC,UAAU,iBAAiB,KAC1B,qBAAqB","names":[],"sources":["../../src/defineSchemaUpdate.ts"],"version":3,"file":"defineSchemaUpdate.d.ts"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,OAAO,cAAM;UACX,OAAO;UACP,SAAS;UACT,SAAS;UACT,QAAQ;UACR,WAAW;UACX,YAAY;UACZ,UAAU;UACV,KAAK;UACL,QAAQ;UACR,SAAS;UACT,UAAU;;AAGZ,YAAY,kBAAkB,sBAAsB;AAEpD,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,UAAU;UACX,aAAa,SAAS;;UAIvB,SAAS;UACR,MAAM;;AAGjB,YAAY,MAAM,UAAU,WAAW,YAAY;UACxC,aAAa,SAAS;UACtB,OAAO;;AAIlB,YAAY,MAAM;UACP,aAAa,SAAS;UACtB,SAAS,WAAW;UACpB;;AAGX,YAAY,SAAS,UAAU,WAAW,YAAY;UAC3C,aAAa,SAAS;UACtB,MAAM;;AAGjB,YAAY,UAAU;UACX,aAAa,SAAS;;AAGjC,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,WAAW;UACZ,aAAa,SAAS;;AAGjC,YAAY,YAAY;UACb,aAAa,SAAS;;AAGjC,YAAY,UAAU;UACX,aAAa,SAAS;;AAGjC,YAAY,OACR,QACA,UACA,SACA,SACA,WACA,YACA,WACA,MACA,SACA,UACA;AAEJ,OAAO,cAAMA,QAAQ;AACrB,OAAO,cAAMC,QAAQ;AACrB,OAAO,cAAMC,SAAS;AACtB,OAAO,cAAMC,SAAS;
|
|
1
|
+
{"mappings":"AAgBA,OAAO,cAAM;UACX,OAAO;UACP,SAAS;UACT,SAAS;UACT,QAAQ;UACR,WAAW;UACX,YAAY;UACZ,UAAU;UACV,KAAK;UACL,QAAQ;UACR,SAAS;UACT,UAAU;;AAGZ,YAAY,kBAAkB,sBAAsB;AAEpD,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,UAAU;UACX,aAAa,SAAS;;UAIvB,SAAS;UACR,MAAM;;AAGjB,YAAY,MAAM,UAAU,WAAW,YAAY;UACxC,aAAa,SAAS;UACtB,OAAO;;AAIlB,YAAY,MAAM;UACP,aAAa,SAAS;UACtB,SAAS,WAAW;UACpB;;AAGX,YAAY,SAAS,UAAU,WAAW,YAAY;UAC3C,aAAa,SAAS;UACtB,MAAM;;AAGjB,YAAY,UAAU;UACX,aAAa,SAAS;;AAGjC,YAAY,SAAS;UACV,aAAa,SAAS;;AAGjC,YAAY,WAAW;UACZ,aAAa,SAAS;;AAGjC,YAAY,YAAY;UACb,aAAa,SAAS;;AAGjC,YAAY,UAAU;UACX,aAAa,SAAS;;AAGjC,YAAY,OACR,QACA,UACA,SACA,SACA,WACA,YACA,WACA,MACA,SACA,UACA;AAEJ,OAAO,cAAMA,QAAQ;AACrB,OAAO,cAAMC,QAAQ;AACrB,OAAO,cAAMC,SAAS;AACtB,OAAO,cAAMC,SAAS;AAKtB,OAAO,cAAM,QAAS,UAAU,UAAU,MAAM,MAAI,MAAM;AAS1D,OAAO,cAAM,WAAY,UAAU,UAAU,MAAM,MAAI,SAAS","names":["String: String","Double: Double","Boolean: Boolean","Unknown: Unknown"],"sources":["../../src/primitives.ts"],"version":3,"file":"primitives.d.ts"}
|