json-fs-query 3.3.1 → 3.5.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 (145) hide show
  1. package/README.md +104 -2
  2. package/browser/jsonFsQuery.js +810 -3845
  3. package/browser/jsonFsQuery.min.js +1 -1
  4. package/dist/cli/chooseDatabase.d.ts +13 -0
  5. package/dist/cli/chooseDatabase.js +37 -0
  6. package/dist/cli/chooseDatabase.min.js +1 -0
  7. package/dist/cli/formatCsv.d.ts +9 -0
  8. package/dist/cli/formatCsv.js +53 -0
  9. package/dist/cli/formatCsv.min.js +1 -0
  10. package/dist/cli/formatResult.d.ts +30 -0
  11. package/dist/cli/formatResult.js +139 -0
  12. package/dist/cli/formatResult.min.js +1 -0
  13. package/dist/cli/index.d.ts +7 -0
  14. package/dist/cli/index.js +52 -0
  15. package/dist/cli/index.min.js +2 -0
  16. package/dist/cli/interactive.d.ts +15 -0
  17. package/dist/cli/interactive.js +257 -0
  18. package/dist/cli/interactive.min.js +1 -0
  19. package/dist/cli/output.d.ts +31 -0
  20. package/dist/cli/output.js +64 -0
  21. package/dist/cli/output.min.js +1 -0
  22. package/dist/cli/runDirect.d.ts +11 -0
  23. package/dist/cli/runDirect.js +28 -0
  24. package/dist/cli/runDirect.min.js +1 -0
  25. package/dist/data/introspect/alter.js +2 -10
  26. package/dist/data/introspect/alter.min.js +1 -1
  27. package/dist/data/introspect/create.js +15 -4
  28. package/dist/data/introspect/create.min.js +1 -1
  29. package/dist/data/introspect/definitions/key.js +0 -2
  30. package/dist/data/introspect/definitions/key.min.js +1 -1
  31. package/dist/data/introspect/definitions/record.js +0 -2
  32. package/dist/data/introspect/definitions/record.min.js +1 -1
  33. package/dist/data/introspect/describe.js +2 -0
  34. package/dist/data/introspect/describe.min.js +1 -1
  35. package/dist/data/introspect/drop.js +3 -4
  36. package/dist/data/introspect/drop.min.js +1 -1
  37. package/dist/data/introspect/formatDatabase.js +0 -2
  38. package/dist/data/introspect/formatDatabase.min.js +1 -1
  39. package/dist/data/introspect/index.js +0 -4
  40. package/dist/data/introspect/index.min.js +1 -1
  41. package/dist/data/introspect/packDatabase.js +0 -19
  42. package/dist/data/introspect/packDatabase.min.js +1 -1
  43. package/dist/data/queries/createRecord.js +0 -2
  44. package/dist/data/queries/createRecord.min.js +1 -1
  45. package/dist/data/queries/databaseStatements.js +0 -3
  46. package/dist/data/queries/databaseStatements.min.js +1 -1
  47. package/dist/data/queries/deleteEntity.js +0 -20
  48. package/dist/data/queries/deleteEntity.min.js +1 -1
  49. package/dist/data/queries/dropRecord.js +0 -5
  50. package/dist/data/queries/dropRecord.min.js +1 -1
  51. package/dist/data/queries/groupBy.js +0 -16
  52. package/dist/data/queries/groupBy.min.js +1 -1
  53. package/dist/data/queries/insertEntity.js +0 -35
  54. package/dist/data/queries/insertEntity.min.js +1 -1
  55. package/dist/data/queries/joinEntity.js +0 -15
  56. package/dist/data/queries/joinEntity.min.js +1 -1
  57. package/dist/data/queries/parser.js +0 -2
  58. package/dist/data/queries/parser.min.js +1 -1
  59. package/dist/data/queries/selectFields.js +0 -3
  60. package/dist/data/queries/selectFields.min.js +1 -1
  61. package/dist/data/queries/showRecords.js +0 -2
  62. package/dist/data/queries/showRecords.min.js +1 -1
  63. package/dist/data/queries/updateEntity.js +0 -4
  64. package/dist/data/queries/updateEntity.min.js +1 -1
  65. package/dist/data/queries/where.js +0 -4
  66. package/dist/data/queries/where.min.js +1 -1
  67. package/dist/data/storage/databases.js +1 -2
  68. package/dist/data/storage/databases.min.js +1 -1
  69. package/dist/data/storage/listFiles.js +0 -2
  70. package/dist/data/storage/listFiles.min.js +1 -1
  71. package/dist/data/storage/readCache.js +0 -13
  72. package/dist/data/storage/readCache.min.js +1 -1
  73. package/dist/data/storage/readJson.js +2 -2
  74. package/dist/data/storage/readJson.min.js +1 -1
  75. package/dist/data/storage/storagePath.js +0 -1
  76. package/dist/data/storage/storagePath.min.js +1 -1
  77. package/dist/data/storage/writeSet.js +0 -32
  78. package/dist/data/storage/writeSet.min.js +1 -1
  79. package/dist/data/utilities/assertValidName.d.ts +14 -0
  80. package/dist/data/utilities/assertValidName.js +34 -0
  81. package/dist/data/utilities/assertValidName.min.js +1 -0
  82. package/dist/data/utilities/computeKeyValue.js +0 -2
  83. package/dist/data/utilities/computeKeyValue.min.js +1 -1
  84. package/dist/data/utilities/conditionEntities.js +0 -20
  85. package/dist/data/utilities/conditionEntities.min.js +1 -1
  86. package/dist/data/utilities/conditionTree.js +0 -3
  87. package/dist/data/utilities/conditionTree.min.js +1 -1
  88. package/dist/data/utilities/config.d.ts +11 -0
  89. package/dist/data/utilities/config.js +15 -1
  90. package/dist/data/utilities/config.min.js +1 -1
  91. package/dist/data/utilities/databaseLock.js +0 -14
  92. package/dist/data/utilities/databaseLock.min.js +1 -1
  93. package/dist/data/utilities/deregisterRecord.js +0 -2
  94. package/dist/data/utilities/deregisterRecord.min.js +1 -1
  95. package/dist/data/utilities/fieldType.js +0 -2
  96. package/dist/data/utilities/fieldType.min.js +1 -1
  97. package/dist/data/utilities/getConditionIndexedList.js +0 -20
  98. package/dist/data/utilities/getConditionIndexedList.min.js +1 -1
  99. package/dist/data/utilities/indexBuffer.js +0 -33
  100. package/dist/data/utilities/indexBuffer.min.js +1 -1
  101. package/dist/data/utilities/indexHas.js +0 -3
  102. package/dist/data/utilities/indexHas.min.js +1 -1
  103. package/dist/data/utilities/joinBases.js +0 -33
  104. package/dist/data/utilities/joinBases.min.js +1 -1
  105. package/dist/data/utilities/keyIndexFiles.js +0 -19
  106. package/dist/data/utilities/keyIndexFiles.min.js +1 -1
  107. package/dist/data/utilities/knownFields.js +0 -21
  108. package/dist/data/utilities/knownFields.min.js +1 -1
  109. package/dist/data/utilities/mergeJoin.js +0 -2
  110. package/dist/data/utilities/mergeJoin.min.js +1 -1
  111. package/dist/data/utilities/packedTable.js +0 -3
  112. package/dist/data/utilities/packedTable.min.js +1 -1
  113. package/dist/data/utilities/parsers/findConditions.js +0 -2
  114. package/dist/data/utilities/parsers/findConditions.min.js +1 -1
  115. package/dist/data/utilities/parsers/findGroupBy.js +0 -2
  116. package/dist/data/utilities/parsers/findGroupBy.min.js +1 -1
  117. package/dist/data/utilities/parsers/maskStrings.js +0 -3
  118. package/dist/data/utilities/parsers/maskStrings.min.js +1 -1
  119. package/dist/data/utilities/parsers/parseCreate.js +0 -21
  120. package/dist/data/utilities/parsers/parseCreate.min.js +1 -1
  121. package/dist/data/utilities/parsers/splitClauses.js +0 -16
  122. package/dist/data/utilities/parsers/splitClauses.min.js +1 -1
  123. package/dist/data/utilities/parsers/splitQueries.js +0 -3
  124. package/dist/data/utilities/parsers/splitQueries.min.js +1 -1
  125. package/dist/data/utilities/reconcileJoin.js +0 -4
  126. package/dist/data/utilities/reconcileJoin.min.js +1 -1
  127. package/dist/data/utilities/removeFromIndex.js +0 -3
  128. package/dist/data/utilities/removeFromIndex.min.js +1 -1
  129. package/dist/data/utilities/requireNode.js +0 -1
  130. package/dist/data/utilities/requireNode.min.js +1 -1
  131. package/dist/data/utilities/retrieveRecord.js +0 -1
  132. package/dist/data/utilities/retrieveRecord.min.js +1 -1
  133. package/dist/data/utilities/retrieveRecords.js +0 -16
  134. package/dist/data/utilities/retrieveRecords.min.js +1 -1
  135. package/dist/data/utilities/rowLookup.js +0 -15
  136. package/dist/data/utilities/rowLookup.min.js +1 -1
  137. package/dist/data/utilities/runQuery.js +0 -16
  138. package/dist/data/utilities/runQuery.min.js +1 -1
  139. package/dist/data/utilities/semiJoin.js +0 -19
  140. package/dist/data/utilities/semiJoin.min.js +1 -1
  141. package/dist/data/utilities/updateIndex.js +0 -2
  142. package/dist/data/utilities/updateIndex.min.js +1 -1
  143. package/dist/index.js +0 -4
  144. package/dist/index.min.js +1 -1
  145. package/package.json +9 -3
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.requiredConditions = exports.isCondition = exports.conditionsOf = exports.allOf = 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.flat-map.js");
10
7
  /**
11
8
  * Whether a node is a single condition rather than `and` / `or` / `not`.
12
9
  * @param node
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.requiredConditions=exports.isCondition=exports.conditionsOf=exports.allOf=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.flat-map.js");const isCondition=o=>!("and"in o)&&!("or"in o)&&!("not"in o);exports.isCondition=isCondition;const allOf=o=>{if(o.length)return 1===o.length?o[0]:{and:o}};exports.allOf=allOf;const conditionsOf=o=>void 0===o?[]:isCondition(o)?[o]:"not"in o?conditionsOf(o.not):("and"in o?o.and:o.or).flatMap(conditionsOf);exports.conditionsOf=conditionsOf;const requiredConditions=o=>void 0===o?[]:isCondition(o)?[o]:"and"in o?o.and.filter(isCondition):[];exports.requiredConditions=requiredConditions;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.requiredConditions=exports.isCondition=exports.conditionsOf=exports.allOf=void 0;const isCondition=i=>!("and"in i)&&!("or"in i)&&!("not"in i);exports.isCondition=isCondition;const allOf=i=>{if(i.length)return 1===i.length?i[0]:{and:i}};exports.allOf=allOf;const conditionsOf=i=>void 0===i?[]:isCondition(i)?[i]:"not"in i?conditionsOf(i.not):("and"in i?i.and:i.or).flatMap(conditionsOf);exports.conditionsOf=conditionsOf;const requiredConditions=i=>void 0===i?[]:isCondition(i)?[i]:"and"in i?i.and.filter(isCondition):[];exports.requiredConditions=requiredConditions;
@@ -7,6 +7,7 @@ export type RuntimeSettings = {
7
7
  packedReads?: boolean;
8
8
  databasesPath?: string;
9
9
  database?: string;
10
+ fetchOptions?: RequestInit;
10
11
  };
11
12
  /**
12
13
  * The folder of the database in use: `<databasesPath>/<database>/` once both are configured (see configure and the
@@ -62,6 +63,10 @@ export declare const trackDatabaseCall: () => (() => void);
62
63
  * packedReads (default: true in a browser, false in Node) is whether reads use a record's packed file (see
63
64
  * packDatabase) when it has one that matches the record, instead of reading each entry file.
64
65
  *
66
+ * fetchOptions (default none) is passed to every fetch() a browser read makes, as fetch's second argument: for example
67
+ * { cache: 'no-cache' }, so a page whose data a local server writes always checks for a newer file instead of reading
68
+ * one from the browser's cache. Not used in Node.
69
+ *
65
70
  * Changing databasePath while calls are still running or queued throws (see trackDatabaseCall): await them first.
66
71
  * @param newSettings
67
72
  * @throws {Error} When databasePath would point to another folder while database calls are in progress.
@@ -76,5 +81,11 @@ export declare const configure: (newSettings: Partial<RuntimeSettings>) => void;
76
81
  * @param key
77
82
  * @param defaultValue
78
83
  */
84
+ /**
85
+ * fetch() with the configured fetchOptions as its second argument, or with none when they aren't set (so a call is
86
+ * exactly what it was before the setting existed).
87
+ * @param location
88
+ */
89
+ export declare const configuredFetch: (location: string) => Promise<Response>;
79
90
  export declare const getSetting: <K extends keyof RuntimeSettings>(key: K, defaultValue: RuntimeSettings[K]) => RuntimeSettings[K];
80
91
  //# sourceMappingURL=config.d.ts.map
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.trackDatabaseCall = exports.switchDatabase = exports.resolveDatabasePath = exports.lockPath = exports.getSetting = exports.databasesFolder = exports.configure = exports.activeDatabasePath = void 0;
6
+ exports.trackDatabaseCall = exports.switchDatabase = exports.resolveDatabasePath = exports.lockPath = exports.getSetting = exports.databasesFolder = exports.configuredFetch = exports.configure = exports.activeDatabasePath = void 0;
7
7
  require("core-js/modules/es.json.stringify.js");
8
8
  const defaults = {
9
9
  databasePath: 'database/',
@@ -96,6 +96,10 @@ const trackDatabaseCall = () => {
96
96
  * packedReads (default: true in a browser, false in Node) is whether reads use a record's packed file (see
97
97
  * packDatabase) when it has one that matches the record, instead of reading each entry file.
98
98
  *
99
+ * fetchOptions (default none) is passed to every fetch() a browser read makes, as fetch's second argument: for example
100
+ * { cache: 'no-cache' }, so a page whose data a local server writes always checks for a newer file instead of reading
101
+ * one from the browser's cache. Not used in Node.
102
+ *
99
103
  * Changing databasePath while calls are still running or queued throws (see trackDatabaseCall): await them first.
100
104
  * @param newSettings
101
105
  * @throws {Error} When databasePath would point to another folder while database calls are in progress.
@@ -140,7 +144,17 @@ const configure = newSettings => {
140
144
  * @param key
141
145
  * @param defaultValue
142
146
  */
147
+ /**
148
+ * fetch() with the configured fetchOptions as its second argument, or with none when they aren't set (so a call is
149
+ * exactly what it was before the setting existed).
150
+ * @param location
151
+ */
143
152
  exports.configure = configure;
153
+ const configuredFetch = location => {
154
+ const options = getSetting('fetchOptions', undefined);
155
+ return options ? fetch(location, options) : fetch(location);
156
+ };
157
+ exports.configuredFetch = configuredFetch;
144
158
  const getSetting = (key, defaultValue) => {
145
159
  return typeof settings[key] !== 'undefined' ? settings[key] : defaultValue;
146
160
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.trackDatabaseCall=exports.switchDatabase=exports.resolveDatabasePath=exports.lockPath=exports.getSetting=exports.databasesFolder=exports.configure=exports.activeDatabasePath=void 0,require("core-js/modules/es.json.stringify.js");const defaults={databasePath:"database/",relativePath:"",enforceForeignKeys:!0,readConcurrency:16,format:"compact"};let settings={...defaults},activeCalls=0;const databaseNameMatch=/^[a-z0-9_-]+$/i,withSlash=a=>a.endsWith("/")?a:`${a}/`,activeDatabasePath=()=>settings.databasesPath&&settings.database?`${withSlash(settings.databasesPath)}${settings.database}/`:getSetting("databasePath","database/");exports.activeDatabasePath=activeDatabasePath;const lockPath=()=>settings.databasesPath?withSlash(settings.databasesPath):activeDatabasePath();exports.lockPath=lockPath;const databasesFolder=()=>{if(!settings.databasesPath)throw new Error("Several databases need a folder to hold them: configure({ databasesPath: 'databases/' }) first");return withSlash(settings.databasesPath)};exports.databasesFolder=databasesFolder;const switchDatabase=a=>{settings={...settings,database:a}};exports.switchDatabase=switchDatabase;const resolveDatabasePath=a=>require("path").resolve(a);exports.resolveDatabasePath=resolveDatabasePath;const trackDatabaseCall=()=>{activeCalls++;let a=!1;return()=>{a||(a=!0,activeCalls--)}};exports.trackDatabaseCall=trackDatabaseCall;const configure=a=>{if(void 0!==a.format&&"compact"!==a.format&&"pretty"!==a.format)throw new Error(`Unknown format "${a.format}": use 'compact' or 'pretty'`);if(void 0!==a.database&&null!==a.database&&!databaseNameMatch.test(a.database))throw new Error(`Invalid database name ${JSON.stringify(a.database)}: names use letters, digits, _ and - only`);const t={...settings,...a};if(t.database&&!t.databasesPath)throw new Error("A database name needs the folder that holds the databases: configure({ databasesPath: 'databases/', database: '...' })");if(activeCalls>0){const e={active:resolveDatabasePath(activeDatabasePath()),lock:resolveDatabasePath(lockPath())},s=settings;settings=t;const o=resolveDatabasePath(activeDatabasePath())!==e.active||resolveDatabasePath(lockPath())!==e.lock;if(settings=s,o){const t=["databasePath","databasesPath","database"].filter((t=>void 0!==a[t])).join(" / ");throw new Error(`Can't change ${t} while ${activeCalls} database call(s) are still running or queued: await them first`)}}settings=t};exports.configure=configure;const getSetting=(a,t)=>void 0!==settings[a]?settings[a]:t;exports.getSetting=getSetting;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.trackDatabaseCall=exports.switchDatabase=exports.resolveDatabasePath=exports.lockPath=exports.getSetting=exports.databasesFolder=exports.configuredFetch=exports.configure=exports.activeDatabasePath=void 0,require("core-js/modules/es.json.stringify.js");const defaults={databasePath:"database/",relativePath:"",enforceForeignKeys:!0,readConcurrency:16,format:"compact"};let settings={...defaults},activeCalls=0;const databaseNameMatch=/^[a-z0-9_-]+$/i,withSlash=a=>a.endsWith("/")?a:`${a}/`,activeDatabasePath=()=>settings.databasesPath&&settings.database?`${withSlash(settings.databasesPath)}${settings.database}/`:getSetting("databasePath","database/");exports.activeDatabasePath=activeDatabasePath;const lockPath=()=>settings.databasesPath?withSlash(settings.databasesPath):activeDatabasePath();exports.lockPath=lockPath;const databasesFolder=()=>{if(!settings.databasesPath)throw new Error("Several databases need a folder to hold them: configure({ databasesPath: 'databases/' }) first");return withSlash(settings.databasesPath)};exports.databasesFolder=databasesFolder;const switchDatabase=a=>{settings={...settings,database:a}};exports.switchDatabase=switchDatabase;const resolveDatabasePath=a=>require("path").resolve(a);exports.resolveDatabasePath=resolveDatabasePath;const trackDatabaseCall=()=>{activeCalls++;let a=!1;return()=>{a||(a=!0,activeCalls--)}};exports.trackDatabaseCall=trackDatabaseCall;const configure=a=>{if(void 0!==a.format&&"compact"!==a.format&&"pretty"!==a.format)throw new Error(`Unknown format "${a.format}": use 'compact' or 'pretty'`);if(void 0!==a.database&&null!==a.database&&!databaseNameMatch.test(a.database))throw new Error(`Invalid database name ${JSON.stringify(a.database)}: names use letters, digits, _ and - only`);const t={...settings,...a};if(t.database&&!t.databasesPath)throw new Error("A database name needs the folder that holds the databases: configure({ databasesPath: 'databases/', database: '...' })");if(activeCalls>0){const e={active:resolveDatabasePath(activeDatabasePath()),lock:resolveDatabasePath(lockPath())},s=settings;settings=t;const o=resolveDatabasePath(activeDatabasePath())!==e.active||resolveDatabasePath(lockPath())!==e.lock;if(settings=s,o){const t=["databasePath","databasesPath","database"].filter((t=>void 0!==a[t])).join(" / ");throw new Error(`Can't change ${t} while ${activeCalls} database call(s) are still running or queued: await them first`)}}settings=t};exports.configure=configure;const configuredFetch=a=>{const t=getSetting("fetchOptions",void 0);return t?fetch(a,t):fetch(a)};exports.configuredFetch=configuredFetch;const getSetting=(a,t)=>void 0!==settings[a]?settings[a]:t;exports.getSetting=getSetting;
@@ -1,23 +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.withDatabaseLock = exports.browserCallsRunning = void 0;
8
- require("core-js/modules/esnext.map.delete-all.js");
9
- require("core-js/modules/esnext.map.every.js");
10
- require("core-js/modules/esnext.map.filter.js");
11
- require("core-js/modules/esnext.map.find.js");
12
- require("core-js/modules/esnext.map.find-key.js");
13
- require("core-js/modules/esnext.map.includes.js");
14
- require("core-js/modules/esnext.map.key-of.js");
15
- require("core-js/modules/esnext.map.map-keys.js");
16
- require("core-js/modules/esnext.map.map-values.js");
17
- require("core-js/modules/esnext.map.merge.js");
18
- require("core-js/modules/esnext.map.reduce.js");
19
- require("core-js/modules/esnext.map.some.js");
20
- require("core-js/modules/esnext.map.update.js");
21
7
  var jsEnv = _interopRequireWildcard(require("browser-or-node"));
22
8
  var _config = require("./config");
23
9
  var _storage = require("../storage");
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.withDatabaseLock=exports.browserCallsRunning=void 0,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 e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_config=require("./config"),_storage=require("../storage");function _interopRequireWildcard(r,s){if(!s&&r&&r.__esModule)return r;var t,o,a=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(o in r)"default"!==o&&{}.hasOwnProperty.call(r,o)&&((t=a&&Object.getOwnPropertyDescriptor(r,o))&&(t.get||t.set)?a(n,o,t):n[o]=r[o]);return n}const queues=new Map;let browserCalls=0;const browserCallsRunning=()=>browserCalls;exports.browserCallsRunning=browserCallsRunning;const withDatabaseLock=async e=>{if(!jsEnv.isNode){browserCalls++;try{return await(0,_storage.withReadCache)(e)}finally{browserCalls--}}const r=(0,_config.resolveDatabasePath)((0,_config.lockPath)()),s=(0,_config.trackDatabaseCall)(),t=queues.get(r)||Promise.resolve();let o;const a=new Promise((e=>{o=e})),n=t.then((()=>a));queues.set(r,n),await t;try{return await(0,_storage.withReadCache)(e)}finally{s(),o(),queues.get(r)===n&&queues.delete(r)}};exports.withDatabaseLock=withDatabaseLock;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.withDatabaseLock=exports.browserCallsRunning=void 0;var e,jsEnv=_interopRequireWildcard(require("browser-or-node")),_config=require("./config"),_storage=require("../storage");function _interopRequireWildcard(r,t){if(!t&&r&&r.__esModule)return r;var a,s,o=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(s in r)"default"!==s&&{}.hasOwnProperty.call(r,s)&&((a=o&&Object.getOwnPropertyDescriptor(r,s))&&(a.get||a.set)?o(n,s,a):n[s]=r[s]);return n}const queues=new Map;let browserCalls=0;const browserCallsRunning=()=>browserCalls;exports.browserCallsRunning=browserCallsRunning;const withDatabaseLock=async e=>{if(!jsEnv.isNode){browserCalls++;try{return await(0,_storage.withReadCache)(e)}finally{browserCalls--}}const r=(0,_config.resolveDatabasePath)((0,_config.lockPath)()),t=(0,_config.trackDatabaseCall)(),a=queues.get(r)||Promise.resolve();let s;const o=new Promise((e=>{s=e})),n=a.then((()=>o));queues.set(r,n),await a;try{return await(0,_storage.withReadCache)(e)}finally{t(),s(),queues.get(r)===n&&queues.delete(r)}};exports.withDatabaseLock=withDatabaseLock;
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.deregisterRecord = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.filter.js");
9
7
  var _storage = require("../storage");
10
8
  /**
11
9
  * Remove a record's filename from the __RECORDS registry. A missing registry file is left
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deregisterRecord=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js");var _storage=require("../storage");const deregisterRecord=async e=>{const r="__RECORDS.json";let t;try{t=await(0,_storage.readJson)(r)}catch(e){return null}const s=`${e}.json`;return t.entries=t.entries.filter((e=>e!==s)),await(0,_storage.writeJson)(r,t),t};exports.deregisterRecord=deregisterRecord;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deregisterRecord=void 0;var _storage=require("../storage");const deregisterRecord=async e=>{const r="__RECORDS.json";let t;try{t=await(0,_storage.readJson)(r)}catch(e){return null}const s=`${e}.json`;return t.entries=t.entries.filter((e=>e!==s)),await(0,_storage.writeJson)(r,t),t};exports.deregisterRecord=deregisterRecord;
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.keyValueType = exports.fieldType = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.find.js");
9
7
  /**
10
8
  * The declared type of one of a record's fields, or undefined when the record or field is unknown.
11
9
  * @param record
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.keyValueType=exports.fieldType=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");const fieldType=(e,t)=>e?.definition?.find((e=>e.name===t))?.type;exports.fieldType=fieldType;const keyValueType=(e,t)=>1===t.fields.length?fieldType(e,t.fields[0]):void 0;exports.keyValueType=keyValueType;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.keyValueType=exports.fieldType=void 0;const fieldType=(e,p)=>e?.definition?.find((e=>e.name===p))?.type;exports.fieldType=fieldType;const keyValueType=(e,p)=>1===p.fields.length?fieldType(e,p.fields[0]):void 0;exports.keyValueType=keyValueType;
@@ -4,26 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getConditionIndexedList = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.flat-map.js");
9
- require("core-js/modules/esnext.iterator.for-each.js");
10
- require("core-js/modules/esnext.iterator.some.js");
11
- require("core-js/modules/esnext.set.add-all.js");
12
- require("core-js/modules/esnext.set.delete-all.js");
13
- require("core-js/modules/esnext.set.difference.js");
14
- require("core-js/modules/esnext.set.every.js");
15
- require("core-js/modules/esnext.set.filter.js");
16
- require("core-js/modules/esnext.set.find.js");
17
- require("core-js/modules/esnext.set.intersection.js");
18
- require("core-js/modules/esnext.set.is-disjoint-from.js");
19
- require("core-js/modules/esnext.set.is-subset-of.js");
20
- require("core-js/modules/esnext.set.is-superset-of.js");
21
- require("core-js/modules/esnext.set.join.js");
22
- require("core-js/modules/esnext.set.map.js");
23
- require("core-js/modules/esnext.set.reduce.js");
24
- require("core-js/modules/esnext.set.some.js");
25
- require("core-js/modules/esnext.set.symmetric-difference.js");
26
- require("core-js/modules/esnext.set.union.js");
27
7
  var _isEntityProperty = require("./parsers/isEntityProperty");
28
8
  var _splitEntityProperty = require("./parsers/splitEntityProperty");
29
9
  var _retrieveRecord = require("./retrieveRecord");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getConditionIndexedList=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.flat-map.js"),require("core-js/modules/esnext.iterator.for-each.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 _isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_where=require("../queries/where"),_retrieveRecords=require("./retrieveRecords"),_retrieveFile=require("./retrieveFile"),_retrieveIndexes=require("./retrieveIndexes"),_isSingleFieldKey=require("./isSingleFieldKey"),_conditionTree=require("./conditionTree");const conditionField=(e,r)=>(0,_isEntityProperty.isEntityProperty)(e.property)?(0,_splitEntityProperty.splitEntityProperty)(e.property):{entity:r,property:e.property},indexedFiles=async(e,r,t,i,s)=>{if(Object.prototype.hasOwnProperty.call(i,e)||(i[e]=await(0,_retrieveRecord.retrieveRecord)(e)),i[e].keys.some((e=>(0,_isSingleFieldKey.isSingleFieldKey)(e,r))))return s[e]=s[e]||{},Object.prototype.hasOwnProperty.call(s[e],r)||(s[e][r]=(await(0,_retrieveIndexes.retrieveIndexes)(e,[r],i))[r]),new Set((0,_where.where)(s[e][r],{property:"value",comparator:t.comparator,value:t.value,type:t.type}).flatMap((e=>e.record)))},candidatesOf=async(e,r,t,i)=>{if((0,_conditionTree.isCondition)(e)){const{entity:s,property:o}=conditionField(e,r);return s===r?await indexedFiles(s,o,e,t,i):void 0}if("not"in e)return;if("or"in e){const s=new Set;for(const o of e.or){const e=await candidatesOf(o,r,t,i);if(void 0===e)return;e.forEach((e=>s.add(e)))}return s}let s;for(const o of e.and){const e=await candidatesOf(o,r,t,i);void 0!==e&&(s=void 0===s?e:new Set([...s].filter((r=>e.has(r)))))}return s},getConditionIndexedList=async(e,r,t,i=new Set)=>{const s={},o={};if(void 0!==e.where){const t=await candidatesOf(e.where,e.entity,r,o);void 0!==t&&(s[e.entity]=t)}for(const t of(0,_conditionTree.requiredConditions)(e.where)){const{entity:i,property:n}=conditionField(t,e.entity);if(i===e.entity)continue;const d=await indexedFiles(i,n,t,r,o);void 0!==d&&(s[i]=Object.prototype.hasOwnProperty.call(s,i)?new Set([...s[i]].filter((e=>d.has(e)))):d)}for(const e of Object.keys(s)){i.add(e);const o=r[e]||await(0,_retrieveRecord.retrieveRecord)(e);t[e]=await(0,_retrieveRecords.retrieveEntryRows)(o,[...s[e]],_retrieveFile.retrieveFile)}return e};exports.getConditionIndexedList=getConditionIndexedList;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getConditionIndexedList=void 0;var _isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_where=require("../queries/where"),_retrieveRecords=require("./retrieveRecords"),_retrieveFile=require("./retrieveFile"),_retrieveIndexes=require("./retrieveIndexes"),_isSingleFieldKey=require("./isSingleFieldKey"),_conditionTree=require("./conditionTree");const conditionField=(e,t)=>(0,_isEntityProperty.isEntityProperty)(e.property)?(0,_splitEntityProperty.splitEntityProperty)(e.property):{entity:t,property:e.property},indexedFiles=async(e,t,r,i,o)=>{if(Object.prototype.hasOwnProperty.call(i,e)||(i[e]=await(0,_retrieveRecord.retrieveRecord)(e)),i[e].keys.some((e=>(0,_isSingleFieldKey.isSingleFieldKey)(e,t))))return o[e]=o[e]||{},Object.prototype.hasOwnProperty.call(o[e],t)||(o[e][t]=(await(0,_retrieveIndexes.retrieveIndexes)(e,[t],i))[t]),new Set((0,_where.where)(o[e][t],{property:"value",comparator:r.comparator,value:r.value,type:r.type}).flatMap((e=>e.record)))},candidatesOf=async(e,t,r,i)=>{if((0,_conditionTree.isCondition)(e)){const{entity:o,property:n}=conditionField(e,t);return o===t?await indexedFiles(o,n,e,r,i):void 0}if("not"in e)return;if("or"in e){const o=new Set;for(const n of e.or){const e=await candidatesOf(n,t,r,i);if(void 0===e)return;e.forEach((e=>o.add(e)))}return o}let o;for(const n of e.and){const e=await candidatesOf(n,t,r,i);void 0!==e&&(o=void 0===o?e:new Set([...o].filter((t=>e.has(t)))))}return o},getConditionIndexedList=async(e,t,r,i=new Set)=>{const o={},n={};if(void 0!==e.where){const r=await candidatesOf(e.where,e.entity,t,n);void 0!==r&&(o[e.entity]=r)}for(const r of(0,_conditionTree.requiredConditions)(e.where)){const{entity:i,property:d}=conditionField(r,e.entity);if(i===e.entity)continue;const s=await indexedFiles(i,d,r,t,n);void 0!==s&&(o[i]=Object.prototype.hasOwnProperty.call(o,i)?new Set([...o[i]].filter((e=>s.has(e)))):s)}for(const e of Object.keys(o)){i.add(e);const n=t[e]||await(0,_retrieveRecord.retrieveRecord)(e);r[e]=await(0,_retrieveRecords.retrieveEntryRows)(n,[...o[e]],_retrieveFile.retrieveFile)}return e};exports.getConditionIndexedList=getConditionIndexedList;
@@ -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");