json-fs-query 3.3.1 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +7 -1
  2. package/browser/jsonFsQuery.js +764 -3841
  3. package/browser/jsonFsQuery.min.js +1 -1
  4. package/dist/data/introspect/alter.js +0 -5
  5. package/dist/data/introspect/alter.min.js +1 -1
  6. package/dist/data/introspect/create.js +0 -4
  7. package/dist/data/introspect/create.min.js +1 -1
  8. package/dist/data/introspect/definitions/key.js +0 -2
  9. package/dist/data/introspect/definitions/key.min.js +1 -1
  10. package/dist/data/introspect/definitions/record.js +0 -2
  11. package/dist/data/introspect/definitions/record.min.js +1 -1
  12. package/dist/data/introspect/drop.js +0 -4
  13. package/dist/data/introspect/drop.min.js +1 -1
  14. package/dist/data/introspect/formatDatabase.js +0 -2
  15. package/dist/data/introspect/formatDatabase.min.js +1 -1
  16. package/dist/data/introspect/index.js +0 -4
  17. package/dist/data/introspect/index.min.js +1 -1
  18. package/dist/data/introspect/packDatabase.js +0 -19
  19. package/dist/data/introspect/packDatabase.min.js +1 -1
  20. package/dist/data/queries/createRecord.js +0 -2
  21. package/dist/data/queries/createRecord.min.js +1 -1
  22. package/dist/data/queries/databaseStatements.js +0 -3
  23. package/dist/data/queries/databaseStatements.min.js +1 -1
  24. package/dist/data/queries/deleteEntity.js +0 -20
  25. package/dist/data/queries/deleteEntity.min.js +1 -1
  26. package/dist/data/queries/dropRecord.js +0 -5
  27. package/dist/data/queries/dropRecord.min.js +1 -1
  28. package/dist/data/queries/groupBy.js +0 -16
  29. package/dist/data/queries/groupBy.min.js +1 -1
  30. package/dist/data/queries/insertEntity.js +0 -35
  31. package/dist/data/queries/insertEntity.min.js +1 -1
  32. package/dist/data/queries/joinEntity.js +0 -15
  33. package/dist/data/queries/joinEntity.min.js +1 -1
  34. package/dist/data/queries/parser.js +0 -2
  35. package/dist/data/queries/parser.min.js +1 -1
  36. package/dist/data/queries/selectFields.js +0 -3
  37. package/dist/data/queries/selectFields.min.js +1 -1
  38. package/dist/data/queries/showRecords.js +0 -2
  39. package/dist/data/queries/showRecords.min.js +1 -1
  40. package/dist/data/queries/updateEntity.js +0 -4
  41. package/dist/data/queries/updateEntity.min.js +1 -1
  42. package/dist/data/queries/where.js +0 -4
  43. package/dist/data/queries/where.min.js +1 -1
  44. package/dist/data/storage/databases.js +1 -2
  45. package/dist/data/storage/databases.min.js +1 -1
  46. package/dist/data/storage/listFiles.js +0 -2
  47. package/dist/data/storage/listFiles.min.js +1 -1
  48. package/dist/data/storage/readCache.js +0 -13
  49. package/dist/data/storage/readCache.min.js +1 -1
  50. package/dist/data/storage/readJson.js +2 -2
  51. package/dist/data/storage/readJson.min.js +1 -1
  52. package/dist/data/storage/storagePath.js +0 -1
  53. package/dist/data/storage/storagePath.min.js +1 -1
  54. package/dist/data/storage/writeSet.js +0 -32
  55. package/dist/data/storage/writeSet.min.js +1 -1
  56. package/dist/data/utilities/computeKeyValue.js +0 -2
  57. package/dist/data/utilities/computeKeyValue.min.js +1 -1
  58. package/dist/data/utilities/conditionEntities.js +0 -20
  59. package/dist/data/utilities/conditionEntities.min.js +1 -1
  60. package/dist/data/utilities/conditionTree.js +0 -3
  61. package/dist/data/utilities/conditionTree.min.js +1 -1
  62. package/dist/data/utilities/config.d.ts +11 -0
  63. package/dist/data/utilities/config.js +15 -1
  64. package/dist/data/utilities/config.min.js +1 -1
  65. package/dist/data/utilities/databaseLock.js +0 -14
  66. package/dist/data/utilities/databaseLock.min.js +1 -1
  67. package/dist/data/utilities/deregisterRecord.js +0 -2
  68. package/dist/data/utilities/deregisterRecord.min.js +1 -1
  69. package/dist/data/utilities/fieldType.js +0 -2
  70. package/dist/data/utilities/fieldType.min.js +1 -1
  71. package/dist/data/utilities/getConditionIndexedList.js +0 -20
  72. package/dist/data/utilities/getConditionIndexedList.min.js +1 -1
  73. package/dist/data/utilities/indexBuffer.js +0 -33
  74. package/dist/data/utilities/indexBuffer.min.js +1 -1
  75. package/dist/data/utilities/indexHas.js +0 -3
  76. package/dist/data/utilities/indexHas.min.js +1 -1
  77. package/dist/data/utilities/joinBases.js +0 -33
  78. package/dist/data/utilities/joinBases.min.js +1 -1
  79. package/dist/data/utilities/keyIndexFiles.js +0 -19
  80. package/dist/data/utilities/keyIndexFiles.min.js +1 -1
  81. package/dist/data/utilities/knownFields.js +0 -21
  82. package/dist/data/utilities/knownFields.min.js +1 -1
  83. package/dist/data/utilities/mergeJoin.js +0 -2
  84. package/dist/data/utilities/mergeJoin.min.js +1 -1
  85. package/dist/data/utilities/packedTable.js +0 -3
  86. package/dist/data/utilities/packedTable.min.js +1 -1
  87. package/dist/data/utilities/parsers/findConditions.js +0 -2
  88. package/dist/data/utilities/parsers/findConditions.min.js +1 -1
  89. package/dist/data/utilities/parsers/findGroupBy.js +0 -2
  90. package/dist/data/utilities/parsers/findGroupBy.min.js +1 -1
  91. package/dist/data/utilities/parsers/maskStrings.js +0 -3
  92. package/dist/data/utilities/parsers/maskStrings.min.js +1 -1
  93. package/dist/data/utilities/parsers/parseCreate.js +0 -21
  94. package/dist/data/utilities/parsers/parseCreate.min.js +1 -1
  95. package/dist/data/utilities/parsers/splitClauses.js +0 -16
  96. package/dist/data/utilities/parsers/splitClauses.min.js +1 -1
  97. package/dist/data/utilities/parsers/splitQueries.js +0 -3
  98. package/dist/data/utilities/parsers/splitQueries.min.js +1 -1
  99. package/dist/data/utilities/reconcileJoin.js +0 -4
  100. package/dist/data/utilities/reconcileJoin.min.js +1 -1
  101. package/dist/data/utilities/removeFromIndex.js +0 -3
  102. package/dist/data/utilities/removeFromIndex.min.js +1 -1
  103. package/dist/data/utilities/requireNode.js +0 -1
  104. package/dist/data/utilities/requireNode.min.js +1 -1
  105. package/dist/data/utilities/retrieveRecord.js +0 -1
  106. package/dist/data/utilities/retrieveRecord.min.js +1 -1
  107. package/dist/data/utilities/retrieveRecords.js +0 -16
  108. package/dist/data/utilities/retrieveRecords.min.js +1 -1
  109. package/dist/data/utilities/rowLookup.js +0 -15
  110. package/dist/data/utilities/rowLookup.min.js +1 -1
  111. package/dist/data/utilities/runQuery.js +0 -16
  112. package/dist/data/utilities/runQuery.min.js +1 -1
  113. package/dist/data/utilities/semiJoin.js +0 -19
  114. package/dist/data/utilities/semiJoin.min.js +1 -1
  115. package/dist/data/utilities/updateIndex.js +0 -2
  116. package/dist/data/utilities/updateIndex.min.js +1 -1
  117. package/dist/index.js +0 -4
  118. package/dist/index.min.js +1 -1
  119. package/package.json +3 -3
@@ -5,39 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.IndexBuffer = void 0;
7
7
  require("core-js/modules/es.array.includes.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.find.js");
10
- require("core-js/modules/esnext.iterator.some.js");
11
- require("core-js/modules/esnext.map.delete-all.js");
12
- require("core-js/modules/esnext.map.every.js");
13
- require("core-js/modules/esnext.map.filter.js");
14
- require("core-js/modules/esnext.map.find.js");
15
- require("core-js/modules/esnext.map.find-key.js");
16
- require("core-js/modules/esnext.map.includes.js");
17
- require("core-js/modules/esnext.map.key-of.js");
18
- require("core-js/modules/esnext.map.map-keys.js");
19
- require("core-js/modules/esnext.map.map-values.js");
20
- require("core-js/modules/esnext.map.merge.js");
21
- require("core-js/modules/esnext.map.reduce.js");
22
- require("core-js/modules/esnext.map.some.js");
23
- require("core-js/modules/esnext.map.update.js");
24
- require("core-js/modules/esnext.set.add-all.js");
25
- require("core-js/modules/esnext.set.delete-all.js");
26
- require("core-js/modules/esnext.set.difference.js");
27
- require("core-js/modules/esnext.set.every.js");
28
- require("core-js/modules/esnext.set.filter.js");
29
- require("core-js/modules/esnext.set.find.js");
30
- require("core-js/modules/esnext.set.intersection.js");
31
- require("core-js/modules/esnext.set.is-disjoint-from.js");
32
- require("core-js/modules/esnext.set.is-subset-of.js");
33
- require("core-js/modules/esnext.set.is-superset-of.js");
34
- require("core-js/modules/esnext.set.join.js");
35
- require("core-js/modules/esnext.set.map.js");
36
- require("core-js/modules/esnext.set.reduce.js");
37
- require("core-js/modules/esnext.set.some.js");
38
- require("core-js/modules/esnext.set.symmetric-difference.js");
39
- require("core-js/modules/esnext.set.union.js");
40
- require("core-js/modules/esnext.weak-map.delete-all.js");
41
8
  var _compareAs = require("./compareAs");
42
9
  const unkeyed = Symbol('unkeyed');
43
10
  /**
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.IndexBuffer=void 0,require("core-js/modules/es.array.includes.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.some.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js"),require("core-js/modules/esnext.weak-map.delete-all.js");var _compareAs=require("./compareAs");const unkeyed=Symbol("unkeyed"),keyOf=(e,s)=>{if(!_compareAs.comparableTypes.includes(e))return unkeyed;const r=(0,_compareAs.compareAs)(e,s);return"object"==typeof r&&null!==r?unkeyed:r};class IndexBuffer{constructor(e,s){this.byKey=new Map,this.listed=new WeakMap,this.entries=e,this.type=s;for(const r of e){const e=keyOf(s,r.value);e===unkeyed||this.byKey.has(e)||this.byKey.set(e,r)}}find(e){const s=keyOf(this.type,e);return s===unkeyed?this.entries.find((s=>(0,_compareAs.sameValue)(this.type,s.value,e))):this.byKey.get(s)}has(e){if(null==e)return!1;const s=e=>Boolean(e&&Array.isArray(e.record)&&e.record.length),r=this.find(e);return!r||s(r)?s(r):this.entries.some((r=>(0,_compareAs.sameValue)(this.type,r.value,e)&&s(r)))}add(e,s){const r=this.find(e);if(r){this.listed.has(r)||this.listed.set(r,new Set(r.record));const e=this.listed.get(r);return void(e.has(s)||(e.add(s),r.record.push(s)))}const t={value:e,record:[s]};this.entries.push(t),this.listed.set(t,new Set(t.record));const o=keyOf(this.type,e);o!==unkeyed&&this.byKey.set(o,t)}}exports.IndexBuffer=IndexBuffer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.IndexBuffer=void 0,require("core-js/modules/es.array.includes.js");var _compareAs=require("./compareAs");const unkeyed=Symbol("unkeyed"),keyOf=(e,s)=>{if(!_compareAs.comparableTypes.includes(e))return unkeyed;const t=(0,_compareAs.compareAs)(e,s);return"object"==typeof t&&null!==t?unkeyed:t};class IndexBuffer{constructor(e,s){this.byKey=new Map,this.listed=new WeakMap,this.entries=e,this.type=s;for(const t of e){const e=keyOf(s,t.value);e===unkeyed||this.byKey.has(e)||this.byKey.set(e,t)}}find(e){const s=keyOf(this.type,e);return s===unkeyed?this.entries.find((s=>(0,_compareAs.sameValue)(this.type,s.value,e))):this.byKey.get(s)}has(e){if(null==e)return!1;const s=e=>Boolean(e&&Array.isArray(e.record)&&e.record.length),t=this.find(e);return!t||s(t)?s(t):this.entries.some((t=>(0,_compareAs.sameValue)(this.type,t.value,e)&&s(t)))}add(e,s){const t=this.find(e);if(t){this.listed.has(t)||this.listed.set(t,new Set(t.record));const e=this.listed.get(t);return void(e.has(s)||(e.add(s),t.record.push(s)))}const r={value:e,record:[s]};this.entries.push(r),this.listed.set(r,new Set(r.record));const n=keyOf(this.type,e);n!==unkeyed&&this.byKey.set(n,r)}}exports.IndexBuffer=IndexBuffer;
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.indexHas = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.find.js");
9
- require("core-js/modules/esnext.iterator.some.js");
10
7
  var _storage = require("../storage");
11
8
  var _where = require("../queries/where");
12
9
  var _retrieveRecord = require("./retrieveRecord");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.indexHas=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.some.js");var _storage=require("../storage"),_where=require("../queries/where"),_retrieveRecord=require("./retrieveRecord"),_isSingleFieldKey=require("./isSingleFieldKey"),_fieldType=require("./fieldType");const indexHas=async(e,r,i)=>{const t=await(0,_retrieveRecord.retrieveRecord)(e),s=t.keys.find((e=>(0,_isSingleFieldKey.isSingleFieldKey)(e,r)&&e.lookup));if(!s)return;if(!(t.entries||[]).length)return!1;let o;try{o=await(0,_storage.readJson)(`__indexes/${t.path}/${s.lookup}`)}catch(e){return}return(0,_where.where)(o,{property:"value",comparator:"=",value:i,type:(0,_fieldType.fieldType)(t,r)}).some((e=>Array.isArray(e.record)&&e.record.length>0))};exports.indexHas=indexHas;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.indexHas=void 0;var _storage=require("../storage"),_where=require("../queries/where"),_retrieveRecord=require("./retrieveRecord"),_isSingleFieldKey=require("./isSingleFieldKey"),_fieldType=require("./fieldType");const indexHas=async(e,r,i)=>{const t=await(0,_retrieveRecord.retrieveRecord)(e),s=t.keys.find((e=>(0,_isSingleFieldKey.isSingleFieldKey)(e,r)&&e.lookup));if(!s)return;if(!(t.entries||[]).length)return!1;let o;try{o=await(0,_storage.readJson)(`__indexes/${t.path}/${s.lookup}`)}catch(e){return}return(0,_where.where)(o,{property:"value",comparator:"=",value:i,type:(0,_fieldType.fieldType)(t,r)}).some((e=>Array.isArray(e.record)&&e.record.length>0))};exports.indexHas=indexHas;
@@ -4,39 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.joinBases = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.for-each.js");
10
- require("core-js/modules/esnext.iterator.map.js");
11
- require("core-js/modules/esnext.map.delete-all.js");
12
- require("core-js/modules/esnext.map.every.js");
13
- require("core-js/modules/esnext.map.filter.js");
14
- require("core-js/modules/esnext.map.find.js");
15
- require("core-js/modules/esnext.map.find-key.js");
16
- require("core-js/modules/esnext.map.includes.js");
17
- require("core-js/modules/esnext.map.key-of.js");
18
- require("core-js/modules/esnext.map.map-keys.js");
19
- require("core-js/modules/esnext.map.map-values.js");
20
- require("core-js/modules/esnext.map.merge.js");
21
- require("core-js/modules/esnext.map.reduce.js");
22
- require("core-js/modules/esnext.map.some.js");
23
- require("core-js/modules/esnext.map.update.js");
24
- require("core-js/modules/esnext.set.add-all.js");
25
- require("core-js/modules/esnext.set.delete-all.js");
26
- require("core-js/modules/esnext.set.difference.js");
27
- require("core-js/modules/esnext.set.every.js");
28
- require("core-js/modules/esnext.set.filter.js");
29
- require("core-js/modules/esnext.set.find.js");
30
- require("core-js/modules/esnext.set.intersection.js");
31
- require("core-js/modules/esnext.set.is-disjoint-from.js");
32
- require("core-js/modules/esnext.set.is-subset-of.js");
33
- require("core-js/modules/esnext.set.is-superset-of.js");
34
- require("core-js/modules/esnext.set.join.js");
35
- require("core-js/modules/esnext.set.map.js");
36
- require("core-js/modules/esnext.set.reduce.js");
37
- require("core-js/modules/esnext.set.some.js");
38
- require("core-js/modules/esnext.set.symmetric-difference.js");
39
- require("core-js/modules/esnext.set.union.js");
40
7
  var _readEntity = require("../queries/readEntity");
41
8
  var _retrieveRecord = require("./retrieveRecord");
42
9
  var _retrieveRecords = require("./retrieveRecords");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.joinBases=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _readEntity=require("../queries/readEntity"),_retrieveRecord=require("./retrieveRecord"),_retrieveRecords=require("./retrieveRecords"),_retrieveIndexes=require("./retrieveIndexes"),_joinKey=require("./joinKey"),_rowLookup=require("./rowLookup");const indexedRows=async(e,r,s,o,t)=>{const i=(await(0,_retrieveIndexes.retrieveIndexes)(e,[r],{}))[r];if(!i)return;const n=new Set(o.map((e=>(0,_joinKey.joinKey)(s,e[t]))).filter((e=>void 0!==e))),u=new Set;for(const e of i)n.has((0,_joinKey.joinKey)(s,e.value))&&e.record.forEach((e=>u.add(e)));const j=await(0,_retrieveRecord.retrieveRecord)(e);return(0,_retrieveRecords.retrieveEntryRows)(j,j.entries.filter((e=>u.has(e))))},joinBases=async(e,r,s,o,t)=>{const i=new Map,n=(e,r)=>i.set(e,{rows:r,lookups:new _rowLookup.RowLookups(r)});n(e,s[e]),t&&n(r,s[r]);const u=async e=>(await(0,_readEntity.readEntity)(e,s))[e];for(const e of o){const r=[{name:e.entityA,property:e.propertyA,other:e.entityB,otherProperty:e.propertyB},{name:e.entityB,property:e.propertyB,other:e.entityA,otherProperty:e.propertyA}];for(const{name:s,property:o,other:t,otherProperty:j}of r){if(i.has(s))continue;n(s,("="===e.comparator&&e.typeA===e.typeB&&(0,_joinKey.isKeyedType)(e.typeA)&&i.has(t)?await indexedRows(s,o,e.typeA,i.get(t).rows,j):void 0)??await u(s))}}return i.has(r)||n(r,await u(r)),i};exports.joinBases=joinBases;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.joinBases=void 0;var _readEntity=require("../queries/readEntity"),_retrieveRecord=require("./retrieveRecord"),_retrieveRecords=require("./retrieveRecords"),_retrieveIndexes=require("./retrieveIndexes"),_joinKey=require("./joinKey"),_rowLookup=require("./rowLookup");const indexedRows=async(e,r,t,o,i)=>{const n=(await(0,_retrieveIndexes.retrieveIndexes)(e,[r],{}))[r];if(!n)return;const s=new Set(o.map((e=>(0,_joinKey.joinKey)(t,e[i]))).filter((e=>void 0!==e))),a=new Set;for(const e of n)s.has((0,_joinKey.joinKey)(t,e.value))&&e.record.forEach((e=>a.add(e)));const y=await(0,_retrieveRecord.retrieveRecord)(e);return(0,_retrieveRecords.retrieveEntryRows)(y,y.entries.filter((e=>a.has(e))))},joinBases=async(e,r,t,o,i)=>{const n=new Map,s=(e,r)=>n.set(e,{rows:r,lookups:new _rowLookup.RowLookups(r)});s(e,t[e]),i&&s(r,t[r]);const a=async e=>(await(0,_readEntity.readEntity)(e,t))[e];for(const e of o){const r=[{name:e.entityA,property:e.propertyA,other:e.entityB,otherProperty:e.propertyB},{name:e.entityB,property:e.propertyB,other:e.entityA,otherProperty:e.propertyA}];for(const{name:t,property:o,other:i,otherProperty:y}of r){if(n.has(t))continue;s(t,("="===e.comparator&&e.typeA===e.typeB&&(0,_joinKey.isKeyedType)(e.typeA)&&n.has(i)?await indexedRows(t,o,e.typeA,n.get(i).rows,y):void 0)??await a(t))}}return n.has(r)||s(r,await a(r)),n};exports.joinBases=joinBases;
@@ -4,25 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.keyIndexFiles = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.for-each.js");
10
- require("core-js/modules/esnext.set.add-all.js");
11
- require("core-js/modules/esnext.set.delete-all.js");
12
- require("core-js/modules/esnext.set.difference.js");
13
- require("core-js/modules/esnext.set.every.js");
14
- require("core-js/modules/esnext.set.filter.js");
15
- require("core-js/modules/esnext.set.find.js");
16
- require("core-js/modules/esnext.set.intersection.js");
17
- require("core-js/modules/esnext.set.is-disjoint-from.js");
18
- require("core-js/modules/esnext.set.is-subset-of.js");
19
- require("core-js/modules/esnext.set.is-superset-of.js");
20
- require("core-js/modules/esnext.set.join.js");
21
- require("core-js/modules/esnext.set.map.js");
22
- require("core-js/modules/esnext.set.reduce.js");
23
- require("core-js/modules/esnext.set.some.js");
24
- require("core-js/modules/esnext.set.symmetric-difference.js");
25
- require("core-js/modules/esnext.set.union.js");
26
7
  var _storage = require("../storage");
27
8
  /**
28
9
  * The entry files a key's index lists for the values `matches` accepts, in the record's own order (the order its rows
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.keyIndexFiles=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _storage=require("../storage");const keyIndexFiles=async(e,s,r)=>{if(!s.lookup)return;if(!(e.entries||[]).length)return[];let t;try{t=await(0,_storage.readJson)(`__indexes/${e.path}/${s.lookup}`)}catch(e){return}const o=new Set;for(const e of Array.isArray(t)?t:[])Array.isArray(e.record)&&r(e.value)&&e.record.forEach((e=>o.add(e)));return e.entries.filter((e=>o.has(e)))};exports.keyIndexFiles=keyIndexFiles;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.keyIndexFiles=void 0;var _storage=require("../storage");const keyIndexFiles=async(e,r,t)=>{if(!r.lookup)return;if(!(e.entries||[]).length)return[];let s;try{s=await(0,_storage.readJson)(`__indexes/${e.path}/${r.lookup}`)}catch(e){return}const o=new Set;for(const e of Array.isArray(s)?s:[])Array.isArray(e.record)&&t(e.value)&&e.record.forEach((e=>o.add(e)));return e.entries.filter((e=>o.has(e)))};exports.keyIndexFiles=keyIndexFiles;
@@ -4,27 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.assertKnownFields = exports.assertFieldsDefined = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.find.js");
10
- require("core-js/modules/esnext.iterator.flat-map.js");
11
- require("core-js/modules/esnext.iterator.map.js");
12
- require("core-js/modules/esnext.set.add-all.js");
13
- require("core-js/modules/esnext.set.delete-all.js");
14
- require("core-js/modules/esnext.set.difference.js");
15
- require("core-js/modules/esnext.set.every.js");
16
- require("core-js/modules/esnext.set.filter.js");
17
- require("core-js/modules/esnext.set.find.js");
18
- require("core-js/modules/esnext.set.intersection.js");
19
- require("core-js/modules/esnext.set.is-disjoint-from.js");
20
- require("core-js/modules/esnext.set.is-subset-of.js");
21
- require("core-js/modules/esnext.set.is-superset-of.js");
22
- require("core-js/modules/esnext.set.join.js");
23
- require("core-js/modules/esnext.set.map.js");
24
- require("core-js/modules/esnext.set.reduce.js");
25
- require("core-js/modules/esnext.set.some.js");
26
- require("core-js/modules/esnext.set.symmetric-difference.js");
27
- require("core-js/modules/esnext.set.union.js");
28
7
  var _retrieveRecord = require("./retrieveRecord");
29
8
  var _isEntityProperty = require("./parsers/isEntityProperty");
30
9
  var _splitEntityProperty = require("./parsers/splitEntityProperty");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.assertKnownFields=exports.assertFieldsDefined=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.flat-map.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _retrieveRecord=require("./retrieveRecord"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_conditionTree=require("./conditionTree");const fieldList=e=>e.definition.map((e=>e.name)).join(", "),assertFieldsDefined=(e,r,s,t)=>{const o=new Set(r.definition.map((e=>e.name))),i=s.find((e=>!o.has(e)));if(void 0!==i)throw new Error(`Unknown field "${i}" in ${t}: ${e} has ${fieldList(r)}`)};exports.assertFieldsDefined=assertFieldsDefined;const assertKnownFields=async(e,r)=>{const s=new Set((e.mergeJoins||[]).map((e=>(0,_splitEntityProperty.splitEntityProperty)(e.propertyB).entity))),t=[...(0,_conditionTree.conditionsOf)(e.where).map((e=>({property:e.property,clause:"where"}))),...(e.sortClauses||[]).map((e=>({property:e.property,clause:"sort"}))),...(e.groupBy||[]).map((e=>({property:e,clause:"group by"}))),...(e.selectClauses||[]).filter((r=>r.property!==e.joinEntity)).map((e=>({property:e.property,clause:"select"}))),...(e.insertValues||[]).flatMap((e=>Object.keys(e||{}).map((e=>({property:e,clause:"insert",own:!0}))))),...Object.keys(e.updateValues||{}).map((e=>({property:e,clause:"set",own:!0}))),...(e.joinClauses||[]).flatMap((e=>[{property:e.propertyA,clause:"on"},{property:e.propertyB,clause:"on"}])),...(e.mergeJoins||[]).flatMap((e=>[{property:e.propertyA,clause:"merge"},{property:e.propertyB,clause:"merge"}]))];for(const{property:o,clause:i,own:n}of t){if("string"!=typeof o)continue;let t=e.entity,p=o;if(!n&&(0,_isEntityProperty.isEntityProperty)(o)&&({entity:t,property:p}=(0,_splitEntityProperty.splitEntityProperty)(o)),"select"===i&&t!==e.entity&&!s.has(t))throw new Error(`Can't select "${o}": a joined record's rows are a list under its name (select ${t}), and its fields are on each row only when merged (merge ... with ${t}.<field>)`);Object.prototype.hasOwnProperty.call(r,t)||(r[t]=await(0,_retrieveRecord.retrieveRecord)(t)),assertFieldsDefined(t,r[t],[p],i)}};exports.assertKnownFields=assertKnownFields;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.assertKnownFields=exports.assertFieldsDefined=void 0;var _retrieveRecord=require("./retrieveRecord"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_conditionTree=require("./conditionTree");const fieldList=e=>e.definition.map((e=>e.name)).join(", "),assertFieldsDefined=(e,r,t,s)=>{const o=new Set(r.definition.map((e=>e.name))),i=t.find((e=>!o.has(e)));if(void 0!==i)throw new Error(`Unknown field "${i}" in ${s}: ${e} has ${fieldList(r)}`)};exports.assertFieldsDefined=assertFieldsDefined;const assertKnownFields=async(e,r)=>{const t=new Set((e.mergeJoins||[]).map((e=>(0,_splitEntityProperty.splitEntityProperty)(e.propertyB).entity))),s=[...(0,_conditionTree.conditionsOf)(e.where).map((e=>({property:e.property,clause:"where"}))),...(e.sortClauses||[]).map((e=>({property:e.property,clause:"sort"}))),...(e.groupBy||[]).map((e=>({property:e,clause:"group by"}))),...(e.selectClauses||[]).filter((r=>r.property!==e.joinEntity)).map((e=>({property:e.property,clause:"select"}))),...(e.insertValues||[]).flatMap((e=>Object.keys(e||{}).map((e=>({property:e,clause:"insert",own:!0}))))),...Object.keys(e.updateValues||{}).map((e=>({property:e,clause:"set",own:!0}))),...(e.joinClauses||[]).flatMap((e=>[{property:e.propertyA,clause:"on"},{property:e.propertyB,clause:"on"}])),...(e.mergeJoins||[]).flatMap((e=>[{property:e.propertyA,clause:"merge"},{property:e.propertyB,clause:"merge"}]))];for(const{property:o,clause:i,own:p}of s){if("string"!=typeof o)continue;let s=e.entity,n=o;if(!p&&(0,_isEntityProperty.isEntityProperty)(o)&&({entity:s,property:n}=(0,_splitEntityProperty.splitEntityProperty)(o)),"select"===i&&s!==e.entity&&!t.has(s))throw new Error(`Can't select "${o}": a joined record's rows are a list under its name (select ${s}), and its fields are on each row only when merged (merge ... with ${s}.<field>)`);Object.prototype.hasOwnProperty.call(r,s)||(r[s]=await(0,_retrieveRecord.retrieveRecord)(s)),assertFieldsDefined(s,r[s],[n],i)}};exports.assertKnownFields=assertKnownFields;
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.mergeJoin = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.map.js");
9
7
  var _readEntity = require("../queries/readEntity");
10
8
  var _splitEntityProperty = require("./parsers/splitEntityProperty");
11
9
  var _where = require("../queries/where");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeJoin=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.map.js");var _readEntity=require("../queries/readEntity"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_where=require("../queries/where"),_retrieveRecord=require("./retrieveRecord"),_fieldType=require("./fieldType");const mergeJoin=async(e="",r="",t={})=>{const{entity:i,property:o}=(0,_splitEntityProperty.splitEntityProperty)(e),{entity:n,property:s}=(0,_splitEntityProperty.splitEntityProperty)(r);t=await(0,_readEntity.readEntity)(i,t),t=await(0,_readEntity.readEntity)(n,t);const p=(0,_fieldType.fieldType)(await(0,_retrieveRecord.retrieveRecord)(n),s);return t[i]=t[i].map((e=>{const r=(0,_where.where)(t[n],{property:s,comparator:"=",value:e[o],type:p});if(!r.length)return e;const i=r[0];for(const r in i)r!==s&&(e[`${n}.${r}`]=i[r]);return e})),t};exports.mergeJoin=mergeJoin;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeJoin=void 0;var _readEntity=require("../queries/readEntity"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_where=require("../queries/where"),_retrieveRecord=require("./retrieveRecord"),_fieldType=require("./fieldType");const mergeJoin=async(e="",r="",t={})=>{const{entity:i,property:o}=(0,_splitEntityProperty.splitEntityProperty)(e),{entity:n,property:p}=(0,_splitEntityProperty.splitEntityProperty)(r);t=await(0,_readEntity.readEntity)(i,t),t=await(0,_readEntity.readEntity)(n,t);const y=(0,_fieldType.fieldType)(await(0,_retrieveRecord.retrieveRecord)(n),p);return t[i]=t[i].map((e=>{const r=(0,_where.where)(t[n],{property:p,comparator:"=",value:e[o],type:y});if(!r.length)return e;const i=r[0];for(const r in i)r!==p&&(e[`${n}.${r}`]=i[r]);return e})),t};exports.mergeJoin=mergeJoin;
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/esnext.weak-map.delete-all.js");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.usesPackedReads = exports.retrievePacked = exports.packedPath = exports.discardPacked = void 0;
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.some.js");
10
7
  var jsEnv = _interopRequireWildcard(require("browser-or-node"));
11
8
  var _storage = require("../storage");
12
9
  var _config = require("./config");
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.usesPackedReads=exports.retrievePacked=exports.packedPath=exports.discardPacked=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.some.js");var e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_storage=require("../storage"),_config=require("./config");function _interopRequireWildcard(r,t){if(!t&&r&&r.__esModule)return r;var s,a,o=Object.defineProperty,d={__proto__:null,default:r};if(Object(r)!==r)return d;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,d)}for(a in r)"default"!==a&&{}.hasOwnProperty.call(r,a)&&((s=o&&Object.getOwnPropertyDescriptor(r,a))&&(s.get||s.set)?o(d,a,s):d[a]=r[a]);return d}const packedPath=e=>`__packed/${e}.json`;exports.packedPath=packedPath;const usesPackedReads=()=>(0,_config.getSetting)("packedReads",!jsEnv.isNode);exports.usesPackedReads=usesPackedReads;const retrievePacked=async e=>{if(!usesPackedReads())return;let r;try{r=await(0,_storage.readJson)(packedPath(e.path))}catch(e){return}const t=e.entries||[];return r&&Array.isArray(r.entries)&&Array.isArray(r.rows)&&r.entries.length===t.length&&r.rows.length===t.length&&!r.entries.some(((e,r)=>e!==t[r]))?r:void 0};exports.retrievePacked=retrievePacked;const discardPacked=async e=>{(0,_storage.fileExists)(packedPath(e))&&await(0,_storage.removeFile)(packedPath(e))};exports.discardPacked=discardPacked;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.usesPackedReads=exports.retrievePacked=exports.packedPath=exports.discardPacked=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_storage=require("../storage"),_config=require("./config");function _interopRequireWildcard(r,t){if(!t&&r&&r.__esModule)return r;var a,s,d=Object.defineProperty,c={__proto__:null,default:r};if(Object(r)!==r)return c;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,c)}for(s in r)"default"!==s&&{}.hasOwnProperty.call(r,s)&&((a=d&&Object.getOwnPropertyDescriptor(r,s))&&(a.get||a.set)?d(c,s,a):c[s]=r[s]);return c}const packedPath=e=>`__packed/${e}.json`;exports.packedPath=packedPath;const usesPackedReads=()=>(0,_config.getSetting)("packedReads",!jsEnv.isNode);exports.usesPackedReads=usesPackedReads;const retrievePacked=async e=>{if(!usesPackedReads())return;let r;try{r=await(0,_storage.readJson)(packedPath(e.path))}catch(e){return}const t=e.entries||[];return r&&Array.isArray(r.entries)&&Array.isArray(r.rows)&&r.entries.length===t.length&&r.rows.length===t.length&&!r.entries.some(((e,r)=>e!==t[r]))?r:void 0};exports.retrievePacked=retrievePacked;const discardPacked=async e=>{(0,_storage.fileExists)(packedPath(e))&&await(0,_storage.removeFile)(packedPath(e))};exports.discardPacked=discardPacked;
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.findConditions = void 0;
7
7
  require("core-js/modules/es.array.includes.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.flat-map.js");
10
8
  var _parseLiteralValue = require("./parseLiteralValue");
11
9
  var _conditionTree = require("../conditionTree");
12
10
  var _maskStrings = require("./maskStrings");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findConditions=void 0,require("core-js/modules/es.array.includes.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.flat-map.js");var _parseLiteralValue=require("./parseLiteralValue"),_conditionTree=require("../conditionTree"),_maskStrings=require("./maskStrings"),_splitClauses=require("./splitClauses");const wordEnd="(?![a-z0-9_.-])",keyword=e=>new RegExp(`^(?:${e})${wordEnd}`,"i"),conditionMatch=new RegExp(`^([a-z0-9_-]+\\.?[a-z0-9_-]*)\\s+(?:(is\\s+not\\s+null|is\\s+null|exists|does\\s+not\\s+exist)${wordEnd}|(<>|!=|>=|<=|=|>|<|in|between|like)\\s+(${_maskStrings.placeholderSource}|(${_parseLiteralValue.numberSource})|${_maskStrings.arraySource}|(null)|(true)|(false)))`,"i"),readCondition=e=>{const r=e[1];if(void 0!==e[2])return{property:r,comparator:e[2].toLowerCase().replace(/\s+/g," "),value:null};const n=e[3].toLowerCase(),t=(0,_parseLiteralValue.parseLiteralValue)(e,5);if(null===t)throw new Error(`\`${r} ${n} null\` never matches (null equals nothing, as in SQL): use \`${r} is null\` or \`${r} is not null\``);if("between"===n&&Array.isArray(t)&&t.includes(null))throw new Error(`\`${r} between\` can't have a null bound: it would never match`);return{property:r,comparator:n,value:t}},join=(e,r)=>{const n=r.flatMap((r=>!(0,_conditionTree.isCondition)(r)&&e in r?r[e]:[r]));return 1===n.length?n[0]:"and"===e?{and:n}:{or:n}},readExpression=e=>{let r=0;const n=()=>e.slice(r),t=()=>{r+=n().length-n().trimStart().length},o=e=>{t();const o=n().match(e);if(o)return r+=o[0].length,o[0]},s=()=>(0,_maskStrings.unmaskStrings)(n().trim(),"'"),i=e=>{t();const a=n().match(conditionMatch);if(a)return r+=a[0].length,readCondition(a);if(("and"===e||"or"===e)&&keyword("where").test(n()))throw new Error(`"${e} where" is no longer supported: ${_splitClauses.whereHint}`);if(o(keyword("not")))return{not:i("not")};if(o(/^\(/)){if(t(),n().startsWith(")"))throw new Error("Empty brackets in a where clause");const e=l("(");if(!o(/^\)/))throw new Error("Missing ) "+(n().trim()?`before: ${s()}`:"at the end of the where clause"));return e}throw new Error(`Missing a condition after ${e}${n().trim()?`: ${s()}`:""}`)},a=e=>{const r=[i(e)];for(;;){const e=o(keyword("and"));if(!e)break;r.push(i(e.toLowerCase().replace(/\s+/g," ")))}return join("and",r)},l=e=>{const r=[a(e)];for(;;){const e=o(keyword("or"));if(!e)break;r.push(a(e.toLowerCase().replace(/\s+/g," ")))}return join("or",r)},u=l("where");if(t(),n().startsWith(")"))throw new Error(`Unexpected ) in a where clause: ${s()}`);if(conditionMatch.test(n()))throw new Error(`Missing and/or before: ${s()}`);return{node:u,end:r}},findConditions=(e,r)=>{const{node:n,end:t}=readExpression(r);return e.where=n,r.slice(t).trim()};exports.findConditions=findConditions;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findConditions=void 0,require("core-js/modules/es.array.includes.js");var _parseLiteralValue=require("./parseLiteralValue"),_conditionTree=require("../conditionTree"),_maskStrings=require("./maskStrings"),_splitClauses=require("./splitClauses");const wordEnd="(?![a-z0-9_.-])",keyword=e=>new RegExp(`^(?:${e})${wordEnd}`,"i"),conditionMatch=new RegExp(`^([a-z0-9_-]+\\.?[a-z0-9_-]*)\\s+(?:(is\\s+not\\s+null|is\\s+null|exists|does\\s+not\\s+exist)${wordEnd}|(<>|!=|>=|<=|=|>|<|in|between|like)\\s+(${_maskStrings.placeholderSource}|(${_parseLiteralValue.numberSource})|${_maskStrings.arraySource}|(null)|(true)|(false)))`,"i"),readCondition=e=>{const r=e[1];if(void 0!==e[2])return{property:r,comparator:e[2].toLowerCase().replace(/\s+/g," "),value:null};const n=e[3].toLowerCase(),t=(0,_parseLiteralValue.parseLiteralValue)(e,5);if(null===t)throw new Error(`\`${r} ${n} null\` never matches (null equals nothing, as in SQL): use \`${r} is null\` or \`${r} is not null\``);if("between"===n&&Array.isArray(t)&&t.includes(null))throw new Error(`\`${r} between\` can't have a null bound: it would never match`);return{property:r,comparator:n,value:t}},join=(e,r)=>{const n=r.flatMap((r=>!(0,_conditionTree.isCondition)(r)&&e in r?r[e]:[r]));return 1===n.length?n[0]:"and"===e?{and:n}:{or:n}},readExpression=e=>{let r=0;const n=()=>e.slice(r),t=()=>{r+=n().length-n().trimStart().length},o=e=>{t();const o=n().match(e);if(o)return r+=o[0].length,o[0]},i=()=>(0,_maskStrings.unmaskStrings)(n().trim(),"'"),s=e=>{t();const a=n().match(conditionMatch);if(a)return r+=a[0].length,readCondition(a);if(("and"===e||"or"===e)&&keyword("where").test(n()))throw new Error(`"${e} where" is no longer supported: ${_splitClauses.whereHint}`);if(o(keyword("not")))return{not:s("not")};if(o(/^\(/)){if(t(),n().startsWith(")"))throw new Error("Empty brackets in a where clause");const e=l("(");if(!o(/^\)/))throw new Error("Missing ) "+(n().trim()?`before: ${i()}`:"at the end of the where clause"));return e}throw new Error(`Missing a condition after ${e}${n().trim()?`: ${i()}`:""}`)},a=e=>{const r=[s(e)];for(;;){const e=o(keyword("and"));if(!e)break;r.push(s(e.toLowerCase().replace(/\s+/g," ")))}return join("and",r)},l=e=>{const r=[a(e)];for(;;){const e=o(keyword("or"));if(!e)break;r.push(a(e.toLowerCase().replace(/\s+/g," ")))}return join("or",r)},u=l("where");if(t(),n().startsWith(")"))throw new Error(`Unexpected ) in a where clause: ${i()}`);if(conditionMatch.test(n()))throw new Error(`Missing and/or before: ${i()}`);return{node:u,end:r}},findConditions=(e,r)=>{const{node:n,end:t}=readExpression(r);return e.where=n,r.slice(t).trim()};exports.findConditions=findConditions;
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.findGroupBy = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.find.js");
9
7
  const groupMatch = /^[a-z0-9._-]+(?:\s*,\s*[a-z0-9._-]+)*/i;
10
8
  /**
11
9
  * Read a group by clause body (`a, b`, see splitClauses).
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findGroupBy=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");const groupMatch=/^[a-z0-9._-]+(?:\s*,\s*[a-z0-9._-]+)*/i,findGroupBy=(r,e)=>{const t=e.match(groupMatch);if(t){const o=t[0].split(/\s*,\s*/),s=o.find(((r,e)=>o.indexOf(r)!==e));if(s)throw new Error(`"${s}" is in group by twice`);return r.groupBy=o,e.slice(t[0].length).trim()}return e};exports.findGroupBy=findGroupBy;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findGroupBy=void 0;const groupMatch=/^[a-z0-9._-]+(?:\s*,\s*[a-z0-9._-]+)*/i,findGroupBy=(r,t)=>{const o=t.match(groupMatch);if(o){const e=o[0].split(/\s*,\s*/),i=e.find(((r,t)=>e.indexOf(r)!==t));if(i)throw new Error(`"${i}" is in group by twice`);return r.groupBy=e,t.slice(o[0].length).trim()}return t};exports.findGroupBy=findGroupBy;
@@ -5,9 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.unmaskStrings = exports.placeholderSource = exports.maskStrings = exports.maskArrays = exports.fromPlaceholder = exports.arraySource = void 0;
7
7
  require("core-js/modules/es.json.stringify.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.map.js");
10
- require("core-js/modules/esnext.iterator.some.js");
11
8
  var _scanQuery = require("./scanQuery");
12
9
  /**
13
10
  * Regex source matching one placeholder from maskStrings, with the hex-encoded value as its only group. The
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.unmaskStrings=exports.placeholderSource=exports.maskStrings=exports.maskArrays=exports.fromPlaceholder=exports.arraySource=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.iterator.some.js");var _scanQuery=require("./scanQuery");const placeholderSource=exports.placeholderSource="\\u0000([0-9a-f]*)\\u0000",placeholderMatch=new RegExp(placeholderSource,"g"),arraySource=exports.arraySource="\\u0001([0-9a-f]*)\\u0001",arrayMatch=new RegExp(arraySource,"g"),toHex=r=>r.split("").map((r=>r.charCodeAt(0).toString(16).padStart(4,"0"))).join(""),fromPlaceholder=r=>(r.match(/.{4}/g)||[]).map((r=>String.fromCharCode(parseInt(r,16)))).join("");exports.fromPlaceholder=fromPlaceholder;const maskStrings=r=>{const{strings:e}=(0,_scanQuery.assertClosed)((0,_scanQuery.scanQuery)(r));for(const[s,t]of[["\0","NUL"],["","SOH"]])for(let o=r.indexOf(s);-1!==o;o=r.indexOf(s,o+1))if(!e.some((({start:r,end:e})=>r<o&&o<e)))throw new Error(`Unexpected ${t} character at position ${o}`);const s=[];let t=0;for(const{start:o,end:a,value:n}of e)s.push(r.slice(t,o),`\0${toHex(n)}\0`),t=a;return s.push(r.slice(t)),s.join("")};exports.maskStrings=maskStrings;const unmaskStrings=(r,e="json")=>r.replace(placeholderMatch,((r,s)=>{const t=fromPlaceholder(s);return"json"===e?JSON.stringify(t):`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`})).replace(arrayMatch,((r,e)=>fromPlaceholder(e)));exports.unmaskStrings=unmaskStrings;const arrayJson=r=>{try{return JSON.stringify(JSON.parse(unmaskStrings(r),((r,e)=>{if("number"==typeof e&&!Number.isFinite(e))throw new Error(`${e} is too large`);if(Number.isInteger(e)&&!Number.isSafeInteger(e))throw new Error(`${e} is too large to store exactly (the largest whole number is ${Number.MAX_SAFE_INTEGER}): quote it to keep it as text`);return e})))}catch(e){throw new Error(`Invalid array ${unmaskStrings(r,"'")}: ${e.message}`)}},maskArrays=r=>{let e="",s=0,t=0;for(let o=0;o<r.length;o++){const a=r[o];if("["===a)0===s&&(t=o),s++;else if("]"===a&&s>0&&(s--,0===s)){e+=`${toHex(arrayJson(r.slice(t,o+1)))}`;continue}0===s&&(e+=a)}return s>0?e+r.slice(t):e};exports.maskArrays=maskArrays;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.unmaskStrings=exports.placeholderSource=exports.maskStrings=exports.maskArrays=exports.fromPlaceholder=exports.arraySource=void 0,require("core-js/modules/es.json.stringify.js");var _scanQuery=require("./scanQuery");const placeholderSource=exports.placeholderSource="\\u0000([0-9a-f]*)\\u0000",placeholderMatch=new RegExp(placeholderSource,"g"),arraySource=exports.arraySource="\\u0001([0-9a-f]*)\\u0001",arrayMatch=new RegExp(arraySource,"g"),toHex=r=>r.split("").map((r=>r.charCodeAt(0).toString(16).padStart(4,"0"))).join(""),fromPlaceholder=r=>(r.match(/.{4}/g)||[]).map((r=>String.fromCharCode(parseInt(r,16)))).join("");exports.fromPlaceholder=fromPlaceholder;const maskStrings=r=>{const{strings:e}=(0,_scanQuery.assertClosed)((0,_scanQuery.scanQuery)(r));for(const[s,t]of[["\0","NUL"],["","SOH"]])for(let o=r.indexOf(s);-1!==o;o=r.indexOf(s,o+1))if(!e.some((({start:r,end:e})=>r<o&&o<e)))throw new Error(`Unexpected ${t} character at position ${o}`);const s=[];let t=0;for(const{start:o,end:a,value:n}of e)s.push(r.slice(t,o),`\0${toHex(n)}\0`),t=a;return s.push(r.slice(t)),s.join("")};exports.maskStrings=maskStrings;const unmaskStrings=(r,e="json")=>r.replace(placeholderMatch,((r,s)=>{const t=fromPlaceholder(s);return"json"===e?JSON.stringify(t):`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`})).replace(arrayMatch,((r,e)=>fromPlaceholder(e)));exports.unmaskStrings=unmaskStrings;const arrayJson=r=>{try{return JSON.stringify(JSON.parse(unmaskStrings(r),((r,e)=>{if("number"==typeof e&&!Number.isFinite(e))throw new Error(`${e} is too large`);if(Number.isInteger(e)&&!Number.isSafeInteger(e))throw new Error(`${e} is too large to store exactly (the largest whole number is ${Number.MAX_SAFE_INTEGER}): quote it to keep it as text`);return e})))}catch(e){throw new Error(`Invalid array ${unmaskStrings(r,"'")}: ${e.message}`)}},maskArrays=r=>{let e="",s=0,t=0;for(let o=0;o<r.length;o++){const a=r[o];if("["===a)0===s&&(t=o),s++;else if("]"===a&&s>0&&(s--,0===s)){e+=`${toHex(arrayJson(r.slice(t,o+1)))}`;continue}0===s&&(e+=a)}return s>0?e+r.slice(t):e};exports.maskArrays=maskArrays;
@@ -5,27 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.parseField = exports.parseCreate = exports.nameSource = exports.nameMatch = exports.keyLookup = exports.fieldMatch = exports.createMatch = void 0;
7
7
  require("core-js/modules/es.array.includes.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.filter.js");
10
- require("core-js/modules/esnext.iterator.find.js");
11
- require("core-js/modules/esnext.iterator.map.js");
12
- require("core-js/modules/esnext.iterator.some.js");
13
- require("core-js/modules/esnext.set.add-all.js");
14
- require("core-js/modules/esnext.set.delete-all.js");
15
- require("core-js/modules/esnext.set.difference.js");
16
- require("core-js/modules/esnext.set.every.js");
17
- require("core-js/modules/esnext.set.filter.js");
18
- require("core-js/modules/esnext.set.find.js");
19
- require("core-js/modules/esnext.set.intersection.js");
20
- require("core-js/modules/esnext.set.is-disjoint-from.js");
21
- require("core-js/modules/esnext.set.is-subset-of.js");
22
- require("core-js/modules/esnext.set.is-superset-of.js");
23
- require("core-js/modules/esnext.set.join.js");
24
- require("core-js/modules/esnext.set.map.js");
25
- require("core-js/modules/esnext.set.reduce.js");
26
- require("core-js/modules/esnext.set.some.js");
27
- require("core-js/modules/esnext.set.symmetric-difference.js");
28
- require("core-js/modules/esnext.set.union.js");
29
8
  var _typeCheck = require("../../introspect/policies/typeCheck");
30
9
  var _maskStrings = require("./maskStrings");
31
10
  var _parseLiteralValue = require("./parseLiteralValue");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseField=exports.parseCreate=exports.nameSource=exports.nameMatch=exports.keyLookup=exports.fieldMatch=exports.createMatch=void 0,require("core-js/modules/es.array.includes.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.iterator.some.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _typeCheck=require("../../introspect/policies/typeCheck"),_maskStrings=require("./maskStrings"),_parseLiteralValue=require("./parseLiteralValue"),_startsQuery=require("./startsQuery");const createMatch=exports.createMatch=/^\s*create(?![a-z0-9_-])/i,headMatch=/^\s*create\s+(if\s+not\s+exists\s+)?([a-z0-9_-]+)\s*\(/i,nameSource=exports.nameSource="[a-z0-9_-]+",nameMatch=exports.nameMatch=new RegExp(`^${nameSource}$`,"i"),numberMatch=new RegExp(`^${_parseLiteralValue.numberSource}$`,"i"),fieldMatch=exports.fieldMatch=new RegExp(`^(${nameSource})\\s+(${nameSource})((?:\\s[\\s\\S]*)?)$`,"i"),primaryMatch=/^primary\s+key\s*\(([^()]*)\)$/i,uniqueMatch=/^unique\s*\(([^()]*)\)$/i,indexMatch=/^index\s*\(([^()]*)\)$/i,foreignMatch=new RegExp(`^foreign\\s+key\\s*\\(([^()]*)\\)\\s*references\\s+(${nameSource})\\s*\\(([^()]*)\\)$`,"i"),stringLiteral=new RegExp(`^${_maskStrings.placeholderSource}$`),arrayLiteral=new RegExp(`^${_maskStrings.arraySource}$`),lookupPrefix={primary:"pk",unique:"unique",index:"index",foreign:"fk"},keyLookup=(e,r)=>`${lookupPrefix[e]}_${r.join("_")}.json`;exports.keyLookup=keyLookup;const shown=e=>(0,_maskStrings.unmaskStrings)(e.trim(),"'"),findClose=(e,r)=>{let s=0;for(let t=r;t<e.length;t++)if("("===e[t])s++;else if(")"===e[t]&&(s--,0===s))return t;return-1},splitItems=e=>{const r=[];let s=0,t=0;for(let i=0;i<e.length;i++)"("===e[i]?s++:")"===e[i]?s--:","===e[i]&&0===s&&(r.push(e.slice(t,i)),t=i+1);return r.push(e.slice(t)),r.map((e=>e.trim()))},parseNames=(e,r)=>{const s=e.split(",").map((e=>e.trim()));if(s.some((e=>!nameMatch.test(e))))throw new Error(`Expected field names separated by commas in: ${shown(r)}`);if(new Set(s).size!==s.length)throw new Error(`The same field is named twice in: ${shown(r)}`);return s},parseDefault=e=>{if(void 0===e)throw new Error("Missing a value after default");const r=e.match(stringLiteral);if(r)return(0,_maskStrings.fromPlaceholder)(r[1]);const s=e.match(arrayLiteral);if(s)return JSON.parse((0,_maskStrings.fromPlaceholder)(s[1]));if(numberMatch.test(e))return(0,_parseLiteralValue.parseNumber)(e);switch(e.toLowerCase()){case"null":return null;case"true":return!0;case"false":return!1}throw new Error(`Unrecognized default value: ${shown(e)}`)},parseField=e=>{const[r,s,t,i]=e,o=t.toLowerCase();if(!_typeCheck.fieldTypes.includes(o))throw new Error(`Unknown type "${t}" for field "${s}" (expected ${_typeCheck.fieldTypes.join(", ")})`);const n={name:s,type:o,optional:!1,autoGenerate:!1},a=new Set,l=e=>{if(a.has(e))throw new Error(`"${e}" is given twice for field "${s}"`);a.add(e)},u=""===i.trim()?[]:i.trim().split(/\s+/);for(let e=0;e<u.length;e++){const t=u[e].toLowerCase();if("optional"===t)l("optional"),n.optional=!0;else if("auto"===t)l("auto"),n.autoGenerate=!0;else if("null"===t)l("null"),n.nullable=!0;else if("not"===t&&"null"===(u[e+1]||"").toLowerCase())l("null"),n.nullable=!1,e++;else{if("default"!==t)throw new Error(`Unrecognized "${shown(u[e])}" for field "${s}" in: ${shown(r)}`);l("default"),n.useDefault=!0,n.defaultValue=parseDefault(u[++e])}}if(n.autoGenerate&&n.useDefault)throw new Error(`Field "${s}" can't be both auto and have a default`);if(n.autoGenerate&&"string"!==o)throw new Error(`Field "${s}" is auto, which generates a UUID, so its type must be string`);return n};exports.parseField=parseField;const parseKey=e=>{let r=e.match(primaryMatch);if(r)return{type:"primary",fields:parseNames(r[1],e)};if(r=e.match(uniqueMatch),r)return{type:"unique",fields:parseNames(r[1],e)};if(r=e.match(indexMatch),r)return{type:"index",fields:parseNames(r[1],e)};if(r=e.match(foreignMatch),r){const s=parseNames(r[1],e),t=parseNames(r[3],e);if(1!==s.length||1!==t.length)throw new Error(`Only single-field foreign keys are supported so far: ${shown(e)}`);return{type:"foreign",fields:s,references:[{fields:[`${r[2]}.${t[0]}`],lookup:`${r[2]}.json`}]}}return null},finishKeys=(e,r)=>{const s=e.map((e=>e.name));if(r.filter((e=>"primary"===e.type)).length>1)throw new Error("Only one primary key is allowed");const t=new Set;return r.map((e=>{const r=e.fields.find((e=>!s.includes(e)));if(r)throw new Error(`The ${e.type} key (${e.fields.join(", ")}) names "${r}", which is not a field`);const i=keyLookup(e.type,e.fields);if(t.has(i))throw new Error(`The same ${e.type} key on "${e.fields.join(", ")}" is given twice`);return t.add(i),Object.assign({type:e.type,fields:e.fields,lookup:i},e.references?{references:e.references}:{})}))},parseCreate=e=>{const r=e.match(headMatch);if(!r)throw new Error("Expected: create [if not exists] <name> (<fields and keys>)");const s=r[2];if("__RECORDS"===s)throw new Error("__RECORDS is reserved for the list of records");const t=r[0].length-1,i=findClose(e,t);if(-1===i)throw new Error("Missing ) at the end of the field list");const o=e.slice(i+1).trim();if(o){if(_startsQuery.startsQueryMatch.test(o))throw new Error(`Missing ; before: ${shown(o)}`);throw new Error(`Unrecognized query value: ${shown(o)}`)}const n=e.slice(t+1,i),a=[],l=[];if(n.trim())for(const e of splitItems(n)){if(!e)throw new Error("Empty item in the field list (an extra comma?)");const r=parseKey(e);if(r){l.push(r);continue}const s=e.match(fieldMatch);if(!s)throw new Error(`Expected a field (<name> <type> ...) or a key in: ${shown(e)}`);const t=parseField(s);if(a.some((e=>e.name===t.name)))throw new Error(`Field "${t.name}" is given twice`);a.push(t)}return{entity:s,create:{ifNotExists:Boolean(r[1]),definition:a,keys:finishKeys(a,l)}}};exports.parseCreate=parseCreate;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseField=exports.parseCreate=exports.nameSource=exports.nameMatch=exports.keyLookup=exports.fieldMatch=exports.createMatch=void 0,require("core-js/modules/es.array.includes.js");var _typeCheck=require("../../introspect/policies/typeCheck"),_maskStrings=require("./maskStrings"),_parseLiteralValue=require("./parseLiteralValue"),_startsQuery=require("./startsQuery");const createMatch=exports.createMatch=/^\s*create(?![a-z0-9_-])/i,headMatch=/^\s*create\s+(if\s+not\s+exists\s+)?([a-z0-9_-]+)\s*\(/i,nameSource=exports.nameSource="[a-z0-9_-]+",nameMatch=exports.nameMatch=new RegExp(`^${nameSource}$`,"i"),numberMatch=new RegExp(`^${_parseLiteralValue.numberSource}$`,"i"),fieldMatch=exports.fieldMatch=new RegExp(`^(${nameSource})\\s+(${nameSource})((?:\\s[\\s\\S]*)?)$`,"i"),primaryMatch=/^primary\s+key\s*\(([^()]*)\)$/i,uniqueMatch=/^unique\s*\(([^()]*)\)$/i,indexMatch=/^index\s*\(([^()]*)\)$/i,foreignMatch=new RegExp(`^foreign\\s+key\\s*\\(([^()]*)\\)\\s*references\\s+(${nameSource})\\s*\\(([^()]*)\\)$`,"i"),stringLiteral=new RegExp(`^${_maskStrings.placeholderSource}$`),arrayLiteral=new RegExp(`^${_maskStrings.arraySource}$`),lookupPrefix={primary:"pk",unique:"unique",index:"index",foreign:"fk"},keyLookup=(e,r)=>`${lookupPrefix[e]}_${r.join("_")}.json`;exports.keyLookup=keyLookup;const shown=e=>(0,_maskStrings.unmaskStrings)(e.trim(),"'"),findClose=(e,r)=>{let t=0;for(let s=r;s<e.length;s++)if("("===e[s])t++;else if(")"===e[s]&&(t--,0===t))return s;return-1},splitItems=e=>{const r=[];let t=0,s=0;for(let n=0;n<e.length;n++)"("===e[n]?t++:")"===e[n]?t--:","===e[n]&&0===t&&(r.push(e.slice(s,n)),s=n+1);return r.push(e.slice(s)),r.map((e=>e.trim()))},parseNames=(e,r)=>{const t=e.split(",").map((e=>e.trim()));if(t.some((e=>!nameMatch.test(e))))throw new Error(`Expected field names separated by commas in: ${shown(r)}`);if(new Set(t).size!==t.length)throw new Error(`The same field is named twice in: ${shown(r)}`);return t},parseDefault=e=>{if(void 0===e)throw new Error("Missing a value after default");const r=e.match(stringLiteral);if(r)return(0,_maskStrings.fromPlaceholder)(r[1]);const t=e.match(arrayLiteral);if(t)return JSON.parse((0,_maskStrings.fromPlaceholder)(t[1]));if(numberMatch.test(e))return(0,_parseLiteralValue.parseNumber)(e);switch(e.toLowerCase()){case"null":return null;case"true":return!0;case"false":return!1}throw new Error(`Unrecognized default value: ${shown(e)}`)},parseField=e=>{const[r,t,s,n]=e,i=s.toLowerCase();if(!_typeCheck.fieldTypes.includes(i))throw new Error(`Unknown type "${s}" for field "${t}" (expected ${_typeCheck.fieldTypes.join(", ")})`);const a={name:t,type:i,optional:!1,autoGenerate:!1},o=new Set,l=e=>{if(o.has(e))throw new Error(`"${e}" is given twice for field "${t}"`);o.add(e)},c=""===n.trim()?[]:n.trim().split(/\s+/);for(let e=0;e<c.length;e++){const s=c[e].toLowerCase();if("optional"===s)l("optional"),a.optional=!0;else if("auto"===s)l("auto"),a.autoGenerate=!0;else if("null"===s)l("null"),a.nullable=!0;else if("not"===s&&"null"===(c[e+1]||"").toLowerCase())l("null"),a.nullable=!1,e++;else{if("default"!==s)throw new Error(`Unrecognized "${shown(c[e])}" for field "${t}" in: ${shown(r)}`);l("default"),a.useDefault=!0,a.defaultValue=parseDefault(c[++e])}}if(a.autoGenerate&&a.useDefault)throw new Error(`Field "${t}" can't be both auto and have a default`);if(a.autoGenerate&&"string"!==i)throw new Error(`Field "${t}" is auto, which generates a UUID, so its type must be string`);return a};exports.parseField=parseField;const parseKey=e=>{let r=e.match(primaryMatch);if(r)return{type:"primary",fields:parseNames(r[1],e)};if(r=e.match(uniqueMatch),r)return{type:"unique",fields:parseNames(r[1],e)};if(r=e.match(indexMatch),r)return{type:"index",fields:parseNames(r[1],e)};if(r=e.match(foreignMatch),r){const t=parseNames(r[1],e),s=parseNames(r[3],e);if(1!==t.length||1!==s.length)throw new Error(`Only single-field foreign keys are supported so far: ${shown(e)}`);return{type:"foreign",fields:t,references:[{fields:[`${r[2]}.${s[0]}`],lookup:`${r[2]}.json`}]}}return null},finishKeys=(e,r)=>{const t=e.map((e=>e.name));if(r.filter((e=>"primary"===e.type)).length>1)throw new Error("Only one primary key is allowed");const s=new Set;return r.map((e=>{const r=e.fields.find((e=>!t.includes(e)));if(r)throw new Error(`The ${e.type} key (${e.fields.join(", ")}) names "${r}", which is not a field`);const n=keyLookup(e.type,e.fields);if(s.has(n))throw new Error(`The same ${e.type} key on "${e.fields.join(", ")}" is given twice`);return s.add(n),Object.assign({type:e.type,fields:e.fields,lookup:n},e.references?{references:e.references}:{})}))},parseCreate=e=>{const r=e.match(headMatch);if(!r)throw new Error("Expected: create [if not exists] <name> (<fields and keys>)");const t=r[2];if("__RECORDS"===t)throw new Error("__RECORDS is reserved for the list of records");const s=r[0].length-1,n=findClose(e,s);if(-1===n)throw new Error("Missing ) at the end of the field list");const i=e.slice(n+1).trim();if(i){if(_startsQuery.startsQueryMatch.test(i))throw new Error(`Missing ; before: ${shown(i)}`);throw new Error(`Unrecognized query value: ${shown(i)}`)}const a=e.slice(s+1,n),o=[],l=[];if(a.trim())for(const e of splitItems(a)){if(!e)throw new Error("Empty item in the field list (an extra comma?)");const r=parseKey(e);if(r){l.push(r);continue}const t=e.match(fieldMatch);if(!t)throw new Error(`Expected a field (<name> <type> ...) or a key in: ${shown(e)}`);const s=parseField(t);if(o.some((e=>e.name===s.name)))throw new Error(`Field "${s.name}" is given twice`);o.push(s)}return{entity:t,create:{ifNotExists:Boolean(r[1]),definition:o,keys:finishKeys(o,l)}}};exports.parseCreate=parseCreate;
@@ -5,22 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.whereHint = exports.splitClauses = exports.clauseOrder = void 0;
7
7
  require("core-js/modules/es.array.includes.js");
8
- require("core-js/modules/esnext.set.add-all.js");
9
- require("core-js/modules/esnext.set.delete-all.js");
10
- require("core-js/modules/esnext.set.difference.js");
11
- require("core-js/modules/esnext.set.every.js");
12
- require("core-js/modules/esnext.set.filter.js");
13
- require("core-js/modules/esnext.set.find.js");
14
- require("core-js/modules/esnext.set.intersection.js");
15
- require("core-js/modules/esnext.set.is-disjoint-from.js");
16
- require("core-js/modules/esnext.set.is-subset-of.js");
17
- require("core-js/modules/esnext.set.is-superset-of.js");
18
- require("core-js/modules/esnext.set.join.js");
19
- require("core-js/modules/esnext.set.map.js");
20
- require("core-js/modules/esnext.set.reduce.js");
21
- require("core-js/modules/esnext.set.some.js");
22
- require("core-js/modules/esnext.set.symmetric-difference.js");
23
- require("core-js/modules/esnext.set.union.js");
24
8
  var _maskStrings = require("./maskStrings");
25
9
  /**
26
10
  * The clauses each command allows, in the order they must come. create, drop, describe and show have their own
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.whereHint=exports.splitClauses=exports.clauseOrder=void 0,require("core-js/modules/es.array.includes.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _maskStrings=require("./maskStrings");const clauseOrder=exports.clauseOrder={read:["select","on","merge","where","group by","sort","limit","offset"],insert:["values"],update:["set","where"],delete:["where"]},clauseWords=[...new Set(Object.values(clauseOrder).flat())],headMatch=/^\s*(delete|insert|read|update)\s+([a-z0-9_-]+(\s*\.[a-z0-9_-]+)?)/i,tokenMatch=new RegExp(`${_maskStrings.placeholderSource}|${_maskStrings.arraySource}|[a-z0-9_.-]+|<>|!=|>=|<=|\\S`,"gi"),conditionWords=["=","!=","<>",">","<",">=","<=","in","between","like","is","exists","does"],continues={on:e=>"and"===e,merge:()=>!0},whereHint=exports.whereHint="use and / or inside one where clause (where a = 1 and b = 2)",splitClauses=e=>{const s=e.match(headMatch);if(!s)return;const r=s[1].toLowerCase(),t=clauseOrder[r],o=/^[aeiou]/.test(r)?"an":"a";if(s[3]&&"read"!==r)throw new Error(`A joined record (${s[2]}) isn't allowed in ${o} ${r} query`);const n=[...e.slice(s[0].length).matchAll(tokenMatch)].map((({0:e,index:r})=>({text:e,lower:e.toLowerCase(),start:s[0].length+r}))),i=[];let l=0,d=!1;for(let e=0;e<n.length;e++){const{lower:s,start:u}=n[e],a=n[e-1]?.lower,c=n[e+1]?.lower;"("!==s&&")"!==s||(l+="("===s?1:-1);const w="group"===s&&"by"===c?"group by":s,j=d||","===a||"as"===a||conditionWords.includes(c);if(d=!1,l>0||"by"===w||!clauseWords.includes(w)||j)continue;const m=i[i.length-1]?.keyword;if(m===w&&continues[w]?.(a))continue;const h=i.some((e=>"where"===e.keyword));if("where"===w&&h&&("and"===a||"or"===a))throw new Error(`"${a} where" is no longer supported: ${whereHint}`);if(!t.includes(w))throw new Error(`"${w}" isn't allowed in ${o} ${r} query (allowed: ${t.join(", ")})`);if(m&&t.indexOf(w)<t.indexOf(m))throw new Error(`"${w}" can't come after "${m}" (order: ${t.join(", ")})`);if(i.some((e=>e.keyword===w)))throw new Error(`Only one "${w}" clause is allowed${"where"===w?`: ${whereHint}`:""}`);"group by"===w&&e++,i.push({keyword:w,start:u,end:n[e].start+n[e].text.length}),d=!0}return{command:r,head:s[0].trim(),leading:e.slice(s[0].length,i[0]?.start??e.length).trim(),clauses:i.map((({keyword:s,end:r},t)=>({keyword:s,body:e.slice(r,i[t+1]?.start??e.length).trim()})))}};exports.splitClauses=splitClauses;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.whereHint=exports.splitClauses=exports.clauseOrder=void 0,require("core-js/modules/es.array.includes.js");var _maskStrings=require("./maskStrings");const clauseOrder=exports.clauseOrder={read:["select","on","merge","where","group by","sort","limit","offset"],insert:["values"],update:["set","where"],delete:["where"]},clauseWords=[...new Set(Object.values(clauseOrder).flat())],headMatch=/^\s*(delete|insert|read|update)\s+([a-z0-9_-]+(\s*\.[a-z0-9_-]+)?)/i,tokenMatch=new RegExp(`${_maskStrings.placeholderSource}|${_maskStrings.arraySource}|[a-z0-9_.-]+|<>|!=|>=|<=|\\S`,"gi"),conditionWords=["=","!=","<>",">","<",">=","<=","in","between","like","is","exists","does"],continues={on:e=>"and"===e,merge:()=>!0},whereHint=exports.whereHint="use and / or inside one where clause (where a = 1 and b = 2)",splitClauses=e=>{const r=e.match(headMatch);if(!r)return;const t=r[1].toLowerCase(),s=clauseOrder[t],o=/^[aeiou]/.test(t)?"an":"a";if(r[3]&&"read"!==t)throw new Error(`A joined record (${r[2]}) isn't allowed in ${o} ${t} query`);const n=[...e.slice(r[0].length).matchAll(tokenMatch)].map((({0:e,index:t})=>({text:e,lower:e.toLowerCase(),start:r[0].length+t}))),a=[];let i=0,l=!1;for(let e=0;e<n.length;e++){const{lower:r,start:d}=n[e],c=n[e-1]?.lower,u=n[e+1]?.lower;"("!==r&&")"!==r||(i+="("===r?1:-1);const w="group"===r&&"by"===u?"group by":r,h=l||","===c||"as"===c||conditionWords.includes(u);if(l=!1,i>0||"by"===w||!clauseWords.includes(w)||h)continue;const p=a[a.length-1]?.keyword;if(p===w&&continues[w]?.(c))continue;const g=a.some((e=>"where"===e.keyword));if("where"===w&&g&&("and"===c||"or"===c))throw new Error(`"${c} where" is no longer supported: ${whereHint}`);if(!s.includes(w))throw new Error(`"${w}" isn't allowed in ${o} ${t} query (allowed: ${s.join(", ")})`);if(p&&s.indexOf(w)<s.indexOf(p))throw new Error(`"${w}" can't come after "${p}" (order: ${s.join(", ")})`);if(a.some((e=>e.keyword===w)))throw new Error(`Only one "${w}" clause is allowed${"where"===w?`: ${whereHint}`:""}`);"group by"===w&&e++,a.push({keyword:w,start:d,end:n[e].start+n[e].text.length}),l=!0}return{command:t,head:r[0].trim(),leading:e.slice(r[0].length,a[0]?.start??e.length).trim(),clauses:a.map((({keyword:r,end:t},s)=>({keyword:r,body:e.slice(t,a[s+1]?.start??e.length).trim()})))}};exports.splitClauses=splitClauses;
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.splitQueries = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.reduce.js");
10
7
  var _scanQuery = require("./scanQuery");
11
8
  /**
12
9
  * Split a string of queries into one query each, on the `;` between them. A `;` inside a string or a comment does
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.splitQueries=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.reduce.js");var _scanQuery=require("./scanQuery");const splitQueries=(e="")=>{const{comments:r,semicolons:s}=(0,_scanQuery.assertClosed)((0,_scanQuery.scanQuery)(e)),t=r.reduce(((e,{start:r,end:s})=>`${e.slice(0,r)}${" ".repeat(s-r)}${e.slice(s)}`),e);return[...s,t.length].map(((e,r)=>t.slice(0===r?0:s[r-1]+1,e).trim())).filter((e=>e.length>0))};exports.splitQueries=splitQueries;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.splitQueries=void 0;var _scanQuery=require("./scanQuery");const splitQueries=(e="")=>{const{comments:s,semicolons:r}=(0,_scanQuery.assertClosed)((0,_scanQuery.scanQuery)(e)),t=s.reduce(((e,{start:s,end:r})=>`${e.slice(0,s)}${" ".repeat(r-s)}${e.slice(r)}`),e);return[...r,t.length].map(((e,s)=>t.slice(0===s?0:r[s-1]+1,e).trim())).filter((e=>e.length>0))};exports.splitQueries=splitQueries;
@@ -5,10 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.reconcileJoin = void 0;
7
7
  require("core-js/modules/es.json.stringify.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.every.js");
10
- require("core-js/modules/esnext.iterator.find.js");
11
- require("core-js/modules/esnext.iterator.for-each.js");
12
8
  /**
13
9
  * The same row's value of a field, compared as JSON (rows are JSON data, so this is a deep comparison).
14
10
  * @param a
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.reconcileJoin=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.every.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.for-each.js");const sameValue=(e,r)=>e===r||JSON.stringify(e)===JSON.stringify(r),reconcileJoin=(e,r,o,s,t)=>{const i=e[r][o];return Object.prototype.hasOwnProperty.call(i,s)&&Array.isArray(i[s])&&Array.isArray(e[s])&&i[s].forEach(((i,c)=>{if(!i||!Object.prototype.hasOwnProperty.call(i,t))return;const n=Object.keys(i),a=e[s].find((e=>n.every((r=>sameValue(e[r],i[r])))));a&&(e[r][o][s][c]=a)})),e};exports.reconcileJoin=reconcileJoin;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.reconcileJoin=void 0,require("core-js/modules/es.json.stringify.js");const sameValue=(e,r)=>e===r||JSON.stringify(e)===JSON.stringify(r),reconcileJoin=(e,r,o,s,t)=>{const i=e[r][o];return Object.prototype.hasOwnProperty.call(i,s)&&Array.isArray(i[s])&&Array.isArray(e[s])&&i[s].forEach(((i,n)=>{if(!i||!Object.prototype.hasOwnProperty.call(i,t))return;const c=Object.keys(i),a=e[s].find((e=>c.every((r=>sameValue(e[r],i[r])))));a&&(e[r][o][s][n]=a)})),e};exports.reconcileJoin=reconcileJoin;
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.removeFromIndex = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.map.js");
10
7
  var _compareAs = require("./compareAs");
11
8
  var _storage = require("../storage");
12
9
  /**
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeFromIndex=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.map.js");var _compareAs=require("./compareAs"),_storage=require("../storage");const removeFromIndex=async(e="",r=null,o=void 0,t="",s=void 0)=>{if(!r||!r.lookup)return null;const a=`__indexes/${e}/${r.lookup}`;let u=[];try{u=await(0,_storage.readJson)(a)}catch(e){return null}return u=u.map((e=>(0,_compareAs.sameValue)(s,e.value,o)?{value:e.value,record:e.record.filter((e=>e!==t))}:e)).filter((e=>e.record.length)),await(0,_storage.writeJson)(a,u),u};exports.removeFromIndex=removeFromIndex;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeFromIndex=void 0;var _compareAs=require("./compareAs"),_storage=require("../storage");const removeFromIndex=async(e="",r=null,o=void 0,t="",a=void 0)=>{if(!r||!r.lookup)return null;const s=`__indexes/${e}/${r.lookup}`;let l=[];try{l=await(0,_storage.readJson)(s)}catch(e){return null}return l=l.map((e=>(0,_compareAs.sameValue)(a,e.value,o)?{value:e.value,record:e.record.filter((e=>e!==t))}:e)).filter((e=>e.record.length)),await(0,_storage.writeJson)(s,l),l};exports.removeFromIndex=removeFromIndex;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/esnext.weak-map.delete-all.js");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.requireNode=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node"));function _interopRequireWildcard(r,o){if(!o&&r&&r.__esModule)return r;var t,n,i=Object.defineProperty,s={__proto__:null,default:r};if(Object(r)!==r)return s;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,s)}for(n in r)"default"!==n&&{}.hasOwnProperty.call(r,n)&&((t=i&&Object.getOwnPropertyDescriptor(r,n))&&(t.get||t.set)?i(s,n,t):s[n]=r[n]);return s}const requireNode=e=>{if(!jsEnv.isNode)throw new Error(`${e} only works in Node: in a browser, json-fs-query can only read the database (over fetch())`)};exports.requireNode=requireNode;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.requireNode=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node"));function _interopRequireWildcard(r,o){if(!o&&r&&r.__esModule)return r;var t,n,i=Object.defineProperty,s={__proto__:null,default:r};if(Object(r)!==r)return s;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,s)}for(n in r)"default"!==n&&{}.hasOwnProperty.call(r,n)&&((t=i&&Object.getOwnPropertyDescriptor(r,n))&&(t.get||t.set)?i(s,n,t):s[n]=r[n]);return s}const requireNode=e=>{if(!jsEnv.isNode)throw new Error(`${e} only works in Node: in a browser, json-fs-query can only read the database (over fetch())`)};exports.requireNode=requireNode;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/esnext.weak-map.delete-all.js");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.retrieveRecord=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_retrieveFile=require("./retrieveFile"),_recordExists=require("./recordExists");function _interopRequireWildcard(r,t){if(!t&&r&&r.__esModule)return r;var o,i,s=Object.defineProperty,n={__proto__:null,default:r};if(Object(r)!==r)return n;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,n)}for(i in r)"default"!==i&&{}.hasOwnProperty.call(r,i)&&((o=s&&Object.getOwnPropertyDescriptor(r,i))&&(o.get||o.set)?s(n,i,o):n[i]=r[i]);return n}const retrieveRecord=async(e="")=>{if(jsEnv.isNode&&!(0,_recordExists.recordExists)(e))throw new Error(`Record "${e}" doesn't exist`);try{return await(0,_retrieveFile.retrieveFile)(`${e}.json`)}catch(r){if(!jsEnv.isNode)throw new Error(`Record "${e}" doesn't exist, or ${e}.json can't be read`);throw r}};exports.retrieveRecord=retrieveRecord;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.retrieveRecord=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_retrieveFile=require("./retrieveFile"),_recordExists=require("./recordExists");function _interopRequireWildcard(r,t){if(!t&&r&&r.__esModule)return r;var o,i,s=Object.defineProperty,n={__proto__:null,default:r};if(Object(r)!==r)return n;if(e||"function"!=typeof WeakMap||(e=new WeakMap),e){if(e.has(r))return e.get(r);e.set(r,n)}for(i in r)"default"!==i&&{}.hasOwnProperty.call(r,i)&&((o=s&&Object.getOwnPropertyDescriptor(r,i))&&(o.get||o.set)?s(n,i,o):n[i]=r[i]);return n}const retrieveRecord=async(e="")=>{if(jsEnv.isNode&&!(0,_recordExists.recordExists)(e))throw new Error(`Record "${e}" doesn't exist`);try{return await(0,_retrieveFile.retrieveFile)(`${e}.json`)}catch(r){if(!jsEnv.isNode)throw new Error(`Record "${e}" doesn't exist, or ${e}.json can't be read`);throw r}};exports.retrieveRecord=retrieveRecord;
@@ -4,22 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.retrieveRecords = exports.retrieveEntryRows = exports.retrieveEntry = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
- require("core-js/modules/esnext.iterator.map.js");
10
- require("core-js/modules/esnext.map.delete-all.js");
11
- require("core-js/modules/esnext.map.every.js");
12
- require("core-js/modules/esnext.map.filter.js");
13
- require("core-js/modules/esnext.map.find.js");
14
- require("core-js/modules/esnext.map.find-key.js");
15
- require("core-js/modules/esnext.map.includes.js");
16
- require("core-js/modules/esnext.map.key-of.js");
17
- require("core-js/modules/esnext.map.map-keys.js");
18
- require("core-js/modules/esnext.map.map-values.js");
19
- require("core-js/modules/esnext.map.merge.js");
20
- require("core-js/modules/esnext.map.reduce.js");
21
- require("core-js/modules/esnext.map.some.js");
22
- require("core-js/modules/esnext.map.update.js");
23
7
  var _retrieveFile = require("./retrieveFile");
24
8
  var _retrieveRecord = require("./retrieveRecord");
25
9
  var _retrieveFiles = require("./retrieveFiles");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.retrieveRecords=exports.retrieveEntryRows=exports.retrieveEntry=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js");var _retrieveFile=require("./retrieveFile"),_retrieveRecord=require("./retrieveRecord"),_retrieveFiles=require("./retrieveFiles"),_packedTable=require("./packedTable"),_config=require("./config");const retrieveEntry=async e=>{const r=await(0,_retrieveFile.retrieveFile)(e).catch((e=>console.error(e)));if(!r)throw new Error(`Could not read entity ${e.slice(e.lastIndexOf("/")+1)}`);return r};exports.retrieveEntry=retrieveEntry;const retrieveEntryRows=async(e,r,s=retrieveEntry)=>{const t=r.length>(0,_config.getSetting)("readConcurrency",16)?await(0,_packedTable.retrievePacked)(e):void 0;if(!t)return(0,_retrieveFiles.retrieveFiles)(r.map((r=>`${e.path}/${r}`)),s);const i=new Map(t.entries.map(((e,r)=>[e,r]))),o=r.filter((e=>!i.has(e))),n=o.length?await(0,_retrieveFiles.retrieveFiles)(o.map((r=>`${e.path}/${r}`)),s):[],a=new Map(o.map(((e,r)=>[e,n[r]])));return r.map((e=>i.has(e)?t.rows[i.get(e)]:a.get(e)))};exports.retrieveEntryRows=retrieveEntryRows;const retrieveRecords=async(e="")=>{const r=await(0,_retrieveRecord.retrieveRecord)(e);return retrieveEntryRows(r,r.entries)};exports.retrieveRecords=retrieveRecords;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.retrieveRecords=exports.retrieveEntryRows=exports.retrieveEntry=void 0;var _retrieveFile=require("./retrieveFile"),_retrieveRecord=require("./retrieveRecord"),_retrieveFiles=require("./retrieveFiles"),_packedTable=require("./packedTable"),_config=require("./config");const retrieveEntry=async e=>{const r=await(0,_retrieveFile.retrieveFile)(e).catch((e=>console.error(e)));if(!r)throw new Error(`Could not read entity ${e.slice(e.lastIndexOf("/")+1)}`);return r};exports.retrieveEntry=retrieveEntry;const retrieveEntryRows=async(e,r,t=retrieveEntry)=>{const i=r.length>(0,_config.getSetting)("readConcurrency",16)?await(0,_packedTable.retrievePacked)(e):void 0;if(!i)return(0,_retrieveFiles.retrieveFiles)(r.map((r=>`${e.path}/${r}`)),t);const o=new Map(i.entries.map(((e,r)=>[e,r]))),s=r.filter((e=>!o.has(e))),n=s.length?await(0,_retrieveFiles.retrieveFiles)(s.map((r=>`${e.path}/${r}`)),t):[],a=new Map(s.map(((e,r)=>[e,n[r]])));return r.map((e=>o.has(e)?i.rows[o.get(e)]:a.get(e)))};exports.retrieveEntryRows=retrieveEntryRows;const retrieveRecords=async(e="")=>{const r=await(0,_retrieveRecord.retrieveRecord)(e);return retrieveEntryRows(r,r.entries)};exports.retrieveRecords=retrieveRecords;