@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.
@@ -433,7 +433,7 @@ var JsonBooleanValueStore = class {
433
433
  };
434
434
 
435
435
  // src/model/value/value-transformation.ts
436
- var equel = (value) => value;
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
- } else if (from instanceof JsonArrayStore) {
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 equel;
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.equel = equel;
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-BQWQLLSC.cjs.map
719
- //# sourceMappingURL=chunk-BQWQLLSC.cjs.map
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-62P6L7GI.js';
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-22HBQQF4.js.map
519
- //# sourceMappingURL=chunk-22HBQQF4.js.map
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"]}