@revisium/schema-toolkit 0.2.1 → 0.3.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/dist/{chunk-BQWQLLSC.cjs → chunk-JLIZ7QT2.cjs} +74 -6
- package/dist/chunk-JLIZ7QT2.cjs.map +1 -0
- package/dist/{chunk-22HBQQF4.js → chunk-TBECY7YZ.js} +180 -5
- package/dist/chunk-TBECY7YZ.js.map +1 -0
- package/dist/{chunk-RV56Z2F4.cjs → chunk-TZNY576V.cjs} +194 -14
- package/dist/chunk-TZNY576V.cjs.map +1 -0
- package/dist/{chunk-62P6L7GI.js → chunk-WCFA4226.js} +70 -6
- package/dist/chunk-WCFA4226.js.map +1 -0
- package/dist/index.cjs +89 -53
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/{json-string.store-O1J0j-a1.d.cts → json-string.store-BNF1Y93E.d.cts} +1 -0
- package/dist/{json-string.store-S9FXT39Q.d.ts → json-string.store-qHcWNv07.d.ts} +1 -0
- package/dist/lib/index.cjs +52 -32
- package/dist/lib/index.d.cts +8 -2
- package/dist/lib/index.d.ts +8 -2
- package/dist/lib/index.js +2 -2
- package/dist/model/index.cjs +38 -22
- package/dist/model/index.d.cts +8 -4
- package/dist/model/index.d.ts +8 -4
- package/dist/model/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-22HBQQF4.js.map +0 -1
- package/dist/chunk-62P6L7GI.js.map +0 -1
- package/dist/chunk-BQWQLLSC.cjs.map +0 -1
- package/dist/chunk-RV56Z2F4.cjs.map +0 -1
|
@@ -433,7 +433,7 @@ var JsonBooleanValueStore = class {
|
|
|
433
433
|
};
|
|
434
434
|
|
|
435
435
|
// src/model/value/value-transformation.ts
|
|
436
|
-
var
|
|
436
|
+
var equal = (value) => value;
|
|
437
437
|
var fromNumberToString = (value, defaultValue = "") => value.toString() || defaultValue;
|
|
438
438
|
var fromBooleanToString = (value, defaultValue = "") => value.toString() || defaultValue;
|
|
439
439
|
var fromStringToBoolean = (value, defaultValue = false) => {
|
|
@@ -468,6 +468,18 @@ var fromArrayTransformation = (transformation) => (value) => {
|
|
|
468
468
|
}
|
|
469
469
|
return void 0;
|
|
470
470
|
};
|
|
471
|
+
var fromObjectToPrimitive = (_value, defaultValue) => {
|
|
472
|
+
return defaultValue;
|
|
473
|
+
};
|
|
474
|
+
var fromPrimitiveToObject = (_value, defaultValue) => {
|
|
475
|
+
return defaultValue;
|
|
476
|
+
};
|
|
477
|
+
var fromObjectToArray = (_value, defaultValue) => {
|
|
478
|
+
return defaultValue;
|
|
479
|
+
};
|
|
480
|
+
var fromArrayToObject = (_value, defaultValue) => {
|
|
481
|
+
return defaultValue;
|
|
482
|
+
};
|
|
471
483
|
var replaceTransformationsMapper = [
|
|
472
484
|
{
|
|
473
485
|
fromType: "number" /* Number */,
|
|
@@ -501,13 +513,47 @@ var replaceTransformationsMapper = [
|
|
|
501
513
|
}
|
|
502
514
|
];
|
|
503
515
|
var getTransformation = (from, to) => {
|
|
516
|
+
if (from instanceof JsonObjectStore && !(to instanceof JsonObjectStore) && !(to instanceof JsonArrayStore)) {
|
|
517
|
+
return fromObjectToPrimitive;
|
|
518
|
+
}
|
|
519
|
+
if (!(from instanceof JsonObjectStore) && !(from instanceof JsonArrayStore) && to instanceof JsonObjectStore) {
|
|
520
|
+
return fromPrimitiveToObject;
|
|
521
|
+
}
|
|
522
|
+
if (from instanceof JsonObjectStore && to instanceof JsonArrayStore) {
|
|
523
|
+
return fromObjectToArray;
|
|
524
|
+
}
|
|
525
|
+
if (from instanceof JsonArrayStore && to instanceof JsonObjectStore) {
|
|
526
|
+
return fromArrayToObject;
|
|
527
|
+
}
|
|
528
|
+
if (from instanceof JsonArrayStore && to instanceof JsonArrayStore) {
|
|
529
|
+
const itemTransformation = findTransformation(
|
|
530
|
+
from.items.type,
|
|
531
|
+
to.items.type
|
|
532
|
+
);
|
|
533
|
+
if (itemTransformation && itemTransformation !== equal) {
|
|
534
|
+
return (value, defaultValue) => {
|
|
535
|
+
if (!Array.isArray(value)) {
|
|
536
|
+
return defaultValue;
|
|
537
|
+
}
|
|
538
|
+
return value.map((item) => {
|
|
539
|
+
const result = itemTransformation(item, to.items.default);
|
|
540
|
+
return result !== void 0 ? result : to.items.default;
|
|
541
|
+
});
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
if (from.items.type !== to.items.type) {
|
|
545
|
+
return (_value, defaultValue) => defaultValue;
|
|
546
|
+
}
|
|
547
|
+
return equal;
|
|
548
|
+
}
|
|
504
549
|
if (to instanceof JsonArrayStore) {
|
|
505
550
|
const transformation = findTransformation(from.type, to.items.type);
|
|
506
551
|
if (!transformation) {
|
|
507
552
|
return;
|
|
508
553
|
}
|
|
509
554
|
return toArrayTransformation(transformation);
|
|
510
|
-
}
|
|
555
|
+
}
|
|
556
|
+
if (from instanceof JsonArrayStore) {
|
|
511
557
|
const transformation = findTransformation(from.items.type, to.type);
|
|
512
558
|
if (!transformation) {
|
|
513
559
|
return;
|
|
@@ -518,7 +564,7 @@ var getTransformation = (from, to) => {
|
|
|
518
564
|
};
|
|
519
565
|
var findTransformation = (from, to) => {
|
|
520
566
|
if (from === to) {
|
|
521
|
-
return
|
|
567
|
+
return equal;
|
|
522
568
|
}
|
|
523
569
|
for (const item of replaceTransformationsMapper) {
|
|
524
570
|
if (item.fromType === from && item.toType === to) {
|
|
@@ -576,12 +622,30 @@ var JsonObjectValueStore = class {
|
|
|
576
622
|
}
|
|
577
623
|
}
|
|
578
624
|
getAddedValue(event) {
|
|
625
|
+
const ancestorValue = this.findValueAtSchemaLevel(event.property);
|
|
626
|
+
if (ancestorValue !== void 0) {
|
|
627
|
+
return ancestorValue;
|
|
628
|
+
}
|
|
579
629
|
const previousValue = event.property.getValue(this.rowId, this.index);
|
|
580
630
|
if (previousValue) {
|
|
581
631
|
return previousValue.getPlainValue();
|
|
582
632
|
}
|
|
583
633
|
return event.property.default;
|
|
584
634
|
}
|
|
635
|
+
findValueAtSchemaLevel(targetSchema) {
|
|
636
|
+
let current = this.parent;
|
|
637
|
+
while (current) {
|
|
638
|
+
if (current.type === "object" /* Object */) {
|
|
639
|
+
for (const [, fieldValue] of Object.entries(current.value)) {
|
|
640
|
+
if (fieldValue.schema === targetSchema) {
|
|
641
|
+
return fieldValue.getPlainValue();
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
current = current.parent;
|
|
646
|
+
}
|
|
647
|
+
return void 0;
|
|
648
|
+
}
|
|
585
649
|
getMigratedValue(event) {
|
|
586
650
|
const transformation = getTransformation(
|
|
587
651
|
event.previousProperty,
|
|
@@ -705,15 +769,19 @@ exports.createJsonArrayValueStore = createJsonArrayValueStore;
|
|
|
705
769
|
exports.createJsonObjectValueStore = createJsonObjectValueStore;
|
|
706
770
|
exports.createJsonValueStore = createJsonValueStore;
|
|
707
771
|
exports.createPrimitiveValueStore = createPrimitiveValueStore;
|
|
708
|
-
exports.
|
|
772
|
+
exports.equal = equal;
|
|
773
|
+
exports.fromArrayToObject = fromArrayToObject;
|
|
709
774
|
exports.fromArrayTransformation = fromArrayTransformation;
|
|
710
775
|
exports.fromBooleanToNumber = fromBooleanToNumber;
|
|
711
776
|
exports.fromBooleanToString = fromBooleanToString;
|
|
712
777
|
exports.fromNumberToBoolean = fromNumberToBoolean;
|
|
713
778
|
exports.fromNumberToString = fromNumberToString;
|
|
779
|
+
exports.fromObjectToArray = fromObjectToArray;
|
|
780
|
+
exports.fromObjectToPrimitive = fromObjectToPrimitive;
|
|
781
|
+
exports.fromPrimitiveToObject = fromPrimitiveToObject;
|
|
714
782
|
exports.fromStringToBoolean = fromStringToBoolean;
|
|
715
783
|
exports.fromStringToNumber = fromStringToNumber;
|
|
716
784
|
exports.getTransformation = getTransformation;
|
|
717
785
|
exports.toArrayTransformation = toArrayTransformation;
|
|
718
|
-
//# sourceMappingURL=chunk-
|
|
719
|
-
//# sourceMappingURL=chunk-
|
|
786
|
+
//# sourceMappingURL=chunk-JLIZ7QT2.cjs.map
|
|
787
|
+
//# sourceMappingURL=chunk-JLIZ7QT2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/addSharedFieldsFromStore.ts","../src/model/schema/json-string.store.ts","../src/model/schema/json-number.store.ts","../src/model/schema/json-boolean.store.ts","../src/model/schema/json-object.store.ts","../src/model/schema/json-array.store.ts","../src/model/value/json-string-value.store.ts","../src/model/value/json-number-value.store.ts","../src/model/value/json-boolean-value.store.ts","../src/model/value/value-transformation.ts","../src/model/value/json-object-value.store.ts","../src/lib/createJsonValueStore.ts","../src/model/value/json-array-value.store.ts"],"names":["EventEmitter","nanoid","value"],"mappings":"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","file":"chunk-JLIZ7QT2.cjs","sourcesContent":["import { JsonSchema } from '../types/schema.types.js';\n\nexport const addSharedFieldsFromState = <T extends JsonSchema = JsonSchema>(\n schema: T,\n state: { title?: string; description?: string; deprecated?: boolean },\n): T => {\n if (state.title) {\n schema.title = state.title;\n }\n\n if (state.description) {\n schema.description = state.description;\n }\n\n if (state.deprecated) {\n schema.deprecated = state.deprecated;\n }\n\n return schema;\n};\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonRefSchema,\n JsonSchemaTypeName,\n JsonStringSchema,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonStringValueStore } from '../value/json-string-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonStringStore extends EventEmitter implements JsonStringSchema {\n public readonly type = JsonSchemaTypeName.String;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: string = '';\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n public foreignKey?: string;\n public pattern?: string;\n public enum?: string[];\n public format?: JsonStringSchema['format'];\n public contentMediaType?: JsonStringSchema['contentMediaType'];\n\n private readonly valuesMap: Map<string, JsonStringValueStore[]> = new Map<\n string,\n JsonStringValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonStringValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonStringValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonStringSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.foreignKey ? { foreignKey: this.foreignKey } : {}),\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n ...(this.pattern ? { pattern: this.pattern } : {}),\n ...(this.enum ? { enum: this.enum } : {}),\n ...(this.format ? { format: this.format } : {}),\n ...(this.contentMediaType\n ? { contentMediaType: this.contentMediaType }\n : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonStringValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonNumberSchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonNumberValueStore } from '../value/json-number-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonNumberStore extends EventEmitter implements JsonNumberSchema {\n public readonly type = JsonSchemaTypeName.Number;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: number = 0;\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonNumberValueStore[]> = new Map<\n string,\n JsonNumberValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonNumberValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonNumberValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonNumberSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonNumberValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonBooleanSchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonBooleanValueStore } from '../value/json-boolean-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonBooleanStore\n extends EventEmitter\n implements JsonBooleanSchema\n{\n public readonly type = JsonSchemaTypeName.Boolean;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: boolean = false;\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonBooleanValueStore[]> = new Map<\n string,\n JsonBooleanValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonBooleanValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonBooleanValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonBooleanSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonBooleanValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { JsonObject } from '../../types/json.types.js';\nimport {\n JsonObjectSchema,\n JsonRefSchema,\n JsonSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonObjectValueStore } from '../value/json-object-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport type AddedPropertyEvent = { name: string; property: JsonSchemaStore };\nexport type MigratePropertyEvent = {\n name: string;\n property: JsonSchemaStore;\n previousProperty: JsonSchemaStore;\n};\nexport type RemovedPropertyEvent = { name: string; property: JsonSchemaStore };\nexport type ChangeNameEvent = {\n fromName: string;\n toName: string;\n property: JsonSchemaStore;\n};\n\nexport class JsonObjectStore implements JsonObjectSchema {\n public readonly type = JsonSchemaTypeName.Object;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n public default: JsonObject = {};\n\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n public readonly additionalProperties = false;\n public readonly required: string[] = [];\n public readonly properties: Record<string, JsonSchemaStore> = {};\n\n private readonly valuesMap: Map<string, JsonObjectValueStore[]> = new Map<\n string,\n JsonObjectValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {}\n\n public get empty(): boolean {\n return Object.keys(this.properties).length === 0;\n }\n\n public registerValue(value: JsonObjectValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonObjectValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public addPropertyWithStore(name: string, store: JsonSchemaStore) {\n if (this.properties[name] || this.required.includes(name)) {\n throw new Error('this name already exists');\n }\n\n store.parent = this;\n store.name = name;\n\n this.required.push(name);\n this.required.sort((a, b) => a.localeCompare(b));\n\n this.properties[name] = store;\n this.default[name] = store.default;\n\n const event: AddedPropertyEvent = { name, property: store };\n\n for (const value of this.iterValues()) {\n value.addProperty(event);\n }\n\n return store;\n }\n\n public migratePropertyWithStore(name: string, store: JsonSchemaStore) {\n const item = this.properties[name];\n\n if (!item) {\n throw new Error('this name does not exist');\n }\n\n item.parent = null;\n\n store.parent = this;\n store.name = name;\n\n this.properties[name] = store;\n this.default[name] = store.default;\n\n const event: MigratePropertyEvent = {\n name,\n property: store,\n previousProperty: item,\n };\n\n for (const value of this.iterValues()) {\n value.migrateProperty(event);\n }\n\n return store;\n }\n\n public changeName(fromName: string, toName: string) {\n const item = this.properties[fromName];\n\n if (!item) {\n throw new Error('this fromName does not exist');\n }\n\n // remove\n delete this.properties[fromName];\n delete this.default[fromName];\n\n const foundRequiredIndex = this.required.findIndex(\n (required) => required === fromName,\n );\n\n if (foundRequiredIndex !== -1) {\n this.required.splice(foundRequiredIndex, 1);\n }\n\n // add\n if (!this.required.includes(toName)) {\n this.required.push(toName);\n this.required.sort((a, b) => a.localeCompare(b));\n }\n\n this.properties[toName] = item;\n this.default[toName] = item.default;\n\n const event: ChangeNameEvent = {\n fromName,\n toName,\n property: item,\n };\n\n for (const value of this.iterValues()) {\n value.changeName(event);\n }\n }\n\n public removeProperty(name: string) {\n const item = this.properties[name];\n\n if (!item) {\n throw new Error('this name does not exist');\n }\n\n item.parent = null;\n item.name = '';\n\n delete this.properties[name];\n delete this.default[name];\n\n const foundRequiredIndex = this.required.findIndex(\n (required) => required === name,\n );\n\n if (foundRequiredIndex !== -1) {\n this.required.splice(foundRequiredIndex, 1);\n }\n\n const event: RemovedPropertyEvent = {\n name,\n property: item,\n };\n\n for (const value of this.iterValues()) {\n value.removeProperty(event);\n }\n }\n\n public getProperty(name: string): JsonSchemaStore | undefined {\n return this.properties[name];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonObjectSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n additionalProperties: this.additionalProperties,\n required: this.required,\n properties: Object.entries<JsonSchemaStore>(this.properties).reduce<\n Record<string, JsonSchema>\n >((result, [name, store]) => {\n result[name] = store.getPlainSchema(options);\n return result;\n }, {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonObjectValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n\n private *iterValues(): Generator<JsonObjectValueStore> {\n for (const values of this.valuesMap.values()) {\n for (const value of values) {\n yield value;\n }\n }\n }\n}\n","import { nanoid } from 'nanoid';\nimport { JsonArray } from '../../types/json.types.js';\nimport {\n JsonArraySchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonArrayValueStore } from '../value/json-array-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport type MigrateItemsEvent = {\n items: JsonSchemaStore;\n previousItems: JsonSchemaStore;\n};\n\nexport type ReplaceItemsEvent = {\n items: JsonSchemaStore;\n previousItems: JsonSchemaStore;\n};\n\nexport class JsonArrayStore implements JsonArraySchema {\n public readonly type = JsonSchemaTypeName.Array;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n public default: JsonArray[] = [];\n\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonArrayValueStore[]> = new Map<\n string,\n JsonArrayValueStore[]\n >();\n\n constructor(\n private _items: JsonSchemaStore,\n public readonly nodeId: string = nanoid(),\n ) {\n this.items.parent = this;\n }\n\n public get items() {\n return this._items;\n }\n\n public registerValue(value: JsonArrayValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonArrayValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public migrateItems(items: JsonSchemaStore) {\n const previousItems = this._items;\n previousItems.parent = null;\n this._items = items;\n this._items.parent = this;\n\n const event: MigrateItemsEvent = { items, previousItems };\n\n for (const value of this.iterValues()) {\n value.migrateItems(event);\n }\n }\n\n public replaceItems(items: JsonSchemaStore) {\n const previousItems = this._items;\n previousItems.parent = null;\n this._items = items;\n this._items.parent = this;\n\n const event: ReplaceItemsEvent = { items, previousItems };\n\n for (const value of this.iterValues()) {\n value.replaceItems(event);\n }\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonArraySchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n items: this.items.getPlainSchema(options),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonArrayValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n\n private *iterValues(): Generator<JsonArrayValueStore> {\n for (const values of this.valuesMap.values()) {\n for (const value of values) {\n yield value;\n }\n }\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonStringStore } from '../schema/json-string.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonStringValueStore {\n public readonly type = JsonSchemaTypeName.String;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonStringStore,\n public readonly rowId: string,\n public value: string | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public get foreignKey() {\n return this.schema.foreignKey;\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonNumberStore } from '../schema/json-number.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonNumberValueStore {\n public readonly type = JsonSchemaTypeName.Number;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonNumberStore,\n public readonly rowId: string,\n public value: number | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonBooleanStore } from '../schema/json-boolean.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonBooleanValueStore {\n public readonly type = JsonSchemaTypeName.Boolean;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonBooleanStore,\n public readonly rowId: string,\n public value: boolean | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonArrayStore } from '../schema/json-array.store.js';\nimport { JsonSchemaStore } from '../schema/json-schema.store.js';\nimport { JsonObjectStore } from '../schema/json-object.store.js';\n\nexport const equal = (value: unknown): unknown => value;\n\nexport const fromNumberToString = (\n value: number,\n defaultValue: string = '',\n): string => value.toString() || defaultValue;\n\nexport const fromBooleanToString = (\n value: boolean,\n defaultValue: string = '',\n): string => value.toString() || defaultValue;\n\nexport const fromStringToBoolean = (\n value: string,\n defaultValue: boolean = false,\n): boolean => {\n if (!value) {\n return defaultValue;\n }\n\n if (value.toLowerCase() === 'false') {\n return false;\n }\n\n return true;\n};\n\nexport const fromStringToNumber = (\n value: string,\n defaultValue: number = 0,\n): number => {\n const number = Number.parseFloat(value);\n\n if (Number.isNaN(number)) {\n return defaultValue;\n }\n\n return number;\n};\n\nexport const fromBooleanToNumber = (value: boolean): number => {\n return Number(value);\n};\n\nexport const fromNumberToBoolean = (value: number): boolean => {\n return Boolean(value);\n};\n\nexport const toArrayTransformation =\n (transformation: Transformation) => (value: unknown) => {\n const result = transformation(value);\n return [result];\n };\n\nexport const fromArrayTransformation =\n (transformation: Transformation) => (value: unknown) => {\n if (Array.isArray(value) && value.length) {\n return transformation(value[0]);\n }\n return undefined;\n };\n\nexport const fromObjectToPrimitive = (\n _value: unknown,\n defaultValue: unknown,\n): unknown => {\n return defaultValue;\n};\n\nexport const fromPrimitiveToObject = (\n _value: unknown,\n defaultValue: unknown,\n): unknown => {\n return defaultValue;\n};\n\nexport const fromObjectToArray = (\n _value: unknown,\n defaultValue: unknown,\n): unknown => {\n return defaultValue;\n};\n\nexport const fromArrayToObject = (\n _value: unknown,\n defaultValue: unknown,\n): unknown => {\n return defaultValue;\n};\n\nconst replaceTransformationsMapper: ReplaceTransformationsMapper = [\n {\n fromType: JsonSchemaTypeName.Number,\n toType: JsonSchemaTypeName.String,\n transformation: fromNumberToString as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.String,\n toType: JsonSchemaTypeName.Number,\n transformation: fromStringToNumber as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Boolean,\n toType: JsonSchemaTypeName.String,\n transformation: fromBooleanToString as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.String,\n toType: JsonSchemaTypeName.Boolean,\n transformation: fromStringToBoolean as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Boolean,\n toType: JsonSchemaTypeName.Number,\n transformation: fromBooleanToNumber as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Number,\n toType: JsonSchemaTypeName.Boolean,\n transformation: fromNumberToBoolean as Transformation,\n },\n];\nexport const getTransformation = (\n from: JsonSchemaStore,\n to: JsonSchemaStore,\n): Transformation | undefined => {\n if (\n from instanceof JsonObjectStore &&\n !(to instanceof JsonObjectStore) &&\n !(to instanceof JsonArrayStore)\n ) {\n return fromObjectToPrimitive;\n }\n\n if (\n !(from instanceof JsonObjectStore) &&\n !(from instanceof JsonArrayStore) &&\n to instanceof JsonObjectStore\n ) {\n return fromPrimitiveToObject;\n }\n\n if (from instanceof JsonObjectStore && to instanceof JsonArrayStore) {\n return fromObjectToArray;\n }\n\n if (from instanceof JsonArrayStore && to instanceof JsonObjectStore) {\n return fromArrayToObject;\n }\n\n if (from instanceof JsonArrayStore && to instanceof JsonArrayStore) {\n const itemTransformation = findTransformation(\n from.items.type,\n to.items.type,\n );\n\n if (itemTransformation && itemTransformation !== equal) {\n return (value: unknown, defaultValue?: unknown) => {\n if (!Array.isArray(value)) {\n return defaultValue;\n }\n\n return value.map((item) => {\n const result = itemTransformation(item, to.items.default);\n return result !== undefined ? result : to.items.default;\n });\n };\n }\n\n if (from.items.type !== to.items.type) {\n return (_value: unknown, defaultValue?: unknown) => defaultValue;\n }\n\n return equal;\n }\n\n if (to instanceof JsonArrayStore) {\n const transformation = findTransformation(from.type, to.items.type);\n\n if (!transformation) {\n return;\n }\n\n return toArrayTransformation(transformation);\n }\n\n if (from instanceof JsonArrayStore) {\n const transformation = findTransformation(from.items.type, to.type);\n\n if (!transformation) {\n return;\n }\n\n return fromArrayTransformation(transformation);\n }\n\n return findTransformation(from.type, to.type);\n};\n\nconst findTransformation = (\n from: JsonSchemaTypeName,\n to: JsonSchemaTypeName,\n): Transformation | undefined => {\n if (from === to) {\n return equal;\n }\n\n for (const item of replaceTransformationsMapper) {\n if (item.fromType === from && item.toType === to) {\n return item.transformation;\n }\n }\n\n return undefined;\n};\n\ntype Transformation = (value: unknown, defaultValue?: unknown) => unknown;\ntype ReplaceTransformationsMapper = {\n fromType: JsonSchemaTypeName;\n toType: JsonSchemaTypeName;\n transformation: Transformation;\n}[];\n","import { createJsonValueStore } from '../../lib/createJsonValueStore.js';\nimport { JsonSchemaStore } from '../../model/schema';\nimport { JsonObject, JsonValue } from '../../types/json.types.js';\nimport { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport {\n AddedPropertyEvent,\n ChangeNameEvent,\n JsonObjectStore,\n MigratePropertyEvent,\n RemovedPropertyEvent,\n} from '../schema/json-object.store.js';\nimport { JsonValueStore, JsonValueStoreParent } from './json-value.store.js';\nimport { getTransformation } from './value-transformation.js';\n\nexport class JsonObjectValueStore {\n public readonly type = JsonSchemaTypeName.Object;\n\n public index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonObjectStore,\n public readonly rowId: string,\n public value: Record<string, JsonValueStore>,\n ) {\n this.index = this.schema.registerValue(this);\n this.init();\n }\n\n public getPlainValue(): JsonObject {\n return Object.entries(this.value).reduce<Record<string, JsonValue>>(\n (result, [name, store]) => {\n result[name] = store.getPlainValue() as JsonValue;\n return result;\n },\n {},\n );\n }\n\n public migrateProperty(event: MigratePropertyEvent) {\n const rawValue = this.getMigratedValue(event);\n\n this.value[event.name] = createJsonValueStore(\n event.property,\n this.rowId,\n rawValue,\n );\n }\n\n public addProperty(event: AddedPropertyEvent) {\n const rawValue = this.getAddedValue(event);\n\n this.value[event.name] = createJsonValueStore(\n event.property,\n this.rowId,\n rawValue,\n );\n }\n\n public removeProperty(event: RemovedPropertyEvent) {\n delete this.value[event.name];\n }\n\n public changeName(event: ChangeNameEvent) {\n const itemValue = this.value[event.fromName];\n\n if (itemValue !== undefined) {\n delete this.value[event.fromName];\n this.value[event.toName] = itemValue;\n }\n }\n\n private getAddedValue(event: AddedPropertyEvent): JsonValue {\n const ancestorValue = this.findValueAtSchemaLevel(event.property);\n if (ancestorValue !== undefined) {\n return ancestorValue;\n }\n\n const previousValue = event.property.getValue(this.rowId, this.index);\n if (previousValue) {\n return previousValue.getPlainValue();\n }\n\n return event.property.default;\n }\n\n private findValueAtSchemaLevel(\n targetSchema: JsonSchemaStore,\n ): JsonValue | undefined {\n let current: JsonValueStore | null = this.parent;\n\n while (current) {\n if (current.type === JsonSchemaTypeName.Object) {\n for (const [, fieldValue] of Object.entries(current.value)) {\n if (fieldValue.schema === targetSchema) {\n return fieldValue.getPlainValue();\n }\n }\n }\n\n current = current.parent;\n }\n\n return undefined;\n }\n\n private getMigratedValue(event: MigratePropertyEvent): JsonValue {\n const transformation = getTransformation(\n event.previousProperty,\n event.property,\n );\n\n const valueStore = this.value[event.name];\n if (transformation && valueStore) {\n return transformation(\n valueStore.getPlainValue(),\n event.property.default,\n ) as JsonValue;\n }\n\n return event.property.default;\n }\n\n private init() {\n for (const value of Object.values(this.value)) {\n value.parent = this;\n }\n }\n}\n","import {\n JsonArray,\n JsonObject,\n JsonPrimitives,\n JsonValue,\n} from '../types/json.types.js';\nimport { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonArrayStore } from '../model/schema/json-array.store.js';\nimport { JsonObjectStore } from '../model/schema/json-object.store.js';\nimport {\n JsonSchemaStore,\n JsonSchemaStorePrimitives,\n} from '../model/schema/json-schema.store.js';\nimport { JsonArrayValueStore } from '../model/value/json-array-value.store.js';\nimport { JsonBooleanValueStore } from '../model/value/json-boolean-value.store.js';\nimport { JsonNumberValueStore } from '../model/value/json-number-value.store.js';\nimport { JsonObjectValueStore } from '../model/value/json-object-value.store.js';\nimport { JsonStringValueStore } from '../model/value/json-string-value.store.js';\nimport {\n JsonValueStore,\n JsonValueStorePrimitives,\n} from '../model/value/json-value.store.js';\n\nexport const createJsonValueStore = (\n schema: JsonSchemaStore,\n rowId: string,\n rawValue: JsonValue,\n): JsonValueStore => {\n if (schema.type === JsonSchemaTypeName.Object) {\n return createJsonObjectValueStore(schema, rowId, rawValue as JsonObject);\n } else if (schema.type === JsonSchemaTypeName.Array) {\n return createJsonArrayValueStore(schema, rowId, rawValue as JsonArray);\n } else {\n return createPrimitiveValueStore(schema, rowId, rawValue as JsonPrimitives);\n }\n};\n\nexport const createJsonObjectValueStore = (\n schema: JsonObjectStore,\n rowId: string,\n rawValue: JsonObject,\n): JsonObjectValueStore => {\n const value = Object.entries(rawValue).reduce<Record<string, JsonValueStore>>(\n (reduceValue, [key, itemValue]) => {\n const itemSchema = schema.getProperty(key);\n\n if (itemSchema === undefined || itemValue === undefined) {\n throw new Error('Invalid item');\n }\n\n reduceValue[key] = createJsonValueStore(itemSchema, rowId, itemValue);\n\n return reduceValue;\n },\n {},\n );\n\n return new JsonObjectValueStore(schema, rowId, value);\n};\n\nexport const createJsonArrayValueStore = (\n schema: JsonArrayStore,\n rowId: string,\n rawValue: JsonArray,\n): JsonArrayValueStore => {\n const value = rawValue.map((value) =>\n createJsonValueStore(schema.items, rowId, value),\n );\n\n return new JsonArrayValueStore(schema, rowId, value);\n};\n\nexport const createPrimitiveValueStore = (\n schema: JsonSchemaStorePrimitives,\n rowId: string,\n rawValue: JsonPrimitives,\n): JsonValueStorePrimitives => {\n if (schema.type === JsonSchemaTypeName.String) {\n return new JsonStringValueStore(schema, rowId, rawValue as string | null);\n } else if (schema.type === JsonSchemaTypeName.Number) {\n return new JsonNumberValueStore(schema, rowId, rawValue as number | null);\n } else if (schema.type === JsonSchemaTypeName.Boolean) {\n return new JsonBooleanValueStore(schema, rowId, rawValue as boolean | null);\n } else {\n throw new Error('this type is not allowed');\n }\n};\n","import { JsonArray, JsonValue } from '../../types/json.types.js';\nimport { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport {\n JsonArrayStore,\n MigrateItemsEvent,\n ReplaceItemsEvent,\n} from '../schema/json-array.store.js';\nimport { createJsonValueStore } from '../../lib/createJsonValueStore.js';\nimport { JsonValueStore, JsonValueStoreParent } from './json-value.store.js';\nimport { getTransformation } from './value-transformation.js';\n\nexport class JsonArrayValueStore {\n public readonly type = JsonSchemaTypeName.Array;\n\n public index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonArrayStore,\n public readonly rowId: string,\n public value: JsonValueStore[],\n ) {\n this.index = this.schema.registerValue(this);\n this.init();\n }\n\n public getPlainValue(): JsonArray {\n return this.value.map((item) => item.getPlainValue());\n }\n\n public migrateItems(event: MigrateItemsEvent) {\n const transformation = getTransformation(event.previousItems, event.items);\n\n this.value = this.value.map((valueItem) => {\n const rawValue = transformation\n ? (transformation(\n valueItem.getPlainValue(),\n event.items.default,\n ) as JsonValue)\n : event.items.default;\n\n return createJsonValueStore(event.items, this.rowId, rawValue);\n });\n }\n\n public replaceItems(event: ReplaceItemsEvent) {\n this.value = this.value.map(() => {\n const rawValue = this.getReplacedValue(event);\n\n return createJsonValueStore(event.items, this.rowId, rawValue);\n });\n }\n\n private getReplacedValue(event: ReplaceItemsEvent): JsonValue {\n const previousValue = event.items.getValue(this.rowId);\n\n if (previousValue) {\n return previousValue.getPlainValue();\n }\n\n return event.items.default;\n }\n\n private init() {\n for (const value of this.value) {\n value.parent = this;\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fileSchema, rowSchemaHashSchema, rowHashSchema, rowUpdatedAtSchema, rowPublishedAtSchema, rowCreatedAtSchema, rowCreatedIdSchema, rowVersionIdSchema, rowIdSchema } from './chunk-22K22MMD.js';
|
|
2
|
-
import { JsonArrayStore, JsonObjectStore, JsonStringStore, JsonNumberStore, JsonBooleanStore, JsonObjectValueStore, JsonArrayValueStore, createJsonValueStore, getTransformation } from './chunk-
|
|
2
|
+
import { JsonArrayStore, JsonObjectStore, JsonStringStore, JsonNumberStore, JsonBooleanStore, JsonObjectValueStore, JsonArrayValueStore, createJsonValueStore, getTransformation } from './chunk-WCFA4226.js';
|
|
3
3
|
|
|
4
4
|
// src/lib/createJsonSchemaStore.ts
|
|
5
5
|
var createJsonSchemaStore = (schema, refs = {}) => {
|
|
@@ -233,11 +233,11 @@ var applyMovePatch = (store, patch) => {
|
|
|
233
233
|
return foundFromParent.changeName(fromField, toField);
|
|
234
234
|
}
|
|
235
235
|
if (foundToParent.type === "object" /* Object */) {
|
|
236
|
-
foundFromParent.removeProperty(fromField);
|
|
237
236
|
if (foundToParent.getProperty(toField)) {
|
|
238
237
|
foundToParent.removeProperty(toField);
|
|
239
238
|
}
|
|
240
239
|
foundToParent.addPropertyWithStore(toField, foundFromField);
|
|
240
|
+
foundFromParent.removeProperty(fromField);
|
|
241
241
|
return;
|
|
242
242
|
}
|
|
243
243
|
if (foundToParent.type === "array" /* Array */) {
|
|
@@ -414,6 +414,181 @@ var getSegments = (path) => {
|
|
|
414
414
|
return segments;
|
|
415
415
|
};
|
|
416
416
|
|
|
417
|
+
// src/lib/json-path-utils.ts
|
|
418
|
+
function parsePath(path) {
|
|
419
|
+
if (!path) {
|
|
420
|
+
return [];
|
|
421
|
+
}
|
|
422
|
+
const segments = [];
|
|
423
|
+
const regex2 = /([^.[\]]+)|\[(\d+)]/g;
|
|
424
|
+
let match;
|
|
425
|
+
while (match = regex2.exec(path)) {
|
|
426
|
+
if (match[1] !== void 0) {
|
|
427
|
+
segments.push(match[1]);
|
|
428
|
+
} else if (match[2] !== void 0) {
|
|
429
|
+
segments.push(Number(match[2]));
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return segments;
|
|
433
|
+
}
|
|
434
|
+
function getValueByPath(obj, path) {
|
|
435
|
+
if (!path) {
|
|
436
|
+
return obj;
|
|
437
|
+
}
|
|
438
|
+
const segments = parsePath(path);
|
|
439
|
+
let current = obj;
|
|
440
|
+
for (const segment of segments) {
|
|
441
|
+
if (current == null) {
|
|
442
|
+
return void 0;
|
|
443
|
+
}
|
|
444
|
+
if (typeof segment === "number") {
|
|
445
|
+
if (!Array.isArray(current)) {
|
|
446
|
+
return void 0;
|
|
447
|
+
}
|
|
448
|
+
current = current[segment];
|
|
449
|
+
} else {
|
|
450
|
+
if (typeof current !== "object") {
|
|
451
|
+
return void 0;
|
|
452
|
+
}
|
|
453
|
+
current = current[segment];
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
return current;
|
|
457
|
+
}
|
|
458
|
+
function setValueByPath(obj, path, value) {
|
|
459
|
+
if (!path) {
|
|
460
|
+
throw new Error("Cannot set root value");
|
|
461
|
+
}
|
|
462
|
+
const segments = parsePath(path);
|
|
463
|
+
let current = obj;
|
|
464
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
465
|
+
const segment = segments[i];
|
|
466
|
+
const nextSegment = segments[i + 1];
|
|
467
|
+
if (typeof segment === "number") {
|
|
468
|
+
if (!Array.isArray(current)) {
|
|
469
|
+
throw new TypeError(
|
|
470
|
+
`Cannot set array index on non-array at segment ${i}`
|
|
471
|
+
);
|
|
472
|
+
}
|
|
473
|
+
const arr = current;
|
|
474
|
+
if (segment > arr.length) {
|
|
475
|
+
throw new Error(
|
|
476
|
+
`Cannot create sparse array: index ${segment} is out of bounds (array length: ${arr.length}) at segment ${i}`
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
if (arr[segment] == null) {
|
|
480
|
+
arr[segment] = typeof nextSegment === "number" ? [] : {};
|
|
481
|
+
}
|
|
482
|
+
current = arr[segment];
|
|
483
|
+
} else if (typeof segment === "string") {
|
|
484
|
+
if (current == null || typeof current !== "object" || Array.isArray(current)) {
|
|
485
|
+
throw new Error(`Cannot set property on non-object at segment ${i}`);
|
|
486
|
+
}
|
|
487
|
+
const obj2 = current;
|
|
488
|
+
if (obj2[segment] == null) {
|
|
489
|
+
obj2[segment] = typeof nextSegment === "number" ? [] : {};
|
|
490
|
+
}
|
|
491
|
+
current = obj2[segment];
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
const lastSegment = segments[segments.length - 1];
|
|
495
|
+
if (typeof lastSegment === "number") {
|
|
496
|
+
if (!Array.isArray(current)) {
|
|
497
|
+
throw new TypeError(
|
|
498
|
+
`Cannot set array index on non-array at segment ${segments.length - 1}`
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
const arr = current;
|
|
502
|
+
if (lastSegment > arr.length) {
|
|
503
|
+
throw new Error(
|
|
504
|
+
`Cannot create sparse array: index ${lastSegment} is out of bounds (array length: ${arr.length})`
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
arr[lastSegment] = value;
|
|
508
|
+
} else if (typeof lastSegment === "string") {
|
|
509
|
+
if (current == null || typeof current !== "object" || Array.isArray(current)) {
|
|
510
|
+
throw new Error(
|
|
511
|
+
`Cannot set property on non-object at segment ${segments.length - 1}`
|
|
512
|
+
);
|
|
513
|
+
}
|
|
514
|
+
current[lastSegment] = value;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
function hasPath(obj, path) {
|
|
518
|
+
const value = getValueByPath(obj, path);
|
|
519
|
+
return value !== void 0;
|
|
520
|
+
}
|
|
521
|
+
function deepEqual(a, b) {
|
|
522
|
+
if (a === b) {
|
|
523
|
+
return true;
|
|
524
|
+
}
|
|
525
|
+
if (a === null && b === null) {
|
|
526
|
+
return true;
|
|
527
|
+
}
|
|
528
|
+
if (a === void 0 && b === void 0) {
|
|
529
|
+
return true;
|
|
530
|
+
}
|
|
531
|
+
if (a == null || b == null) {
|
|
532
|
+
return false;
|
|
533
|
+
}
|
|
534
|
+
if (typeof a !== typeof b) {
|
|
535
|
+
return false;
|
|
536
|
+
}
|
|
537
|
+
if (typeof a !== "object") {
|
|
538
|
+
return false;
|
|
539
|
+
}
|
|
540
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
541
|
+
const arrA = a;
|
|
542
|
+
const arrB = b;
|
|
543
|
+
if (arrA.length !== arrB.length) {
|
|
544
|
+
return false;
|
|
545
|
+
}
|
|
546
|
+
for (let i = 0; i < arrA.length; i++) {
|
|
547
|
+
const itemA = arrA[i];
|
|
548
|
+
const itemB = arrB[i];
|
|
549
|
+
if (itemA !== void 0 && itemB !== void 0) {
|
|
550
|
+
if (itemA === null && itemB === null) {
|
|
551
|
+
continue;
|
|
552
|
+
}
|
|
553
|
+
if (!deepEqual(itemA, itemB)) {
|
|
554
|
+
return false;
|
|
555
|
+
}
|
|
556
|
+
} else if (itemA !== itemB) {
|
|
557
|
+
return false;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return true;
|
|
561
|
+
}
|
|
562
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
const objA = a;
|
|
566
|
+
const objB = b;
|
|
567
|
+
const keysA = Object.keys(objA);
|
|
568
|
+
const keysB = Object.keys(objB);
|
|
569
|
+
if (keysA.length !== keysB.length) {
|
|
570
|
+
return false;
|
|
571
|
+
}
|
|
572
|
+
for (const key of keysA) {
|
|
573
|
+
if (!keysB.includes(key)) {
|
|
574
|
+
return false;
|
|
575
|
+
}
|
|
576
|
+
const valA = objA[key];
|
|
577
|
+
const valB = objB[key];
|
|
578
|
+
if (valA !== void 0 && valB !== void 0) {
|
|
579
|
+
if (valA === null && valB === null) {
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
if (!deepEqual(valA, valB)) {
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
} else if (valA !== valB) {
|
|
586
|
+
return false;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
return true;
|
|
590
|
+
}
|
|
591
|
+
|
|
417
592
|
// src/lib/replaceForeignKeyValue.ts
|
|
418
593
|
var replaceForeignKeyValue = (options) => {
|
|
419
594
|
let wasUpdated = false;
|
|
@@ -514,6 +689,6 @@ var SchemaTable = class {
|
|
|
514
689
|
}
|
|
515
690
|
};
|
|
516
691
|
|
|
517
|
-
export { SchemaTable, VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE, applyAddPatch, applyMovePatch, applyRemovePatch, applyReplacePatch, createJsonObjectSchemaStore, createJsonSchemaStore, createPrimitiveStoreBySchema, getDBJsonPathByJsonSchemaStore, getForeignKeyPatchesFromSchema, getForeignKeysFromSchema, getForeignKeysFromValue, getInvalidFieldNamesInSchema, getJsonSchemaStoreByPath, getJsonValueStoreByPath, getParentForPath, getPathByStore, pluginRefs, replaceForeignKeyValue, resolveRefs, saveSharedFields, traverseStore, traverseValue, validateJsonFieldName };
|
|
518
|
-
//# sourceMappingURL=chunk-
|
|
519
|
-
//# sourceMappingURL=chunk-
|
|
692
|
+
export { SchemaTable, VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE, applyAddPatch, applyMovePatch, applyRemovePatch, applyReplacePatch, createJsonObjectSchemaStore, createJsonSchemaStore, createPrimitiveStoreBySchema, deepEqual, getDBJsonPathByJsonSchemaStore, getForeignKeyPatchesFromSchema, getForeignKeysFromSchema, getForeignKeysFromValue, getInvalidFieldNamesInSchema, getJsonSchemaStoreByPath, getJsonValueStoreByPath, getParentForPath, getPathByStore, getValueByPath, hasPath, parsePath, pluginRefs, replaceForeignKeyValue, resolveRefs, saveSharedFields, setValueByPath, traverseStore, traverseValue, validateJsonFieldName };
|
|
693
|
+
//# sourceMappingURL=chunk-TBECY7YZ.js.map
|
|
694
|
+
//# sourceMappingURL=chunk-TBECY7YZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/createJsonSchemaStore.ts","../src/lib/getJsonSchemaStoreByPath.ts","../src/lib/getParentForPath.ts","../src/lib/validateJsonFieldName.ts","../src/lib/applyPatches.ts","../src/lib/getDBJsonPathByJsonSchemaStore.ts","../src/lib/getPathByStore.ts","../src/lib/traverseStore.ts","../src/lib/getForeignKeyPatchesFromSchema.ts","../src/lib/getForeignKeysFromSchema.ts","../src/lib/traverseValue.ts","../src/lib/getForeignKeysFromValue.ts","../src/lib/getInvalidFieldNamesInSchema.ts","../src/lib/getJsonValueByPath.ts","../src/lib/json-path-utils.ts","../src/lib/replaceForeignKeyValue.ts","../src/lib/resolveRefs.ts","../src/lib/schema-table.ts"],"names":["regex","obj"],"mappings":"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","file":"chunk-TBECY7YZ.js","sourcesContent":["import {\n JsonObjectSchema,\n JsonSchema,\n JsonSchemaPrimitives,\n JsonSchemaTypeName,\n} from '../types/schema.types.js';\nimport { JsonArrayStore } from '../model/schema/json-array.store.js';\nimport { JsonBooleanStore } from '../model/schema/json-boolean.store.js';\nimport { JsonNumberStore } from '../model/schema/json-number.store.js';\nimport { JsonStringStore } from '../model/schema/json-string.store.js';\nimport { JsonObjectStore } from '../model/schema/json-object.store.js';\nimport {\n JsonSchemaStore,\n JsonSchemaStorePrimitives,\n} from '../model/schema/json-schema.store.js';\n\nexport type RefsType = Record<string, JsonSchema>;\n\nexport const createJsonSchemaStore = (\n schema: JsonSchema,\n refs: RefsType = {},\n): JsonSchemaStore => {\n if ('$ref' in schema) {\n const refSchema: JsonSchema | undefined = refs[schema.$ref];\n\n if (!refSchema) {\n throw new Error(`Not found schema for $ref=\"${schema.$ref}\"`);\n }\n\n const refStore = createJsonSchemaStore(refSchema, refs);\n saveSharedFields(refStore, schema);\n refStore.$ref = schema.$ref;\n return refStore;\n } else if (schema.type === JsonSchemaTypeName.Object) {\n const objectStore = createJsonObjectSchemaStore(schema, refs);\n saveSharedFields(objectStore, schema);\n\n return objectStore;\n } else if (schema.type === JsonSchemaTypeName.Array) {\n const itemsStore = createJsonSchemaStore(schema.items, refs);\n const arrayStore = new JsonArrayStore(itemsStore);\n saveSharedFields(arrayStore, schema);\n\n return arrayStore;\n } else {\n const primitivesStore = createPrimitiveStoreBySchema(schema);\n saveSharedFields(primitivesStore, schema);\n primitivesStore.readOnly = schema.readOnly;\n\n return primitivesStore;\n }\n};\n\nexport const createJsonObjectSchemaStore = (\n value: JsonObjectSchema,\n refs: RefsType,\n): JsonObjectStore => {\n const store = new JsonObjectStore();\n\n for (const requiredField of value.required) {\n if (!value.properties[requiredField]) {\n throw new Error(\n `Not found required field \"${requiredField}\" in \"properties\"`,\n );\n }\n }\n\n Object.entries(value.properties).forEach(([name, item]) => {\n store.addPropertyWithStore(name, createJsonSchemaStore(item, refs));\n });\n\n return store;\n};\n\nexport const createPrimitiveStoreBySchema = (\n schema: JsonSchemaPrimitives,\n): JsonSchemaStorePrimitives => {\n if (schema.type === JsonSchemaTypeName.String) {\n const stringStore = new JsonStringStore();\n stringStore.foreignKey = schema.foreignKey;\n stringStore.format = schema.format;\n stringStore.enum = schema.enum;\n stringStore.contentMediaType = schema.contentMediaType;\n stringStore.pattern = schema.pattern;\n return stringStore;\n } else if (schema.type === JsonSchemaTypeName.Number) {\n return new JsonNumberStore();\n } else if (schema.type === JsonSchemaTypeName.Boolean) {\n return new JsonBooleanStore();\n } else {\n throw new Error('this type is not allowed');\n }\n};\n\nexport const saveSharedFields = (\n store: JsonSchemaStore,\n schema: JsonSchema,\n) => {\n store.title = schema.title;\n store.description = schema.description;\n store.deprecated = schema.deprecated;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getJsonSchemaStoreByPath = (\n store: JsonSchemaStore,\n path: string,\n): JsonSchemaStore => {\n if (path === '') {\n return store;\n }\n\n if (path === '/') {\n throw new Error(\n 'invalid root path, need to use path=\"\" instead of path=\"/\"',\n );\n }\n\n const tokens = path.split('/');\n tokens.shift();\n\n let currentStore = store;\n\n let currentToken = tokens.shift();\n let currentPath = '';\n\n while (currentToken) {\n if (currentStore.type === JsonSchemaTypeName.Object) {\n if (currentToken !== 'properties') {\n throw new Error(\n `Expected \"${currentPath}/properties/*\" instead of ${currentPath}/${currentToken}/*`,\n );\n }\n\n currentPath = `${currentPath}/${currentToken}`;\n\n currentToken = tokens.shift();\n\n if (!currentToken) {\n throw new Error(`Expected property name after \"${currentPath}\"`);\n }\n\n const foundCurrentStore = currentStore.getProperty(currentToken);\n\n if (!foundCurrentStore) {\n throw new Error(`Not found \"${currentToken}\" in \"${currentPath}\"`);\n }\n\n currentStore = foundCurrentStore;\n currentPath = `${currentPath}/${currentToken}`;\n\n currentToken = tokens.shift();\n } else if (currentStore.type === JsonSchemaTypeName.Array) {\n if (currentToken !== 'items') {\n throw new Error(\n `Expected \"${currentPath}/items/*\" instead of ${currentPath}/${currentToken}/*`,\n );\n }\n\n currentPath = `${currentPath}/${currentToken}`;\n\n currentStore = currentStore.items;\n\n currentToken = tokens.shift();\n } else {\n throw new Error(`Unexpected \"${currentToken}\" in \"${currentPath}\"`);\n }\n }\n\n return currentStore;\n};\n","export const getParentForPath = (\n path: string,\n): { parentPath: string; field: string } => {\n if (path === '' || path === '/') {\n throw new Error('Invalid path');\n }\n\n const tokens = path.split('/');\n tokens.shift();\n\n let currentToken = tokens.shift();\n\n let parentPath = '';\n let field = '';\n\n while (currentToken) {\n if (currentToken === 'properties') {\n currentToken = tokens.shift();\n\n if (!currentToken) {\n throw new Error('Invalid path');\n }\n\n field = currentToken;\n\n currentToken = tokens.shift();\n\n if (currentToken) {\n parentPath = `${parentPath}/properties/${field}`;\n }\n } else if (currentToken === 'items') {\n field = currentToken;\n\n currentToken = tokens.shift();\n\n if (currentToken && !['items', 'properties'].includes(currentToken)) {\n throw new Error('Invalid path');\n } else if (currentToken) {\n parentPath = `${parentPath}/items`;\n }\n } else {\n throw new Error('Invalid path');\n }\n }\n\n return {\n parentPath: parentPath,\n field,\n };\n};\n","const maxLength = 64;\n\nexport const VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE = `It must contain between 1 and ${maxLength} characters, start with a letter or underscore (_), cannot start with two underscores (__), and can only include letters (a-z, A-Z), numbers (0-9), hyphens (-), and underscores (_).`;\n\nconst validPattern = /^(?!__)[a-zA-Z_][a-zA-Z0-9-_]*$/;\n\nexport const validateJsonFieldName = (id: string) => {\n const isInvalid =\n id.length < 1 || id.length > maxLength || !validPattern.test(id);\n\n return !isInvalid;\n};\n","import { JsonSchema, JsonSchemaTypeName } from '../types/schema.types.js';\nimport {\n JsonPatchAdd,\n JsonPatchMove,\n JsonPatchRemove,\n JsonPatchReplace,\n} from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { getJsonSchemaStoreByPath } from './getJsonSchemaStoreByPath.js';\nimport { getParentForPath } from './getParentForPath.js';\nimport {\n VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE,\n validateJsonFieldName,\n} from './validateJsonFieldName.js';\n\nexport const applyReplacePatch = (\n store: JsonSchemaStore,\n patch: JsonPatchReplace,\n refs: Record<string, JsonSchema> = {},\n): JsonSchemaStore => {\n const patchStore = createJsonSchemaStore(patch.value, refs);\n const foundStore = getJsonSchemaStoreByPath(store, patch.path);\n\n const parent = foundStore.parent;\n\n if (!parent) {\n return patchStore;\n }\n\n if (parent.type === JsonSchemaTypeName.Object) {\n parent.migratePropertyWithStore(foundStore.name, patchStore);\n } else if (parent.type === JsonSchemaTypeName.Array) {\n parent.migrateItems(patchStore);\n } else {\n throw new Error('Invalid parent');\n }\n\n return store;\n};\n\nexport const applyRemovePatch = (\n rootStore: JsonSchemaStore,\n patch: JsonPatchRemove,\n): void => {\n const foundStore = getJsonSchemaStoreByPath(rootStore, patch.path);\n const parent = foundStore.parent;\n\n if (!parent) {\n throw new Error('Parent does not exist');\n }\n\n if (parent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot remove from non-object');\n }\n\n parent.removeProperty(foundStore.name);\n};\n\nexport const applyAddPatch = (\n rootStore: JsonSchemaStore,\n patch: JsonPatchAdd,\n refs: Record<string, JsonSchema> = {},\n): void => {\n const patchStore = createJsonSchemaStore(patch.value, refs);\n\n const { parentPath, field } = getParentForPath(patch.path);\n const foundParent = getJsonSchemaStoreByPath(rootStore, parentPath);\n\n if (!foundParent) {\n throw new Error('Parent does not exist');\n }\n\n if (foundParent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot add to non-object');\n }\n\n if (foundParent.getProperty(field)) {\n throw new Error(`Field \"${field}\" already exists in parent`);\n }\n\n foundParent.addPropertyWithStore(field, patchStore);\n};\n\nexport const applyMovePatch = (\n store: JsonSchemaStore,\n patch: JsonPatchMove,\n): void => {\n const { parentPath: fromParentPath, field: fromField } = getParentForPath(\n patch.from,\n );\n const { parentPath: toParentPath, field: toField } = getParentForPath(\n patch.path,\n );\n\n const foundFromParent = getJsonSchemaStoreByPath(store, fromParentPath);\n const foundToParent = getJsonSchemaStoreByPath(store, toParentPath);\n\n const isValidToField = validateJsonFieldName(toField);\n\n if (!isValidToField) {\n throw new Error(\n `Invalid name: ${toField}. ${VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE}`,\n );\n }\n\n if (!foundFromParent || !foundToParent) {\n throw new Error('Cannot move from or to non-existent parent');\n }\n\n if (foundFromParent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot move from non-object parent');\n }\n\n const foundFromField = getJsonSchemaStoreByPath(store, patch.from);\n\n const isMovedPropertyInSameParentPatch =\n foundFromParent === foundToParent &&\n foundFromParent.type === JsonSchemaTypeName.Object &&\n foundFromParent.getProperty(fromField);\n\n if (isMovedPropertyInSameParentPatch) {\n return foundFromParent.changeName(fromField, toField);\n }\n\n if (foundToParent.type === JsonSchemaTypeName.Object) {\n if (foundToParent.getProperty(toField)) {\n foundToParent.removeProperty(toField);\n }\n foundToParent.addPropertyWithStore(toField, foundFromField);\n foundFromParent.removeProperty(fromField);\n return;\n }\n\n if (foundToParent.type === JsonSchemaTypeName.Array) {\n foundFromParent.removeProperty(fromField);\n foundToParent.replaceItems(foundFromField);\n\n return;\n }\n throw new Error('Invalid type of \"to\" parent');\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getDBJsonPathByJsonSchemaStore = (\n store: JsonSchemaStore,\n): string => {\n let node = store;\n\n let path = '';\n\n while (node.parent) {\n if (node.parent.type === JsonSchemaTypeName.Object) {\n path = `.${node.name}${path}`;\n } else if (node.parent.type === JsonSchemaTypeName.Array) {\n path = `[*]${path}`;\n }\n\n node = node.parent;\n }\n\n if (!path) {\n return '$';\n }\n\n return `$${path}`;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getPathByStore = (store: JsonSchemaStore): string => {\n let node = store;\n\n let path = '';\n\n while (node.parent) {\n if (node.parent.type === JsonSchemaTypeName.Object) {\n path = `/properties/${node.name}${path}`;\n } else if (node.parent.type === JsonSchemaTypeName.Array) {\n path = `/items${path}`;\n }\n\n node = node.parent;\n }\n\n if (!path) {\n return '/';\n }\n\n return `${path}`;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const traverseStore = (\n store: JsonSchemaStore,\n callback: (node: JsonSchemaStore) => void,\n) => {\n callback(store);\n\n if (store.type === JsonSchemaTypeName.Object) {\n Object.values(store.properties).forEach((item) => {\n traverseStore(item, callback);\n });\n } else if (store.type === JsonSchemaTypeName.Array) {\n traverseStore(store.items, callback);\n }\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonPatch, JsonPatchReplace } from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { getPathByStore } from './getPathByStore.js';\nimport { traverseStore } from './traverseStore.js';\n\nexport const getForeignKeyPatchesFromSchema = (\n store: JsonSchemaStore,\n options: { tableId: string; nextTableId: string },\n) => {\n const stores: JsonPatch[] = [];\n\n traverseStore(store, (item) => {\n if (\n item.type === JsonSchemaTypeName.String &&\n item.foreignKey === options.tableId\n ) {\n item.foreignKey = options.nextTableId;\n\n const patch: JsonPatchReplace = {\n op: 'replace',\n path: getPathByStore(item),\n value: item.getPlainSchema(),\n };\n\n stores.push(patch);\n }\n });\n\n return stores;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { traverseStore } from './traverseStore.js';\n\nexport const getForeignKeysFromSchema = (store: JsonSchemaStore): string[] => {\n const foreignKeys = new Set<string>();\n\n traverseStore(store, (item) => {\n if (item.type === JsonSchemaTypeName.String && item.foreignKey) {\n foreignKeys.add(item.foreignKey);\n }\n });\n\n return [...foreignKeys].sort((a, b) => a.localeCompare(b));\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\n\nexport const traverseValue = (\n store: JsonValueStore,\n callback: (node: JsonValueStore) => void,\n) => {\n callback(store);\n\n if (store.type === JsonSchemaTypeName.Object) {\n Object.values(store.value).forEach((item) => {\n traverseValue(item, callback);\n });\n } else if (store.type === JsonSchemaTypeName.Array) {\n store.value.forEach((itemValue) => {\n traverseValue(itemValue, callback);\n });\n }\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { traverseValue } from './traverseValue.js';\n\nexport type GetForeignKeysFromValueType = {\n tableId: string;\n rowIds: string[];\n};\n\nexport const getForeignKeysFromValue = (\n value: JsonValueStore,\n): GetForeignKeysFromValueType[] => {\n const foreignKeys = new Map<string, Set<string>>();\n\n traverseValue(value, (item) => {\n if (item.type === JsonSchemaTypeName.String && item.foreignKey) {\n let tableForeignKey = foreignKeys.get(item.foreignKey);\n\n if (!tableForeignKey) {\n tableForeignKey = new Set<string>();\n foreignKeys.set(item.foreignKey, tableForeignKey);\n }\n\n tableForeignKey.add(item.getPlainValue());\n }\n });\n\n return [...foreignKeys].map(([tableId, rowIds]) => ({\n tableId,\n rowIds: [...rowIds].sort((a, b) => a.localeCompare(b)),\n }));\n};\n","import { JsonSchema, JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { traverseStore } from './traverseStore.js';\nimport { validateJsonFieldName } from './validateJsonFieldName.js';\n\nexport const getInvalidFieldNamesInSchema = (\n schema: JsonSchema,\n refs: Record<string, JsonSchema> = {},\n) => {\n const schemaStore = createJsonSchemaStore(schema, refs);\n\n const invalidFields: JsonSchemaStore[] = [];\n\n traverseStore(schemaStore, (item) => {\n if (item.parent?.type === JsonSchemaTypeName.Object) {\n if (!validateJsonFieldName(item.name)) {\n invalidFields.push(item);\n }\n }\n });\n\n return invalidFields;\n};\n","import { JsonArrayValueStore } from '../model/value/json-array-value.store.js';\nimport { JsonObjectValueStore } from '../model/value/json-object-value.store.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\n\nexport const getJsonValueStoreByPath = (\n root: JsonValueStore,\n path: string,\n): JsonValueStore => {\n if (!path) {\n return root;\n }\n\n const segments = getSegments(path);\n\n let current: JsonValueStore = root;\n\n for (const seg of segments) {\n if (current instanceof JsonObjectValueStore) {\n const next = current.value[String(seg)];\n if (!next) {\n throw new Error(`Path not found at segment \"${seg}\"`);\n }\n current = next;\n } else if (current instanceof JsonArrayValueStore) {\n if (typeof seg !== 'number') {\n throw new Error(`Invalid array index \"${seg}\"`);\n }\n const next = current.value[seg];\n if (!next) {\n throw new Error(`Path not found at segment \"${seg}\"`);\n }\n current = next;\n } else {\n throw new Error(`Cannot navigate into primitive at segment \"${seg}\"`);\n }\n }\n\n return current;\n};\n\nconst regex = /([^.[\\]]+)|\\[(\\d+)]/g;\n\nconst getSegments = (path: string) => {\n const segments: (string | number)[] = [];\n\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(path))) {\n if (match[1] !== undefined) {\n segments.push(match[1]);\n } else if (match[2] !== undefined) {\n segments.push(Number(match[2]));\n }\n }\n\n return segments;\n};\n","import { JsonArray, JsonObject, JsonValue } from '../types';\n\n/**\n * Parse path string into segments\n *\n * @param path - Path string (e.g., \"title\", \"address.city\", \"tags[0]\", \"users[0].name\")\n * @returns Array of segments (strings and numbers)\n *\n * @example\n * parsePath(\"title\") // [\"title\"]\n * parsePath(\"address.city\") // [\"address\", \"city\"]\n * parsePath(\"tags[0]\") // [\"tags\", 0]\n * parsePath(\"users[0].name\") // [\"users\", 0, \"name\"]\n * parsePath(\"matrix[0][1]\") // [\"matrix\", 0, 1]\n */\nexport function parsePath(path: string): (string | number)[] {\n if (!path) {\n return [];\n }\n\n const segments: (string | number)[] = [];\n\n const regex = /([^.[\\]]+)|\\[(\\d+)]/g;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(path))) {\n if (match[1] !== undefined) {\n segments.push(match[1]);\n } else if (match[2] !== undefined) {\n segments.push(Number(match[2]));\n }\n }\n\n return segments;\n}\n\n/**\n * Get value by path from plain JavaScript object\n *\n * @param obj - Object to navigate\n * @param path - Path string (e.g., \"address.city\", \"tags[0]\")\n * @returns Value at path, or undefined if path doesn't exist\n *\n * @example\n * const obj = { address: { city: \"Moscow\" }, tags: [\"a\", \"b\"] };\n * getValueByPath(obj, \"address.city\") // \"Moscow\"\n * getValueByPath(obj, \"tags[1]\") // \"b\"\n * getValueByPath(obj, \"nonexistent\") // undefined\n */\nexport function getValueByPath(\n obj: JsonValue | undefined,\n path: string,\n): JsonValue | undefined {\n if (!path) {\n return obj;\n }\n\n const segments = parsePath(path);\n let current: JsonValue | undefined = obj;\n\n for (const segment of segments) {\n if (current == null) {\n return undefined;\n }\n\n if (typeof segment === 'number') {\n if (!Array.isArray(current)) {\n return undefined;\n }\n current = current[segment];\n } else {\n if (typeof current !== 'object') {\n return undefined;\n }\n current = (current as JsonObject)[segment];\n }\n }\n\n return current;\n}\n\n/**\n * Set value by path in plain JavaScript object\n * Creates intermediate objects/arrays as needed\n *\n * @param obj - Object to modify\n * @param path - Path string (e.g., \"address.city\", \"tags[0]\")\n * @param value - Value to set\n *\n * @example\n * const obj = {};\n * setValueByPath(obj, \"address.city\", \"London\");\n * // obj is now { address: { city: \"London\" } }\n *\n * setValueByPath(obj, \"tags[0]\", \"first\");\n * // obj is now { address: { city: \"London\" }, tags: [\"first\"] }\n */\nexport function setValueByPath(\n obj: JsonValue,\n path: string,\n value: JsonValue,\n): void {\n if (!path) {\n throw new Error('Cannot set root value');\n }\n\n const segments = parsePath(path);\n let current: JsonValue | undefined = obj;\n\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i] as string | number;\n const nextSegment = segments[i + 1];\n\n if (typeof segment === 'number') {\n if (!Array.isArray(current)) {\n throw new TypeError(\n `Cannot set array index on non-array at segment ${i}`,\n );\n }\n\n const arr: JsonArray = current;\n\n if (segment > arr.length) {\n throw new Error(\n `Cannot create sparse array: index ${segment} is out of bounds (array length: ${arr.length}) at segment ${i}`,\n );\n }\n\n if (arr[segment] == null) {\n arr[segment] = typeof nextSegment === 'number' ? [] : {};\n }\n\n current = arr[segment];\n } else if (typeof segment === 'string') {\n if (\n current == null ||\n typeof current !== 'object' ||\n Array.isArray(current)\n ) {\n throw new Error(`Cannot set property on non-object at segment ${i}`);\n }\n\n const obj: JsonObject = current;\n if (obj[segment] == null) {\n obj[segment] = typeof nextSegment === 'number' ? [] : {};\n }\n\n current = obj[segment];\n }\n }\n\n const lastSegment = segments[segments.length - 1] as string | number;\n\n if (typeof lastSegment === 'number') {\n if (!Array.isArray(current)) {\n throw new TypeError(\n `Cannot set array index on non-array at segment ${segments.length - 1}`,\n );\n }\n\n const arr: JsonArray = current;\n\n if (lastSegment > arr.length) {\n throw new Error(\n `Cannot create sparse array: index ${lastSegment} is out of bounds (array length: ${arr.length})`,\n );\n }\n\n arr[lastSegment] = value;\n } else if (typeof lastSegment === 'string') {\n if (\n current == null ||\n typeof current !== 'object' ||\n Array.isArray(current)\n ) {\n throw new Error(\n `Cannot set property on non-object at segment ${segments.length - 1}`,\n );\n }\n (current as JsonObject)[lastSegment] = value;\n }\n}\n\n/**\n * Check if path exists in object\n *\n * @param obj - Object to check\n * @param path - Path string (e.g., \"address.city\", \"tags[0]\")\n * @returns true if path exists and value is not undefined\n *\n * @example\n * const obj = { address: { city: \"Moscow\" } };\n * hasPath(obj, \"address.city\") // true\n * hasPath(obj, \"address.country\") // false\n */\nexport function hasPath(obj: JsonValue, path: string): boolean {\n const value = getValueByPath(obj, path);\n return value !== undefined;\n}\n\n/**\n * Deep equality comparison for plain JavaScript values\n * Handles objects, arrays, primitives, null, undefined\n *\n * @param a - First value\n * @param b - Second value\n * @returns true if values are deeply equal\n *\n * @example\n * deepEqual({ a: 1, b: 2 }, { a: 1, b: 2 }) // true\n * deepEqual([1, 2, 3], [1, 2, 3]) // true\n * deepEqual({ a: 1 }, { a: 2 }) // false\n * deepEqual(null, null) // true\n * deepEqual(undefined, undefined) // true\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true;\n }\n\n if (a === null && b === null) {\n return true;\n }\n\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a !== 'object') {\n return false;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n const arrA = a as JsonArray;\n const arrB = b as JsonArray;\n if (arrA.length !== arrB.length) {\n return false;\n }\n for (let i = 0; i < arrA.length; i++) {\n const itemA = arrA[i];\n const itemB = arrB[i];\n\n if (itemA !== undefined && itemB !== undefined) {\n if (itemA === null && itemB === null) {\n continue;\n }\n if (!deepEqual(itemA, itemB)) {\n return false;\n }\n } else if (itemA !== itemB) {\n return false;\n }\n }\n return true;\n }\n\n if (Array.isArray(a) || Array.isArray(b)) {\n return false;\n }\n\n const objA = a as JsonObject;\n const objB = b as JsonObject;\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (const key of keysA) {\n if (!keysB.includes(key)) {\n return false;\n }\n const valA = objA[key];\n const valB = objB[key];\n\n if (valA !== undefined && valB !== undefined) {\n if (valA === null && valB === null) {\n continue;\n }\n if (!deepEqual(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { traverseValue } from './traverseValue.js';\n\nexport type ReplaceForeignKeyValueOptions = {\n valueStore: JsonValueStore;\n foreignKey: string;\n value: string;\n nextValue: string;\n};\n\nexport const replaceForeignKeyValue = (\n options: ReplaceForeignKeyValueOptions,\n) => {\n let wasUpdated = false;\n\n traverseValue(options.valueStore, (item) => {\n if (\n item.type === JsonSchemaTypeName.String &&\n item.foreignKey === options.foreignKey &&\n item.value === options.value\n ) {\n item.value = options.nextValue;\n wasUpdated = true;\n }\n });\n\n return wasUpdated;\n};\n","import { SystemSchemaIds } from '../consts/system-schema-ids.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport {\n fileSchema,\n rowCreatedAtSchema,\n rowCreatedIdSchema,\n rowHashSchema,\n rowPublishedAtSchema,\n rowSchemaHashSchema,\n rowUpdatedAtSchema,\n rowVersionIdSchema,\n rowIdSchema,\n} from '../plugins/index.js';\nimport { JsonSchema } from '../types/schema.types.js';\n\nexport const pluginRefs: Readonly<Record<string, JsonSchema>> = {\n [SystemSchemaIds.RowId]: rowIdSchema,\n [SystemSchemaIds.RowVersionId]: rowVersionIdSchema,\n [SystemSchemaIds.RowCreatedId]: rowCreatedIdSchema,\n [SystemSchemaIds.RowCreatedAt]: rowCreatedAtSchema,\n [SystemSchemaIds.RowPublishedAt]: rowPublishedAtSchema,\n [SystemSchemaIds.RowUpdatedAt]: rowUpdatedAtSchema,\n [SystemSchemaIds.RowHash]: rowHashSchema,\n [SystemSchemaIds.RowSchemaHash]: rowSchemaHashSchema,\n [SystemSchemaIds.File]: fileSchema,\n};\n\nexport const resolveRefs = (schema: JsonSchema) => {\n const store = createJsonSchemaStore(schema, pluginRefs);\n return store.getPlainSchema({ skip$Ref: true });\n};\n","import { JsonSchema } from '../types/schema.types.js';\nimport { JsonValue } from '../types/json.types.js';\nimport { JsonPatch } from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { getTransformation } from '../model/value/value-transformation.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { createJsonValueStore } from './createJsonValueStore.js';\nimport {\n applyAddPatch,\n applyMovePatch,\n applyRemovePatch,\n applyReplacePatch,\n} from './applyPatches.js';\n\nexport class SchemaTable {\n private readonly rows = new Map<string, JsonValueStore>();\n private store: JsonSchemaStore;\n\n constructor(\n schema: JsonSchema,\n private readonly refs: Record<string, JsonSchema> = {},\n ) {\n this.store = createJsonSchemaStore(schema, refs);\n }\n\n public applyPatches(patches: JsonPatch[]): void {\n patches.forEach((patch) => {\n switch (patch.op) {\n case 'replace': {\n const nextStore = applyReplacePatch(this.store, patch, this.refs);\n if (nextStore !== this.store) {\n this.migrateRows(nextStore);\n }\n break;\n }\n case 'remove': {\n applyRemovePatch(this.store, patch);\n break;\n }\n case 'add': {\n applyAddPatch(this.store, patch, this.refs);\n break;\n }\n case 'move': {\n applyMovePatch(this.store, patch);\n break;\n }\n default:\n throw new Error(`Unsupported patch operation`);\n }\n });\n }\n\n public getSchema(): JsonSchema {\n return this.store.getPlainSchema();\n }\n\n public addRow(rowId: string, data: JsonValue) {\n const row = createJsonValueStore(this.store, rowId, data);\n\n this.rows.set(rowId, row);\n }\n\n public getRow(id: string): JsonValue {\n const row = this.rows.get(id);\n\n if (!row) {\n throw new Error('Invalid id');\n }\n\n return row.getPlainValue();\n }\n\n public getRows(): { id: string; data: JsonValue }[] {\n return [...this.rows].map(([id, data]) => ({\n id,\n data: data.getPlainValue(),\n }));\n }\n\n private migrateRows(nextStore: JsonSchemaStore): void {\n const transformation = getTransformation(this.store, nextStore);\n\n if (transformation) {\n for (const [rowId, row] of this.rows) {\n const rawNextValue = transformation(\n row.getPlainValue(),\n nextStore.default,\n ) as JsonValue;\n\n const nextRow = createJsonValueStore(nextStore, rowId, rawNextValue);\n this.rows.set(rowId, nextRow);\n }\n }\n\n this.store = nextStore;\n }\n}\n"]}
|