@revisium/schema-toolkit 0.2.1 → 0.2.2

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.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk47AQWLHU_cjs = require('./chunk-47AQWLHU.cjs');
4
- var chunkBQWQLLSC_cjs = require('./chunk-BQWQLLSC.cjs');
4
+ var chunkJLIZ7QT2_cjs = require('./chunk-JLIZ7QT2.cjs');
5
5
 
6
6
  // src/lib/createJsonSchemaStore.ts
7
7
  var createJsonSchemaStore = (schema, refs = {}) => {
@@ -20,7 +20,7 @@ var createJsonSchemaStore = (schema, refs = {}) => {
20
20
  return objectStore;
21
21
  } else if (schema.type === "array" /* Array */) {
22
22
  const itemsStore = createJsonSchemaStore(schema.items, refs);
23
- const arrayStore = new chunkBQWQLLSC_cjs.JsonArrayStore(itemsStore);
23
+ const arrayStore = new chunkJLIZ7QT2_cjs.JsonArrayStore(itemsStore);
24
24
  saveSharedFields(arrayStore, schema);
25
25
  return arrayStore;
26
26
  } else {
@@ -31,7 +31,7 @@ var createJsonSchemaStore = (schema, refs = {}) => {
31
31
  }
32
32
  };
33
33
  var createJsonObjectSchemaStore = (value, refs) => {
34
- const store = new chunkBQWQLLSC_cjs.JsonObjectStore();
34
+ const store = new chunkJLIZ7QT2_cjs.JsonObjectStore();
35
35
  for (const requiredField of value.required) {
36
36
  if (!value.properties[requiredField]) {
37
37
  throw new Error(
@@ -46,7 +46,7 @@ var createJsonObjectSchemaStore = (value, refs) => {
46
46
  };
47
47
  var createPrimitiveStoreBySchema = (schema) => {
48
48
  if (schema.type === "string" /* String */) {
49
- const stringStore = new chunkBQWQLLSC_cjs.JsonStringStore();
49
+ const stringStore = new chunkJLIZ7QT2_cjs.JsonStringStore();
50
50
  stringStore.foreignKey = schema.foreignKey;
51
51
  stringStore.format = schema.format;
52
52
  stringStore.enum = schema.enum;
@@ -54,9 +54,9 @@ var createPrimitiveStoreBySchema = (schema) => {
54
54
  stringStore.pattern = schema.pattern;
55
55
  return stringStore;
56
56
  } else if (schema.type === "number" /* Number */) {
57
- return new chunkBQWQLLSC_cjs.JsonNumberStore();
57
+ return new chunkJLIZ7QT2_cjs.JsonNumberStore();
58
58
  } else if (schema.type === "boolean" /* Boolean */) {
59
- return new chunkBQWQLLSC_cjs.JsonBooleanStore();
59
+ return new chunkJLIZ7QT2_cjs.JsonBooleanStore();
60
60
  } else {
61
61
  throw new Error("this type is not allowed");
62
62
  }
@@ -235,11 +235,11 @@ var applyMovePatch = (store, patch) => {
235
235
  return foundFromParent.changeName(fromField, toField);
236
236
  }
237
237
  if (foundToParent.type === "object" /* Object */) {
238
- foundFromParent.removeProperty(fromField);
239
238
  if (foundToParent.getProperty(toField)) {
240
239
  foundToParent.removeProperty(toField);
241
240
  }
242
241
  foundToParent.addPropertyWithStore(toField, foundFromField);
242
+ foundFromParent.removeProperty(fromField);
243
243
  return;
244
244
  }
245
245
  if (foundToParent.type === "array" /* Array */) {
@@ -381,13 +381,13 @@ var getJsonValueStoreByPath = (root, path) => {
381
381
  const segments = getSegments(path);
382
382
  let current = root;
383
383
  for (const seg of segments) {
384
- if (current instanceof chunkBQWQLLSC_cjs.JsonObjectValueStore) {
384
+ if (current instanceof chunkJLIZ7QT2_cjs.JsonObjectValueStore) {
385
385
  const next = current.value[String(seg)];
386
386
  if (!next) {
387
387
  throw new Error(`Path not found at segment "${seg}"`);
388
388
  }
389
389
  current = next;
390
- } else if (current instanceof chunkBQWQLLSC_cjs.JsonArrayValueStore) {
390
+ } else if (current instanceof chunkJLIZ7QT2_cjs.JsonArrayValueStore) {
391
391
  if (typeof seg !== "number") {
392
392
  throw new Error(`Invalid array index "${seg}"`);
393
393
  }
@@ -484,7 +484,7 @@ var SchemaTable = class {
484
484
  return this.store.getPlainSchema();
485
485
  }
486
486
  addRow(rowId, data) {
487
- const row = chunkBQWQLLSC_cjs.createJsonValueStore(this.store, rowId, data);
487
+ const row = chunkJLIZ7QT2_cjs.createJsonValueStore(this.store, rowId, data);
488
488
  this.rows.set(rowId, row);
489
489
  }
490
490
  getRow(id) {
@@ -501,14 +501,14 @@ var SchemaTable = class {
501
501
  }));
502
502
  }
503
503
  migrateRows(nextStore) {
504
- const transformation = chunkBQWQLLSC_cjs.getTransformation(this.store, nextStore);
504
+ const transformation = chunkJLIZ7QT2_cjs.getTransformation(this.store, nextStore);
505
505
  if (transformation) {
506
506
  for (const [rowId, row] of this.rows) {
507
507
  const rawNextValue = transformation(
508
508
  row.getPlainValue(),
509
509
  nextStore.default
510
510
  );
511
- const nextRow = chunkBQWQLLSC_cjs.createJsonValueStore(nextStore, rowId, rawNextValue);
511
+ const nextRow = chunkJLIZ7QT2_cjs.createJsonValueStore(nextStore, rowId, rawNextValue);
512
512
  this.rows.set(rowId, nextRow);
513
513
  }
514
514
  }
@@ -541,5 +541,5 @@ exports.saveSharedFields = saveSharedFields;
541
541
  exports.traverseStore = traverseStore;
542
542
  exports.traverseValue = traverseValue;
543
543
  exports.validateJsonFieldName = validateJsonFieldName;
544
- //# sourceMappingURL=chunk-RV56Z2F4.cjs.map
545
- //# sourceMappingURL=chunk-RV56Z2F4.cjs.map
544
+ //# sourceMappingURL=chunk-2GCG6HJO.cjs.map
545
+ //# sourceMappingURL=chunk-2GCG6HJO.cjs.map
@@ -1 +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/replaceForeignKeyValue.ts","../src/lib/resolveRefs.ts","../src/lib/schema-table.ts"],"names":["JsonArrayStore","JsonObjectStore","JsonStringStore","JsonNumberStore","JsonBooleanStore","JsonObjectValueStore","JsonArrayValueStore","rowIdSchema","rowVersionIdSchema","rowCreatedIdSchema","rowCreatedAtSchema","rowPublishedAtSchema","rowUpdatedAtSchema","rowHashSchema","rowSchemaHashSchema","fileSchema","createJsonValueStore","getTransformation"],"mappings":";;;;;;AAkBO,IAAM,qBAAA,GAAwB,CACnC,MAAA,EACA,IAAA,GAAiB,EAAC,KACE;AACpB,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,MAAM,SAAA,GAAoC,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAE1D,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,MAAA,CAAO,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IAC9D;AAEA,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,SAAA,EAAW,IAAI,CAAA;AACtD,IAAA,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACjC,IAAA,QAAA,CAAS,OAAO,MAAA,CAAO,IAAA;AACvB,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,MAAM,WAAA,GAAc,2BAAA,CAA4B,MAAA,EAAQ,IAAI,CAAA;AAC5D,IAAA,gBAAA,CAAiB,aAAa,MAAM,CAAA;AAEpC,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAC3D,IAAA,MAAM,UAAA,GAAa,IAAIA,gCAAA,CAAe,UAAU,CAAA;AAChD,IAAA,gBAAA,CAAiB,YAAY,MAAM,CAAA;AAEnC,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,MAAM,eAAA,GAAkB,6BAA6B,MAAM,CAAA;AAC3D,IAAA,gBAAA,CAAiB,iBAAiB,MAAM,CAAA;AACxC,IAAA,eAAA,CAAgB,WAAW,MAAA,CAAO,QAAA;AAElC,IAAA,OAAO,eAAA;AAAA,EACT;AACF;AAEO,IAAM,2BAAA,GAA8B,CACzC,KAAA,EACA,IAAA,KACoB;AACpB,EAAA,MAAM,KAAA,GAAQ,IAAIC,iCAAA,EAAgB;AAElC,EAAA,KAAA,MAAW,aAAA,IAAiB,MAAM,QAAA,EAAU;AAC1C,IAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,aAAa,CAAA,EAAG;AACpC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,6BAA6B,aAAa,CAAA,iBAAA;AAAA,OAC5C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,UAAU,CAAA,CAAE,QAAQ,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM;AACzD,IAAA,KAAA,CAAM,oBAAA,CAAqB,IAAA,EAAM,qBAAA,CAAsB,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EACpE,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,4BAAA,GAA+B,CAC1C,MAAA,KAC8B;AAC9B,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAM,WAAA,GAAc,IAAIC,iCAAA,EAAgB;AACxC,IAAA,WAAA,CAAY,aAAa,MAAA,CAAO,UAAA;AAChC,IAAA,WAAA,CAAY,SAAS,MAAA,CAAO,MAAA;AAC5B,IAAA,WAAA,CAAY,OAAO,MAAA,CAAO,IAAA;AAC1B,IAAA,WAAA,CAAY,mBAAmB,MAAA,CAAO,gBAAA;AACtC,IAAA,WAAA,CAAY,UAAU,MAAA,CAAO,OAAA;AAC7B,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,OAAO,IAAIC,iCAAA,EAAgB;AAAA,EAC7B,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,SAAA,gBAAqC;AACrD,IAAA,OAAO,IAAIC,kCAAA,EAAiB;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AACF;AAEO,IAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,MAAA,KACG;AACH,EAAA,KAAA,CAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,EAAA,KAAA,CAAM,cAAc,MAAA,CAAO,WAAA;AAC3B,EAAA,KAAA,CAAM,aAAa,MAAA,CAAO,UAAA;AAC5B;;;AClGO,IAAM,wBAAA,GAA2B,CACtC,KAAA,EACA,IAAA,KACoB;AACpB,EAAA,IAAI,SAAS,EAAA,EAAI;AACf,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAS,GAAA,EAAK;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,MAAA,CAAO,KAAA,EAAM;AAEb,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,IAAI,YAAA,GAAe,OAAO,KAAA,EAAM;AAChC,EAAA,IAAI,WAAA,GAAc,EAAA;AAElB,EAAA,OAAO,YAAA,EAAc;AACnB,IAAA,IAAI,aAAa,IAAA,KAAA,QAAA,eAAoC;AACnD,MAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,UAAA,EAAa,WAAW,CAAA,0BAAA,EAA6B,WAAW,IAAI,YAAY,CAAA,EAAA;AAAA,SAClF;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,MACjE;AAEA,MAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,WAAA,CAAY,YAAY,CAAA;AAE/D,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,YAAY,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,MACnE;AAEA,MAAA,YAAA,GAAe,iBAAA;AACf,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAAA,IAC9B,CAAA,MAAA,IAAW,aAAa,IAAA,KAAA,OAAA,cAAmC;AACzD,MAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,UAAA,EAAa,WAAW,CAAA,qBAAA,EAAwB,WAAW,IAAI,YAAY,CAAA,EAAA;AAAA,SAC7E;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,YAAA,CAAa,KAAA;AAE5B,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,YAAY,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,IACpE;AAAA,EACF;AAEA,EAAA,OAAO,YAAA;AACT;;;ACrEO,IAAM,gBAAA,GAAmB,CAC9B,IAAA,KAC0C;AAC1C,EAAA,IAAI,IAAA,KAAS,EAAA,IAAM,IAAA,KAAS,GAAA,EAAK;AAC/B,IAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,EAChC;AAEA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,MAAA,CAAO,KAAA,EAAM;AAEb,EAAA,IAAI,YAAA,GAAe,OAAO,KAAA,EAAM;AAEhC,EAAA,IAAI,UAAA,GAAa,EAAA;AACjB,EAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,EAAA,OAAO,YAAA,EAAc;AACnB,IAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,MAChC;AAEA,MAAA,KAAA,GAAQ,YAAA;AAER,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA;AAAA,MAChD;AAAA,IACF,CAAA,MAAA,IAAW,iBAAiB,OAAA,EAAS;AACnC,MAAA,KAAA,GAAQ,YAAA;AAER,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,YAAA,IAAgB,CAAC,CAAC,OAAA,EAAS,YAAY,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG;AACnE,QAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,MAChC,WAAW,YAAA,EAAc;AACvB,QAAA,UAAA,GAAa,GAAG,UAAU,CAAA,MAAA,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACjDA,IAAM,SAAA,GAAY,EAAA;AAEX,IAAM,sCAAA,GAAyC,iCAAiC,SAAS,CAAA,qLAAA;AAEhG,IAAM,YAAA,GAAe,iCAAA;AAEd,IAAM,qBAAA,GAAwB,CAAC,EAAA,KAAe;AACnD,EAAA,MAAM,SAAA,GACJ,EAAA,CAAG,MAAA,GAAS,CAAA,IAAK,EAAA,CAAG,SAAS,SAAA,IAAa,CAAC,YAAA,CAAa,IAAA,CAAK,EAAE,CAAA;AAEjE,EAAA,OAAO,CAAC,SAAA;AACV;;;ACKO,IAAM,oBAAoB,CAC/B,KAAA,EACA,KAAA,EACA,IAAA,GAAmC,EAAC,KAChB;AACpB,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAa,wBAAA,CAAyB,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA;AAE7D,EAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAE1B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAA,CAAO,wBAAA,CAAyB,UAAA,CAAW,IAAA,EAAM,UAAU,CAAA;AAAA,EAC7D,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,MAAA,CAAO,aAAa,UAAU,CAAA;AAAA,EAChC,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAAA,EAClC;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,CAC9B,SAAA,EACA,KAAA,KACS;AACT,EAAA,MAAM,UAAA,GAAa,wBAAA,CAAyB,SAAA,EAAW,KAAA,CAAM,IAAI,CAAA;AACjE,EAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAE1B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,EACjD;AAEA,EAAA,MAAA,CAAO,cAAA,CAAe,WAAW,IAAI,CAAA;AACvC;AAEO,IAAM,gBAAgB,CAC3B,SAAA,EACA,KAAA,EACA,IAAA,GAAmC,EAAC,KAC3B;AACT,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAE1D,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAM,GAAI,gBAAA,CAAiB,MAAM,IAAI,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,wBAAA,CAAyB,SAAA,EAAW,UAAU,CAAA;AAElE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,YAAY,IAAA,KAAA,QAAA,eAAoC;AAClD,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAI,WAAA,CAAY,WAAA,CAAY,KAAK,CAAA,EAAG;AAClC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,OAAA,EAAU,KAAK,CAAA,0BAAA,CAA4B,CAAA;AAAA,EAC7D;AAEA,EAAA,WAAA,CAAY,oBAAA,CAAqB,OAAO,UAAU,CAAA;AACpD;AAEO,IAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,KAAA,KACS;AACT,EAAA,MAAM,EAAE,UAAA,EAAY,cAAA,EAAgB,KAAA,EAAO,WAAU,GAAI,gBAAA;AAAA,IACvD,KAAA,CAAM;AAAA,GACR;AACA,EAAA,MAAM,EAAE,UAAA,EAAY,YAAA,EAAc,KAAA,EAAO,SAAQ,GAAI,gBAAA;AAAA,IACnD,KAAA,CAAM;AAAA,GACR;AAEA,EAAA,MAAM,eAAA,GAAkB,wBAAA,CAAyB,KAAA,EAAO,cAAc,CAAA;AACtE,EAAA,MAAM,aAAA,GAAgB,wBAAA,CAAyB,KAAA,EAAO,YAAY,CAAA;AAElE,EAAA,MAAM,cAAA,GAAiB,sBAAsB,OAAO,CAAA;AAEpD,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,cAAA,EAAiB,OAAO,CAAA,EAAA,EAAK,sCAAsC,CAAA;AAAA,KACrE;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,aAAA,EAAe;AACtC,IAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,EAC9D;AAEA,EAAA,IAAI,gBAAgB,IAAA,KAAA,QAAA,eAAoC;AACtD,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,wBAAA,CAAyB,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA;AAEjE,EAAA,MAAM,mCACJ,eAAA,KAAoB,aAAA,IACpB,gBAAgB,IAAA,KAAA,QAAA,iBAChB,eAAA,CAAgB,YAAY,SAAS,CAAA;AAEvC,EAAA,IAAI,gCAAA,EAAkC;AACpC,IAAA,OAAO,eAAA,CAAgB,UAAA,CAAW,SAAA,EAAW,OAAO,CAAA;AAAA,EACtD;AAEA,EAAA,IAAI,cAAc,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,eAAA,CAAgB,eAAe,SAAS,CAAA;AACxC,IAAA,IAAI,aAAA,CAAc,WAAA,CAAY,OAAO,CAAA,EAAG;AACtC,MAAA,aAAA,CAAc,eAAe,OAAO,CAAA;AAAA,IACtC;AACA,IAAA,aAAA,CAAc,oBAAA,CAAqB,SAAS,cAAc,CAAA;AAC1D,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,cAAc,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,eAAA,CAAgB,eAAe,SAAS,CAAA;AACxC,IAAA,aAAA,CAAc,aAAa,cAAc,CAAA;AAEzC,IAAA;AAAA,EACF;AACA,EAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAC/C;;;AC1IO,IAAM,8BAAA,GAAiC,CAC5C,KAAA,KACW;AACX,EAAA,IAAI,IAAA,GAAO,KAAA;AAEX,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,IAAI,IAAA,CAAK,OAAO,IAAA,KAAA,QAAA,eAAoC;AAClD,MAAA,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAAA,IAC7B,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAA,OAAA,cAAmC;AACxD,MAAA,IAAA,GAAO,MAAM,IAAI,CAAA,CAAA;AAAA,IACnB;AAEA,IAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAI,IAAI,CAAA,CAAA;AACjB;;;ACtBO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAmC;AAChE,EAAA,IAAI,IAAA,GAAO,KAAA;AAEX,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,IAAI,IAAA,CAAK,OAAO,IAAA,KAAA,QAAA,eAAoC;AAClD,MAAA,IAAA,GAAO,CAAA,YAAA,EAAe,IAAA,CAAK,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAAA,IACxC,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAA,OAAA,cAAmC;AACxD,MAAA,IAAA,GAAO,SAAS,IAAI,CAAA,CAAA;AAAA,IACtB;AAEA,IAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,GAAG,IAAI,CAAA,CAAA;AAChB;;;ACpBO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,QAAA,KACG;AACH,EAAA,QAAA,CAAS,KAAK,CAAA;AAEd,EAAA,IAAI,MAAM,IAAA,KAAA,QAAA,eAAoC;AAC5C,IAAA,MAAA,CAAO,OAAO,KAAA,CAAM,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAChD,MAAA,aAAA,CAAc,MAAM,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,MAAM,IAAA,KAAA,OAAA,cAAmC;AAClD,IAAA,aAAA,CAAc,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,EACrC;AACF;;;ACVO,IAAM,8BAAA,GAAiC,CAC5C,KAAA,EACA,OAAA,KACG;AACH,EAAA,MAAM,SAAsB,EAAC;AAE7B,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IACE,IAAA,CAAK,IAAA,KAAA,QAAA,iBACL,IAAA,CAAK,UAAA,KAAe,QAAQ,OAAA,EAC5B;AACA,MAAA,IAAA,CAAK,aAAa,OAAA,CAAQ,WAAA;AAE1B,MAAA,MAAM,KAAA,GAA0B;AAAA,QAC9B,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAM,eAAe,IAAI,CAAA;AAAA,QACzB,KAAA,EAAO,KAAK,cAAA;AAAe,OAC7B;AAEA,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;;;AC1BO,IAAM,wBAAA,GAA2B,CAAC,KAAA,KAAqC;AAC5E,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AAEpC,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IAAI,IAAA,CAAK,IAAA,KAAA,QAAA,iBAAsC,IAAA,CAAK,UAAA,EAAY;AAC9D,MAAA,WAAA,CAAY,GAAA,CAAI,KAAK,UAAU,CAAA;AAAA,IACjC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,GAAG,WAAW,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,CAAA;AAC3D;;;ACXO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,QAAA,KACG;AACH,EAAA,QAAA,CAAS,KAAK,CAAA;AAEd,EAAA,IAAI,MAAM,IAAA,KAAA,QAAA,eAAoC;AAC5C,IAAA,MAAA,CAAO,OAAO,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC3C,MAAA,aAAA,CAAc,MAAM,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,MAAM,IAAA,KAAA,OAAA,cAAmC;AAClD,IAAA,KAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,CAAC,SAAA,KAAc;AACjC,MAAA,aAAA,CAAc,WAAW,QAAQ,CAAA;AAAA,IACnC,CAAC,CAAA;AAAA,EACH;AACF;;;ACTO,IAAM,uBAAA,GAA0B,CACrC,KAAA,KACkC;AAClC,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAyB;AAEjD,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IAAI,IAAA,CAAK,IAAA,KAAA,QAAA,iBAAsC,IAAA,CAAK,UAAA,EAAY;AAC9D,MAAA,IAAI,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,UAAU,CAAA;AAErD,MAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,eAAA,uBAAsB,GAAA,EAAY;AAClC,QAAA,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,eAAe,CAAA;AAAA,MAClD;AAEA,MAAA,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,IAC1C;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,GAAG,WAAW,CAAA,CAAE,IAAI,CAAC,CAAC,OAAA,EAAS,MAAM,CAAA,MAAO;AAAA,IAClD,OAAA;AAAA,IACA,MAAA,EAAQ,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC;AAAA,GACvD,CAAE,CAAA;AACJ;;;ACzBO,IAAM,4BAAA,GAA+B,CAC1C,MAAA,EACA,IAAA,GAAmC,EAAC,KACjC;AACH,EAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,MAAA,EAAQ,IAAI,CAAA;AAEtD,EAAA,MAAM,gBAAmC,EAAC;AAE1C,EAAA,aAAA,CAAc,WAAA,EAAa,CAAC,IAAA,KAAS;AACnC,IAAA,IAAI,IAAA,CAAK,QAAQ,IAAA,KAAA,QAAA,eAAoC;AACnD,MAAA,IAAI,CAAC,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,QAAA,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,MACzB;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,aAAA;AACT;;;ACnBO,IAAM,uBAAA,GAA0B,CACrC,IAAA,EACA,IAAA,KACmB;AACnB,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AAEjC,EAAA,IAAI,OAAA,GAA0B,IAAA;AAE9B,EAAA,KAAA,MAAW,OAAO,QAAA,EAAU;AAC1B,IAAA,IAAI,mBAAmBC,sCAAA,EAAsB;AAC3C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AACtC,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MACtD;AACA,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ,CAAA,MAAA,IAAW,mBAAmBC,qCAAA,EAAqB;AACjD,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MAChD;AACA,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAC9B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MACtD;AACA,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IACtE;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,IAAM,KAAA,GAAQ,sBAAA;AAEd,IAAM,WAAA,GAAc,CAAC,IAAA,KAAiB;AACpC,EAAA,MAAM,WAAgC,EAAC;AAEvC,EAAA,IAAI,KAAA;AAEJ,EAAA,OAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAI;AACjC,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA,EAAW;AAC1B,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,IACxB,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA,EAAW;AACjC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT,CAAA;;;AC7CO,IAAM,sBAAA,GAAyB,CACpC,OAAA,KACG;AACH,EAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,EAAA,aAAA,CAAc,OAAA,CAAQ,UAAA,EAAY,CAAC,IAAA,KAAS;AAC1C,IAAA,IACE,IAAA,CAAK,kCACL,IAAA,CAAK,UAAA,KAAe,QAAQ,UAAA,IAC5B,IAAA,CAAK,KAAA,KAAU,OAAA,CAAQ,KAAA,EACvB;AACA,MAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,SAAA;AACrB,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,UAAA;AACT;;;ACbO,IAAM,UAAA,GAAmD;AAAA,EAC9D,gEAAyBC,6BAAA;AAAA,EACzB,+EAAgCC,oCAAA;AAAA,EAChC,+EAAgCC,oCAAA;AAAA,EAChC,+EAAgCC,oCAAA;AAAA,EAChC,mFAAkCC,sCAAA;AAAA,EAClC,+EAAgCC,oCAAA;AAAA,EAChC,oEAA2BC,+BAAA;AAAA,EAC3B,iFAAiCC,qCAAA;AAAA,EACjC,6DAAwBC;AAC1B;AAEO,IAAM,WAAA,GAAc,CAAC,MAAA,KAAuB;AACjD,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,MAAA,EAAQ,UAAU,CAAA;AACtD,EAAA,OAAO,KAAA,CAAM,cAAA,CAAe,EAAE,QAAA,EAAU,MAAM,CAAA;AAChD;;;ACfO,IAAM,cAAN,MAAkB;AAAA,EAIvB,WAAA,CACE,MAAA,EACiB,IAAA,GAAmC,EAAC,EACrD;AADiB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEjB,IAAA,IAAA,CAAK,KAAA,GAAQ,qBAAA,CAAsB,MAAA,EAAQ,IAAI,CAAA;AAAA,EACjD;AAAA,EARiB,IAAA,uBAAW,GAAA,EAA4B;AAAA,EAChD,KAAA;AAAA,EASD,aAAa,OAAA,EAA4B;AAC9C,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,MAAA,QAAQ,MAAM,EAAA;AAAI,QAChB,KAAK,SAAA,EAAW;AACd,UAAA,MAAM,YAAY,iBAAA,CAAkB,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAK,IAAI,CAAA;AAChE,UAAA,IAAI,SAAA,KAAc,KAAK,KAAA,EAAO;AAC5B,YAAA,IAAA,CAAK,YAAY,SAAS,CAAA;AAAA,UAC5B;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,QAAA,EAAU;AACb,UAAA,gBAAA,CAAiB,IAAA,CAAK,OAAO,KAAK,CAAA;AAClC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,aAAA,CAAc,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,IAAI,CAAA;AAC1C,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,cAAA,CAAe,IAAA,CAAK,OAAO,KAAK,CAAA;AAChC,UAAA;AAAA,QACF;AAAA,QACA;AACE,UAAA,MAAM,IAAI,MAAM,CAAA,2BAAA,CAA6B,CAAA;AAAA;AACjD,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEO,SAAA,GAAwB;AAC7B,IAAA,OAAO,IAAA,CAAK,MAAM,cAAA,EAAe;AAAA,EACnC;AAAA,EAEO,MAAA,CAAO,OAAe,IAAA,EAAiB;AAC5C,IAAA,MAAM,GAAA,GAAMC,sCAAA,CAAqB,IAAA,CAAK,KAAA,EAAO,OAAO,IAAI,CAAA;AAExD,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAAA,EAC1B;AAAA,EAEO,OAAO,EAAA,EAAuB;AACnC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AAE5B,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,IAC9B;AAEA,IAAA,OAAO,IAAI,aAAA,EAAc;AAAA,EAC3B;AAAA,EAEO,OAAA,GAA6C;AAClD,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,EAAA,EAAI,IAAI,CAAA,MAAO;AAAA,MACzC,EAAA;AAAA,MACA,IAAA,EAAM,KAAK,aAAA;AAAc,KAC3B,CAAE,CAAA;AAAA,EACJ;AAAA,EAEQ,YAAY,SAAA,EAAkC;AACpD,IAAA,MAAM,cAAA,GAAiBC,mCAAA,CAAkB,IAAA,CAAK,KAAA,EAAO,SAAS,CAAA;AAE9D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,GAAG,CAAA,IAAK,KAAK,IAAA,EAAM;AACpC,QAAA,MAAM,YAAA,GAAe,cAAA;AAAA,UACnB,IAAI,aAAA,EAAc;AAAA,UAClB,SAAA,CAAU;AAAA,SACZ;AAEA,QAAA,MAAM,OAAA,GAAUD,sCAAA,CAAqB,SAAA,EAAW,KAAA,EAAO,YAAY,CAAA;AACnE,QAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AAAA,MAC9B;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAA;AAAA,EACf;AACF","file":"chunk-RV56Z2F4.cjs","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 foundFromParent.removeProperty(fromField);\n if (foundToParent.getProperty(toField)) {\n foundToParent.removeProperty(toField);\n }\n foundToParent.addPropertyWithStore(toField, foundFromField);\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 { 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"]}
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/replaceForeignKeyValue.ts","../src/lib/resolveRefs.ts","../src/lib/schema-table.ts"],"names":["JsonArrayStore","JsonObjectStore","JsonStringStore","JsonNumberStore","JsonBooleanStore","JsonObjectValueStore","JsonArrayValueStore","rowIdSchema","rowVersionIdSchema","rowCreatedIdSchema","rowCreatedAtSchema","rowPublishedAtSchema","rowUpdatedAtSchema","rowHashSchema","rowSchemaHashSchema","fileSchema","createJsonValueStore","getTransformation"],"mappings":";;;;;;AAkBO,IAAM,qBAAA,GAAwB,CACnC,MAAA,EACA,IAAA,GAAiB,EAAC,KACE;AACpB,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,MAAM,SAAA,GAAoC,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAE1D,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,MAAA,CAAO,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IAC9D;AAEA,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,SAAA,EAAW,IAAI,CAAA;AACtD,IAAA,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACjC,IAAA,QAAA,CAAS,OAAO,MAAA,CAAO,IAAA;AACvB,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,MAAM,WAAA,GAAc,2BAAA,CAA4B,MAAA,EAAQ,IAAI,CAAA;AAC5D,IAAA,gBAAA,CAAiB,aAAa,MAAM,CAAA;AAEpC,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAC3D,IAAA,MAAM,UAAA,GAAa,IAAIA,gCAAA,CAAe,UAAU,CAAA;AAChD,IAAA,gBAAA,CAAiB,YAAY,MAAM,CAAA;AAEnC,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,MAAM,eAAA,GAAkB,6BAA6B,MAAM,CAAA;AAC3D,IAAA,gBAAA,CAAiB,iBAAiB,MAAM,CAAA;AACxC,IAAA,eAAA,CAAgB,WAAW,MAAA,CAAO,QAAA;AAElC,IAAA,OAAO,eAAA;AAAA,EACT;AACF;AAEO,IAAM,2BAAA,GAA8B,CACzC,KAAA,EACA,IAAA,KACoB;AACpB,EAAA,MAAM,KAAA,GAAQ,IAAIC,iCAAA,EAAgB;AAElC,EAAA,KAAA,MAAW,aAAA,IAAiB,MAAM,QAAA,EAAU;AAC1C,IAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,aAAa,CAAA,EAAG;AACpC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,6BAA6B,aAAa,CAAA,iBAAA;AAAA,OAC5C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,UAAU,CAAA,CAAE,QAAQ,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM;AACzD,IAAA,KAAA,CAAM,oBAAA,CAAqB,IAAA,EAAM,qBAAA,CAAsB,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EACpE,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,4BAAA,GAA+B,CAC1C,MAAA,KAC8B;AAC9B,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAM,WAAA,GAAc,IAAIC,iCAAA,EAAgB;AACxC,IAAA,WAAA,CAAY,aAAa,MAAA,CAAO,UAAA;AAChC,IAAA,WAAA,CAAY,SAAS,MAAA,CAAO,MAAA;AAC5B,IAAA,WAAA,CAAY,OAAO,MAAA,CAAO,IAAA;AAC1B,IAAA,WAAA,CAAY,mBAAmB,MAAA,CAAO,gBAAA;AACtC,IAAA,WAAA,CAAY,UAAU,MAAA,CAAO,OAAA;AAC7B,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,OAAO,IAAIC,iCAAA,EAAgB;AAAA,EAC7B,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,SAAA,gBAAqC;AACrD,IAAA,OAAO,IAAIC,kCAAA,EAAiB;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AACF;AAEO,IAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,MAAA,KACG;AACH,EAAA,KAAA,CAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,EAAA,KAAA,CAAM,cAAc,MAAA,CAAO,WAAA;AAC3B,EAAA,KAAA,CAAM,aAAa,MAAA,CAAO,UAAA;AAC5B;;;AClGO,IAAM,wBAAA,GAA2B,CACtC,KAAA,EACA,IAAA,KACoB;AACpB,EAAA,IAAI,SAAS,EAAA,EAAI;AACf,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAS,GAAA,EAAK;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,MAAA,CAAO,KAAA,EAAM;AAEb,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,IAAI,YAAA,GAAe,OAAO,KAAA,EAAM;AAChC,EAAA,IAAI,WAAA,GAAc,EAAA;AAElB,EAAA,OAAO,YAAA,EAAc;AACnB,IAAA,IAAI,aAAa,IAAA,KAAA,QAAA,eAAoC;AACnD,MAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,UAAA,EAAa,WAAW,CAAA,0BAAA,EAA6B,WAAW,IAAI,YAAY,CAAA,EAAA;AAAA,SAClF;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,MACjE;AAEA,MAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,WAAA,CAAY,YAAY,CAAA;AAE/D,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,YAAY,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,MACnE;AAEA,MAAA,YAAA,GAAe,iBAAA;AACf,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAAA,IAC9B,CAAA,MAAA,IAAW,aAAa,IAAA,KAAA,OAAA,cAAmC;AACzD,MAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,UAAA,EAAa,WAAW,CAAA,qBAAA,EAAwB,WAAW,IAAI,YAAY,CAAA,EAAA;AAAA,SAC7E;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAE5C,MAAA,YAAA,GAAe,YAAA,CAAa,KAAA;AAE5B,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,YAAY,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CAAA;AAAA,IACpE;AAAA,EACF;AAEA,EAAA,OAAO,YAAA;AACT;;;ACrEO,IAAM,gBAAA,GAAmB,CAC9B,IAAA,KAC0C;AAC1C,EAAA,IAAI,IAAA,KAAS,EAAA,IAAM,IAAA,KAAS,GAAA,EAAK;AAC/B,IAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,EAChC;AAEA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,MAAA,CAAO,KAAA,EAAM;AAEb,EAAA,IAAI,YAAA,GAAe,OAAO,KAAA,EAAM;AAEhC,EAAA,IAAI,UAAA,GAAa,EAAA;AACjB,EAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,EAAA,OAAO,YAAA,EAAc;AACnB,IAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,MAChC;AAEA,MAAA,KAAA,GAAQ,YAAA;AAER,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA;AAAA,MAChD;AAAA,IACF,CAAA,MAAA,IAAW,iBAAiB,OAAA,EAAS;AACnC,MAAA,KAAA,GAAQ,YAAA;AAER,MAAA,YAAA,GAAe,OAAO,KAAA,EAAM;AAE5B,MAAA,IAAI,YAAA,IAAgB,CAAC,CAAC,OAAA,EAAS,YAAY,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG;AACnE,QAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,MAChC,WAAW,YAAA,EAAc;AACvB,QAAA,UAAA,GAAa,GAAG,UAAU,CAAA,MAAA,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACjDA,IAAM,SAAA,GAAY,EAAA;AAEX,IAAM,sCAAA,GAAyC,iCAAiC,SAAS,CAAA,qLAAA;AAEhG,IAAM,YAAA,GAAe,iCAAA;AAEd,IAAM,qBAAA,GAAwB,CAAC,EAAA,KAAe;AACnD,EAAA,MAAM,SAAA,GACJ,EAAA,CAAG,MAAA,GAAS,CAAA,IAAK,EAAA,CAAG,SAAS,SAAA,IAAa,CAAC,YAAA,CAAa,IAAA,CAAK,EAAE,CAAA;AAEjE,EAAA,OAAO,CAAC,SAAA;AACV;;;ACKO,IAAM,oBAAoB,CAC/B,KAAA,EACA,KAAA,EACA,IAAA,GAAmC,EAAC,KAChB;AACpB,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAa,wBAAA,CAAyB,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA;AAE7D,EAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAE1B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAA,CAAO,wBAAA,CAAyB,UAAA,CAAW,IAAA,EAAM,UAAU,CAAA;AAAA,EAC7D,CAAA,MAAA,IAAW,OAAO,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,MAAA,CAAO,aAAa,UAAU,CAAA;AAAA,EAChC,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAAA,EAClC;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,CAC9B,SAAA,EACA,KAAA,KACS;AACT,EAAA,MAAM,UAAA,GAAa,wBAAA,CAAyB,SAAA,EAAW,KAAA,CAAM,IAAI,CAAA;AACjE,EAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAE1B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,OAAO,IAAA,KAAA,QAAA,eAAoC;AAC7C,IAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,EACjD;AAEA,EAAA,MAAA,CAAO,cAAA,CAAe,WAAW,IAAI,CAAA;AACvC;AAEO,IAAM,gBAAgB,CAC3B,SAAA,EACA,KAAA,EACA,IAAA,GAAmC,EAAC,KAC3B;AACT,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAE1D,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAM,GAAI,gBAAA,CAAiB,MAAM,IAAI,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,wBAAA,CAAyB,SAAA,EAAW,UAAU,CAAA;AAElE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,YAAY,IAAA,KAAA,QAAA,eAAoC;AAClD,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAI,WAAA,CAAY,WAAA,CAAY,KAAK,CAAA,EAAG;AAClC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,OAAA,EAAU,KAAK,CAAA,0BAAA,CAA4B,CAAA;AAAA,EAC7D;AAEA,EAAA,WAAA,CAAY,oBAAA,CAAqB,OAAO,UAAU,CAAA;AACpD;AAEO,IAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,KAAA,KACS;AACT,EAAA,MAAM,EAAE,UAAA,EAAY,cAAA,EAAgB,KAAA,EAAO,WAAU,GAAI,gBAAA;AAAA,IACvD,KAAA,CAAM;AAAA,GACR;AACA,EAAA,MAAM,EAAE,UAAA,EAAY,YAAA,EAAc,KAAA,EAAO,SAAQ,GAAI,gBAAA;AAAA,IACnD,KAAA,CAAM;AAAA,GACR;AAEA,EAAA,MAAM,eAAA,GAAkB,wBAAA,CAAyB,KAAA,EAAO,cAAc,CAAA;AACtE,EAAA,MAAM,aAAA,GAAgB,wBAAA,CAAyB,KAAA,EAAO,YAAY,CAAA;AAElE,EAAA,MAAM,cAAA,GAAiB,sBAAsB,OAAO,CAAA;AAEpD,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,cAAA,EAAiB,OAAO,CAAA,EAAA,EAAK,sCAAsC,CAAA;AAAA,KACrE;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,aAAA,EAAe;AACtC,IAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,EAC9D;AAEA,EAAA,IAAI,gBAAgB,IAAA,KAAA,QAAA,eAAoC;AACtD,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,wBAAA,CAAyB,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA;AAEjE,EAAA,MAAM,mCACJ,eAAA,KAAoB,aAAA,IACpB,gBAAgB,IAAA,KAAA,QAAA,iBAChB,eAAA,CAAgB,YAAY,SAAS,CAAA;AAEvC,EAAA,IAAI,gCAAA,EAAkC;AACpC,IAAA,OAAO,eAAA,CAAgB,UAAA,CAAW,SAAA,EAAW,OAAO,CAAA;AAAA,EACtD;AAEA,EAAA,IAAI,cAAc,IAAA,KAAA,QAAA,eAAoC;AACpD,IAAA,IAAI,aAAA,CAAc,WAAA,CAAY,OAAO,CAAA,EAAG;AACtC,MAAA,aAAA,CAAc,eAAe,OAAO,CAAA;AAAA,IACtC;AACA,IAAA,aAAA,CAAc,oBAAA,CAAqB,SAAS,cAAc,CAAA;AAC1D,IAAA,eAAA,CAAgB,eAAe,SAAS,CAAA;AACxC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,cAAc,IAAA,KAAA,OAAA,cAAmC;AACnD,IAAA,eAAA,CAAgB,eAAe,SAAS,CAAA;AACxC,IAAA,aAAA,CAAc,aAAa,cAAc,CAAA;AAEzC,IAAA;AAAA,EACF;AACA,EAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAC/C;;;AC1IO,IAAM,8BAAA,GAAiC,CAC5C,KAAA,KACW;AACX,EAAA,IAAI,IAAA,GAAO,KAAA;AAEX,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,IAAI,IAAA,CAAK,OAAO,IAAA,KAAA,QAAA,eAAoC;AAClD,MAAA,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAAA,IAC7B,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAA,OAAA,cAAmC;AACxD,MAAA,IAAA,GAAO,MAAM,IAAI,CAAA,CAAA;AAAA,IACnB;AAEA,IAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAI,IAAI,CAAA,CAAA;AACjB;;;ACtBO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAmC;AAChE,EAAA,IAAI,IAAA,GAAO,KAAA;AAEX,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,IAAI,IAAA,CAAK,OAAO,IAAA,KAAA,QAAA,eAAoC;AAClD,MAAA,IAAA,GAAO,CAAA,YAAA,EAAe,IAAA,CAAK,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAAA,IACxC,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,CAAO,IAAA,KAAA,OAAA,cAAmC;AACxD,MAAA,IAAA,GAAO,SAAS,IAAI,CAAA,CAAA;AAAA,IACtB;AAEA,IAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,GAAG,IAAI,CAAA,CAAA;AAChB;;;ACpBO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,QAAA,KACG;AACH,EAAA,QAAA,CAAS,KAAK,CAAA;AAEd,EAAA,IAAI,MAAM,IAAA,KAAA,QAAA,eAAoC;AAC5C,IAAA,MAAA,CAAO,OAAO,KAAA,CAAM,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAChD,MAAA,aAAA,CAAc,MAAM,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,MAAM,IAAA,KAAA,OAAA,cAAmC;AAClD,IAAA,aAAA,CAAc,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,EACrC;AACF;;;ACVO,IAAM,8BAAA,GAAiC,CAC5C,KAAA,EACA,OAAA,KACG;AACH,EAAA,MAAM,SAAsB,EAAC;AAE7B,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IACE,IAAA,CAAK,IAAA,KAAA,QAAA,iBACL,IAAA,CAAK,UAAA,KAAe,QAAQ,OAAA,EAC5B;AACA,MAAA,IAAA,CAAK,aAAa,OAAA,CAAQ,WAAA;AAE1B,MAAA,MAAM,KAAA,GAA0B;AAAA,QAC9B,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAM,eAAe,IAAI,CAAA;AAAA,QACzB,KAAA,EAAO,KAAK,cAAA;AAAe,OAC7B;AAEA,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;;;AC1BO,IAAM,wBAAA,GAA2B,CAAC,KAAA,KAAqC;AAC5E,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AAEpC,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IAAI,IAAA,CAAK,IAAA,KAAA,QAAA,iBAAsC,IAAA,CAAK,UAAA,EAAY;AAC9D,MAAA,WAAA,CAAY,GAAA,CAAI,KAAK,UAAU,CAAA;AAAA,IACjC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,GAAG,WAAW,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,CAAA;AAC3D;;;ACXO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,QAAA,KACG;AACH,EAAA,QAAA,CAAS,KAAK,CAAA;AAEd,EAAA,IAAI,MAAM,IAAA,KAAA,QAAA,eAAoC;AAC5C,IAAA,MAAA,CAAO,OAAO,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC3C,MAAA,aAAA,CAAc,MAAM,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,MAAM,IAAA,KAAA,OAAA,cAAmC;AAClD,IAAA,KAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,CAAC,SAAA,KAAc;AACjC,MAAA,aAAA,CAAc,WAAW,QAAQ,CAAA;AAAA,IACnC,CAAC,CAAA;AAAA,EACH;AACF;;;ACTO,IAAM,uBAAA,GAA0B,CACrC,KAAA,KACkC;AAClC,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAyB;AAEjD,EAAA,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,KAAS;AAC7B,IAAA,IAAI,IAAA,CAAK,IAAA,KAAA,QAAA,iBAAsC,IAAA,CAAK,UAAA,EAAY;AAC9D,MAAA,IAAI,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,UAAU,CAAA;AAErD,MAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,eAAA,uBAAsB,GAAA,EAAY;AAClC,QAAA,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,eAAe,CAAA;AAAA,MAClD;AAEA,MAAA,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,IAC1C;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,GAAG,WAAW,CAAA,CAAE,IAAI,CAAC,CAAC,OAAA,EAAS,MAAM,CAAA,MAAO;AAAA,IAClD,OAAA;AAAA,IACA,MAAA,EAAQ,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC;AAAA,GACvD,CAAE,CAAA;AACJ;;;ACzBO,IAAM,4BAAA,GAA+B,CAC1C,MAAA,EACA,IAAA,GAAmC,EAAC,KACjC;AACH,EAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,MAAA,EAAQ,IAAI,CAAA;AAEtD,EAAA,MAAM,gBAAmC,EAAC;AAE1C,EAAA,aAAA,CAAc,WAAA,EAAa,CAAC,IAAA,KAAS;AACnC,IAAA,IAAI,IAAA,CAAK,QAAQ,IAAA,KAAA,QAAA,eAAoC;AACnD,MAAA,IAAI,CAAC,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,QAAA,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,MACzB;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,aAAA;AACT;;;ACnBO,IAAM,uBAAA,GAA0B,CACrC,IAAA,EACA,IAAA,KACmB;AACnB,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AAEjC,EAAA,IAAI,OAAA,GAA0B,IAAA;AAE9B,EAAA,KAAA,MAAW,OAAO,QAAA,EAAU;AAC1B,IAAA,IAAI,mBAAmBC,sCAAA,EAAsB;AAC3C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AACtC,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MACtD;AACA,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ,CAAA,MAAA,IAAW,mBAAmBC,qCAAA,EAAqB;AACjD,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MAChD;AACA,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAC9B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MACtD;AACA,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IACtE;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,IAAM,KAAA,GAAQ,sBAAA;AAEd,IAAM,WAAA,GAAc,CAAC,IAAA,KAAiB;AACpC,EAAA,MAAM,WAAgC,EAAC;AAEvC,EAAA,IAAI,KAAA;AAEJ,EAAA,OAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAI;AACjC,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA,EAAW;AAC1B,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,IACxB,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA,EAAW;AACjC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT,CAAA;;;AC7CO,IAAM,sBAAA,GAAyB,CACpC,OAAA,KACG;AACH,EAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,EAAA,aAAA,CAAc,OAAA,CAAQ,UAAA,EAAY,CAAC,IAAA,KAAS;AAC1C,IAAA,IACE,IAAA,CAAK,kCACL,IAAA,CAAK,UAAA,KAAe,QAAQ,UAAA,IAC5B,IAAA,CAAK,KAAA,KAAU,OAAA,CAAQ,KAAA,EACvB;AACA,MAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,SAAA;AACrB,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,UAAA;AACT;;;ACbO,IAAM,UAAA,GAAmD;AAAA,EAC9D,gEAAyBC,6BAAA;AAAA,EACzB,+EAAgCC,oCAAA;AAAA,EAChC,+EAAgCC,oCAAA;AAAA,EAChC,+EAAgCC,oCAAA;AAAA,EAChC,mFAAkCC,sCAAA;AAAA,EAClC,+EAAgCC,oCAAA;AAAA,EAChC,oEAA2BC,+BAAA;AAAA,EAC3B,iFAAiCC,qCAAA;AAAA,EACjC,6DAAwBC;AAC1B;AAEO,IAAM,WAAA,GAAc,CAAC,MAAA,KAAuB;AACjD,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,MAAA,EAAQ,UAAU,CAAA;AACtD,EAAA,OAAO,KAAA,CAAM,cAAA,CAAe,EAAE,QAAA,EAAU,MAAM,CAAA;AAChD;;;ACfO,IAAM,cAAN,MAAkB;AAAA,EAIvB,WAAA,CACE,MAAA,EACiB,IAAA,GAAmC,EAAC,EACrD;AADiB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEjB,IAAA,IAAA,CAAK,KAAA,GAAQ,qBAAA,CAAsB,MAAA,EAAQ,IAAI,CAAA;AAAA,EACjD;AAAA,EARiB,IAAA,uBAAW,GAAA,EAA4B;AAAA,EAChD,KAAA;AAAA,EASD,aAAa,OAAA,EAA4B;AAC9C,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,MAAA,QAAQ,MAAM,EAAA;AAAI,QAChB,KAAK,SAAA,EAAW;AACd,UAAA,MAAM,YAAY,iBAAA,CAAkB,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAK,IAAI,CAAA;AAChE,UAAA,IAAI,SAAA,KAAc,KAAK,KAAA,EAAO;AAC5B,YAAA,IAAA,CAAK,YAAY,SAAS,CAAA;AAAA,UAC5B;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,QAAA,EAAU;AACb,UAAA,gBAAA,CAAiB,IAAA,CAAK,OAAO,KAAK,CAAA;AAClC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,aAAA,CAAc,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,IAAI,CAAA;AAC1C,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,cAAA,CAAe,IAAA,CAAK,OAAO,KAAK,CAAA;AAChC,UAAA;AAAA,QACF;AAAA,QACA;AACE,UAAA,MAAM,IAAI,MAAM,CAAA,2BAAA,CAA6B,CAAA;AAAA;AACjD,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEO,SAAA,GAAwB;AAC7B,IAAA,OAAO,IAAA,CAAK,MAAM,cAAA,EAAe;AAAA,EACnC;AAAA,EAEO,MAAA,CAAO,OAAe,IAAA,EAAiB;AAC5C,IAAA,MAAM,GAAA,GAAMC,sCAAA,CAAqB,IAAA,CAAK,KAAA,EAAO,OAAO,IAAI,CAAA;AAExD,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAAA,EAC1B;AAAA,EAEO,OAAO,EAAA,EAAuB;AACnC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AAE5B,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,IAC9B;AAEA,IAAA,OAAO,IAAI,aAAA,EAAc;AAAA,EAC3B;AAAA,EAEO,OAAA,GAA6C;AAClD,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,EAAA,EAAI,IAAI,CAAA,MAAO;AAAA,MACzC,EAAA;AAAA,MACA,IAAA,EAAM,KAAK,aAAA;AAAc,KAC3B,CAAE,CAAA;AAAA,EACJ;AAAA,EAEQ,YAAY,SAAA,EAAkC;AACpD,IAAA,MAAM,cAAA,GAAiBC,mCAAA,CAAkB,IAAA,CAAK,KAAA,EAAO,SAAS,CAAA;AAE9D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,GAAG,CAAA,IAAK,KAAK,IAAA,EAAM;AACpC,QAAA,MAAM,YAAA,GAAe,cAAA;AAAA,UACnB,IAAI,aAAA,EAAc;AAAA,UAClB,SAAA,CAAU;AAAA,SACZ;AAEA,QAAA,MAAM,OAAA,GAAUD,sCAAA,CAAqB,SAAA,EAAW,KAAA,EAAO,YAAY,CAAA;AACnE,QAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AAAA,MAC9B;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAA;AAAA,EACf;AACF","file":"chunk-2GCG6HJO.cjs","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 { 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"]}
@@ -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 */) {
@@ -515,5 +515,5 @@ var SchemaTable = class {
515
515
  };
516
516
 
517
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
518
+ //# sourceMappingURL=chunk-3E7UGCRR.js.map
519
+ //# sourceMappingURL=chunk-3E7UGCRR.js.map
@@ -1 +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/replaceForeignKeyValue.ts","../src/lib/resolveRefs.ts","../src/lib/schema-table.ts"],"names":[],"mappings":"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","file":"chunk-22HBQQF4.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 foundFromParent.removeProperty(fromField);\n if (foundToParent.getProperty(toField)) {\n foundToParent.removeProperty(toField);\n }\n foundToParent.addPropertyWithStore(toField, foundFromField);\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 { 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"]}
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/replaceForeignKeyValue.ts","../src/lib/resolveRefs.ts","../src/lib/schema-table.ts"],"names":[],"mappings":"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","file":"chunk-3E7UGCRR.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 { 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"]}