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
@@ -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;
@@ -4,21 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.groupRows = exports.firstPositions = exports.RowLookups = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.for-each.js");
9
- require("core-js/modules/esnext.map.delete-all.js");
10
- require("core-js/modules/esnext.map.every.js");
11
- require("core-js/modules/esnext.map.filter.js");
12
- require("core-js/modules/esnext.map.find.js");
13
- require("core-js/modules/esnext.map.find-key.js");
14
- require("core-js/modules/esnext.map.includes.js");
15
- require("core-js/modules/esnext.map.key-of.js");
16
- require("core-js/modules/esnext.map.map-keys.js");
17
- require("core-js/modules/esnext.map.map-values.js");
18
- require("core-js/modules/esnext.map.merge.js");
19
- require("core-js/modules/esnext.map.reduce.js");
20
- require("core-js/modules/esnext.map.some.js");
21
- require("core-js/modules/esnext.map.update.js");
22
7
  var _joinKey = require("./joinKey");
23
8
  /**
24
9
  * Rows grouped by their join key on one field (see joinKey), each group in the rows' order. Rows whose field is null or
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.groupRows=exports.firstPositions=exports.RowLookups=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.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 _joinKey=require("./joinKey");const groupRows=(e,s,o)=>{const r=new Map;for(const t of e){const e=(0,_joinKey.joinKey)(o,t[s]);if(void 0===e)continue;const i=r.get(e);i?i.push(t):r.set(e,[t])}return r};exports.groupRows=groupRows;const firstPositions=(e,s,o)=>{const r=new Map;return e.forEach(((e,t)=>{const i=(0,_joinKey.joinKey)(o,e[s]);void 0===i||r.has(i)||r.set(i,t)})),r};exports.firstPositions=firstPositions;class RowLookups{constructor(e){this.rows=e,this.groups=new Map,this.positions=new Map}groupsBy(e,s){const o=`${e}\0${s}`;return this.groups.has(o)||this.groups.set(o,groupRows(this.rows,e,s)),this.groups.get(o)}positionsBy(e,s){const o=`${e}\0${s}`;return this.positions.has(o)||this.positions.set(o,firstPositions(this.rows,e,s)),this.positions.get(o)}}exports.RowLookups=RowLookups;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.groupRows=exports.firstPositions=exports.RowLookups=void 0;var _joinKey=require("./joinKey");const groupRows=(o,s,t)=>{const i=new Map;for(const r of o){const o=(0,_joinKey.joinKey)(t,r[s]);if(void 0===o)continue;const e=i.get(o);e?e.push(r):i.set(o,[r])}return i};exports.groupRows=groupRows;const firstPositions=(o,s,t)=>{const i=new Map;return o.forEach(((o,r)=>{const e=(0,_joinKey.joinKey)(t,o[s]);void 0===e||i.has(e)||i.set(e,r)})),i};exports.firstPositions=firstPositions;class RowLookups{constructor(o){this.rows=o,this.groups=new Map,this.positions=new Map}groupsBy(o,s){const t=`${o}\0${s}`;return this.groups.has(t)||this.groups.set(t,groupRows(this.rows,o,s)),this.groups.get(t)}positionsBy(o,s){const t=`${o}\0${s}`;return this.positions.has(t)||this.positions.set(t,firstPositions(this.rows,o,s)),this.positions.get(t)}}exports.RowLookups=RowLookups;
@@ -5,22 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.runQuery = 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 _deleteEntity = require("../queries/deleteEntity");
25
9
  var _insertEntity = require("../queries/insertEntity");
26
10
  var _readEntity = require("../queries/readEntity");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runQuery=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 _deleteEntity=require("../queries/deleteEntity"),_insertEntity=require("../queries/insertEntity"),_readEntity=require("../queries/readEntity"),_updateEntity=require("../queries/updateEntity"),_createRecord=require("../queries/createRecord"),_dropRecord=require("../queries/dropRecord"),_describeRecord=require("../queries/describeRecord"),_alter=require("../introspect/alter"),_databaseStatements=require("../queries/databaseStatements"),_showRecords=require("../queries/showRecords"),_joinEntity=require("../queries/joinEntity"),_mergeJoins=require("../queries/mergeJoins"),_where=require("../queries/where"),_sortBy=require("../queries/sortBy"),_groupBy=require("../queries/groupBy"),_limitOffset=require("../queries/limitOffset"),_selectFields=require("../queries/selectFields"),_retrieveRecord=require("./retrieveRecord"),_getConditionIndexedList=require("./getConditionIndexedList"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_fieldType=require("./fieldType"),_conditionTree=require("./conditionTree"),_conditionEntities=require("./conditionEntities"),_requireNode=require("./requireNode"),_knownFields=require("./knownFields");const typeClauses=async(e,t)=>{for(const r of[...(0,_conditionTree.conditionsOf)(e.where),...e.sortClauses]){let i=e.entity,s=r.property;(0,_isEntityProperty.isEntityProperty)(s)&&({entity:i,property:s}=(0,_splitEntityProperty.splitEntityProperty)(s)),Object.prototype.hasOwnProperty.call(t,i)||(t[i]=await(0,_retrieveRecord.retrieveRecord)(i)),r.type=(0,_fieldType.fieldType)(t[i],s)}},runQuery=async e=>{const t=void 0!==e.where&&(0,_conditionEntities.conditionEntities)(e);switch(["insert","update","delete","create","drop","alter"].includes(e.command)&&(0,_requireNode.requireNode)(`"${e.command}"`),e.command){case"create":return{[e.entity]:await(0,_createRecord.createRecord)(e.entity,e.create)};case"drop":return{[e.entity]:await(0,_dropRecord.dropRecord)(e.entity,e.ifExists)};case"describe":return{[e.entity]:await(0,_describeRecord.describeRecord)(e.entity)};case"alter":return{[e.entity]:await(0,_alter.alter)(e.entity,e.alter)};case"create database":return{[e.entity]:await(0,_databaseStatements.createDatabase)(e.entity,e.ifNotExists)};case"drop database":return{[e.entity]:await(0,_databaseStatements.dropDatabase)(e.entity,e.ifExists)};case"use":return{[e.entity]:await(0,_databaseStatements.useDatabase)(e.entity)};case"show databases":return{[e.entity]:await(0,_databaseStatements.showDatabases)()};case"show":return{[e.entity]:await(0,_showRecords.showRecords)()}}const r={[e.entity]:await(0,_retrieveRecord.retrieveRecord)(e.entity)};void 0!==e.joinEntity&&(r[e.joinEntity]=await(0,_retrieveRecord.retrieveRecord)(e.joinEntity)),await(0,_knownFields.assertKnownFields)(e,r),await typeClauses(e,r);let i={[e.entity]:[]};const s=new Set;e=await(0,_getConditionIndexedList.getConditionIndexedList)(e,r,i,s);const n=s.has(e.entity);switch("delete"!==e.command&&"update"!==e.command||(n||(i=await(0,_readEntity.readEntity)(e.entity,i)),i[e.entity]=(0,_where.whereTree)(i[e.entity],e.where)),e.command){case"delete":i=await(0,_deleteEntity.deleteEntity)(e.entity,i);break;case"insert":i=await(0,_insertEntity.insertEntity)(e.entity,e.insertValues,i);break;case"read":n||(i=await(0,_readEntity.readEntity)(e.entity,i));break;case"update":i=await(0,_updateEntity.updateEntity)(e.entity,e.updateValues,i);break;default:throw new Error(`Unknown command: ${e.command}`)}return i=await(0,_joinEntity.joinEntity)(e.entity,e.joinEntity,i,e.joinClauses,n,s.has(e.joinEntity)),i=await(0,_mergeJoins.mergeJoins)(i,e.mergeJoins),"delete"!==e.command&&"update"!==e.command&&(i[e.entity]=(0,_where.whereTree)(i[e.entity],e.where,t?e.joinEntity:void 0)),i[e.entity]=(0,_sortBy.sortBy)(i[e.entity],e.sortClauses),i[e.entity]=(0,_groupBy.groupBy)(i[e.entity],e.groupBy),i[e.entity]=(0,_limitOffset.limitOffset)(i[e.entity],e.offset,e.limit),i[e.entity]=(0,_selectFields.selectFields)(i[e.entity],e.selectClauses,Boolean(e.groupBy?.length),e.entity),i};exports.runQuery=runQuery;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runQuery=void 0,require("core-js/modules/es.array.includes.js");var _deleteEntity=require("../queries/deleteEntity"),_insertEntity=require("../queries/insertEntity"),_readEntity=require("../queries/readEntity"),_updateEntity=require("../queries/updateEntity"),_createRecord=require("../queries/createRecord"),_dropRecord=require("../queries/dropRecord"),_describeRecord=require("../queries/describeRecord"),_alter=require("../introspect/alter"),_databaseStatements=require("../queries/databaseStatements"),_showRecords=require("../queries/showRecords"),_joinEntity=require("../queries/joinEntity"),_mergeJoins=require("../queries/mergeJoins"),_where=require("../queries/where"),_sortBy=require("../queries/sortBy"),_groupBy=require("../queries/groupBy"),_limitOffset=require("../queries/limitOffset"),_selectFields=require("../queries/selectFields"),_retrieveRecord=require("./retrieveRecord"),_getConditionIndexedList=require("./getConditionIndexedList"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_fieldType=require("./fieldType"),_conditionTree=require("./conditionTree"),_conditionEntities=require("./conditionEntities"),_requireNode=require("./requireNode"),_knownFields=require("./knownFields");const typeClauses=async(e,t)=>{for(const r of[...(0,_conditionTree.conditionsOf)(e.where),...e.sortClauses]){let i=e.entity,n=r.property;(0,_isEntityProperty.isEntityProperty)(n)&&({entity:i,property:n}=(0,_splitEntityProperty.splitEntityProperty)(n)),Object.prototype.hasOwnProperty.call(t,i)||(t[i]=await(0,_retrieveRecord.retrieveRecord)(i)),r.type=(0,_fieldType.fieldType)(t[i],n)}},runQuery=async e=>{const t=void 0!==e.where&&(0,_conditionEntities.conditionEntities)(e);switch(["insert","update","delete","create","drop","alter"].includes(e.command)&&(0,_requireNode.requireNode)(`"${e.command}"`),e.command){case"create":return{[e.entity]:await(0,_createRecord.createRecord)(e.entity,e.create)};case"drop":return{[e.entity]:await(0,_dropRecord.dropRecord)(e.entity,e.ifExists)};case"describe":return{[e.entity]:await(0,_describeRecord.describeRecord)(e.entity)};case"alter":return{[e.entity]:await(0,_alter.alter)(e.entity,e.alter)};case"create database":return{[e.entity]:await(0,_databaseStatements.createDatabase)(e.entity,e.ifNotExists)};case"drop database":return{[e.entity]:await(0,_databaseStatements.dropDatabase)(e.entity,e.ifExists)};case"use":return{[e.entity]:await(0,_databaseStatements.useDatabase)(e.entity)};case"show databases":return{[e.entity]:await(0,_databaseStatements.showDatabases)()};case"show":return{[e.entity]:await(0,_showRecords.showRecords)()}}const r={[e.entity]:await(0,_retrieveRecord.retrieveRecord)(e.entity)};void 0!==e.joinEntity&&(r[e.joinEntity]=await(0,_retrieveRecord.retrieveRecord)(e.joinEntity)),await(0,_knownFields.assertKnownFields)(e,r),await typeClauses(e,r);let i={[e.entity]:[]};const n=new Set;e=await(0,_getConditionIndexedList.getConditionIndexedList)(e,r,i,n);const s=n.has(e.entity);switch("delete"!==e.command&&"update"!==e.command||(s||(i=await(0,_readEntity.readEntity)(e.entity,i)),i[e.entity]=(0,_where.whereTree)(i[e.entity],e.where)),e.command){case"delete":i=await(0,_deleteEntity.deleteEntity)(e.entity,i);break;case"insert":i=await(0,_insertEntity.insertEntity)(e.entity,e.insertValues,i);break;case"read":s||(i=await(0,_readEntity.readEntity)(e.entity,i));break;case"update":i=await(0,_updateEntity.updateEntity)(e.entity,e.updateValues,i);break;default:throw new Error(`Unknown command: ${e.command}`)}return i=await(0,_joinEntity.joinEntity)(e.entity,e.joinEntity,i,e.joinClauses,s,n.has(e.joinEntity)),i=await(0,_mergeJoins.mergeJoins)(i,e.mergeJoins),"delete"!==e.command&&"update"!==e.command&&(i[e.entity]=(0,_where.whereTree)(i[e.entity],e.where,t?e.joinEntity:void 0)),i[e.entity]=(0,_sortBy.sortBy)(i[e.entity],e.sortClauses),i[e.entity]=(0,_groupBy.groupBy)(i[e.entity],e.groupBy),i[e.entity]=(0,_limitOffset.limitOffset)(i[e.entity],e.offset,e.limit),i[e.entity]=(0,_selectFields.selectFields)(i[e.entity],e.selectClauses,Boolean(e.groupBy?.length),e.entity),i};exports.runQuery=runQuery;
@@ -4,25 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.semiJoin = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.for-each.js");
9
- require("core-js/modules/esnext.iterator.map.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 _where = require("../queries/where");
27
8
  var _joinKey = require("./joinKey");
28
9
  var _rowLookup = require("./rowLookup");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.semiJoin=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.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 _where=require("../queries/where"),_joinKey=require("./joinKey"),_rowLookup=require("./rowLookup");const semiJoin=(e,s,o,r,t,i)=>{if("="===t&&(0,_joinKey.isKeyedType)(i)){if(s.lookups&&e.rows.length<s.rows.length){const t=s.lookups.positionsBy(r,i),n=[];return e.rows.forEach(((e,s)=>{const r=t.get((0,_joinKey.joinKey)(i,e[o]));void 0!==r&&n.push({row:e,position:r,index:s})})),n.sort(((e,s)=>e.position-s.position||e.index-s.index)).map((({row:e})=>e))}const t=e.lookups?e.lookups.groupsBy(o,i):(0,_rowLookup.groupRows)(e.rows,o,i),n=[],u=new Set;for(const e of s.rows){const s=(0,_joinKey.joinKey)(i,e[r]);if(void 0===s||u.has(s))continue;u.add(s);const o=t.get(s);o&&n.push(...o)}return n}const n=[],u=new Set;for(const j of s.rows)for(const s of(0,_where.where)(e.rows,{property:o,comparator:t,value:j[r],type:i}))u.has(s)||(u.add(s),n.push(s));return n};exports.semiJoin=semiJoin;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.semiJoin=void 0;var _where=require("../queries/where"),_joinKey=require("./joinKey"),_rowLookup=require("./rowLookup");const semiJoin=(o,e,r,s,i,n)=>{if("="===i&&(0,_joinKey.isKeyedType)(n)){if(e.lookups&&o.rows.length<e.rows.length){const i=e.lookups.positionsBy(s,n),t=[];return o.rows.forEach(((o,e)=>{const s=i.get((0,_joinKey.joinKey)(n,o[r]));void 0!==s&&t.push({row:o,position:s,index:e})})),t.sort(((o,e)=>o.position-e.position||o.index-e.index)).map((({row:o})=>o))}const i=o.lookups?o.lookups.groupsBy(r,n):(0,_rowLookup.groupRows)(o.rows,r,n),t=[],p=new Set;for(const o of e.rows){const e=(0,_joinKey.joinKey)(n,o[s]);if(void 0===e||p.has(e))continue;p.add(e);const r=i.get(e);r&&t.push(...r)}return t}const t=[],p=new Set;for(const u of e.rows)for(const e of(0,_where.where)(o.rows,{property:r,comparator:i,value:u[s],type:n}))p.has(e)||(p.add(e),t.push(e));return t};exports.semiJoin=semiJoin;
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.updateIndex = 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
8
  var _compareAs = require("./compareAs");
11
9
  var _storage = require("../storage");
12
10
  /**
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.updateIndex=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");var _compareAs=require("./compareAs"),_storage=require("../storage");const updateIndex=async(e="",r=null,o=void 0,s="",t=void 0)=>{if(!r||!r.lookup)return null;const a=`__indexes/${e}`,u=`${a}/${r.lookup}`;let d=[];try{d=await(0,_storage.readJson)(u)}catch(e){d=[]}const i=d.find((e=>(0,_compareAs.sameValue)(t,e.value,o)));return i?i.record.includes(s)||i.record.push(s):d.push({value:o,record:[s]}),await(0,_storage.makeDirectory)(a),await(0,_storage.writeJson)(u,d),d};exports.updateIndex=updateIndex;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.updateIndex=void 0,require("core-js/modules/es.array.includes.js");var _compareAs=require("./compareAs"),_storage=require("../storage");const updateIndex=async(e="",r=null,o=void 0,a="",s=void 0)=>{if(!r||!r.lookup)return null;const t=`__indexes/${e}`,u=`${t}/${r.lookup}`;let d=[];try{d=await(0,_storage.readJson)(u)}catch(e){d=[]}const n=d.find((e=>(0,_compareAs.sameValue)(s,e.value,o)));return n?n.record.includes(a)||n.record.push(a):d.push({value:o,record:[a]}),await(0,_storage.makeDirectory)(t),await(0,_storage.writeJson)(u,d),d};exports.updateIndex=updateIndex;
package/dist/index.js CHANGED
@@ -1,9 +1,5 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/esnext.async-iterator.constructor.js");
4
- require("core-js/modules/esnext.async-iterator.drop.js");
5
- require("core-js/modules/esnext.iterator.constructor.js");
6
- require("core-js/modules/esnext.iterator.drop.js");
7
3
  Object.defineProperty(exports, "__esModule", {
8
4
  value: true
9
5
  });
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/esnext.async-iterator.constructor.js"),require("core-js/modules/esnext.async-iterator.drop.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.drop.js"),Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"alter",{enumerable:!0,get:function(){return _introspect.alter}}),Object.defineProperty(exports,"checkPacked",{enumerable:!0,get:function(){return _introspect.checkPacked}}),Object.defineProperty(exports,"configure",{enumerable:!0,get:function(){return _config.configure}}),Object.defineProperty(exports,"create",{enumerable:!0,get:function(){return _introspect.create}}),Object.defineProperty(exports,"describe",{enumerable:!0,get:function(){return _introspect.describe}}),Object.defineProperty(exports,"drop",{enumerable:!0,get:function(){return _introspect.drop}}),Object.defineProperty(exports,"formatDatabase",{enumerable:!0,get:function(){return _introspect.formatDatabase}}),Object.defineProperty(exports,"packDatabase",{enumerable:!0,get:function(){return _introspect.packDatabase}}),Object.defineProperty(exports,"query",{enumerable:!0,get:function(){return _query.query}}),Object.defineProperty(exports,"queryStatus",{enumerable:!0,get:function(){return _queryStatus.queryStatus}}),Object.defineProperty(exports,"quote",{enumerable:!0,get:function(){return _quote.quote}});var _query=require("./data/queries/query"),_quote=require("./data/queries/quote"),_queryStatus=require("./data/queries/queryStatus"),_introspect=require("./data/introspect"),_config=require("./data/utilities/config");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"alter",{enumerable:!0,get:function(){return _introspect.alter}}),Object.defineProperty(exports,"checkPacked",{enumerable:!0,get:function(){return _introspect.checkPacked}}),Object.defineProperty(exports,"configure",{enumerable:!0,get:function(){return _config.configure}}),Object.defineProperty(exports,"create",{enumerable:!0,get:function(){return _introspect.create}}),Object.defineProperty(exports,"describe",{enumerable:!0,get:function(){return _introspect.describe}}),Object.defineProperty(exports,"drop",{enumerable:!0,get:function(){return _introspect.drop}}),Object.defineProperty(exports,"formatDatabase",{enumerable:!0,get:function(){return _introspect.formatDatabase}}),Object.defineProperty(exports,"packDatabase",{enumerable:!0,get:function(){return _introspect.packDatabase}}),Object.defineProperty(exports,"query",{enumerable:!0,get:function(){return _query.query}}),Object.defineProperty(exports,"queryStatus",{enumerable:!0,get:function(){return _queryStatus.queryStatus}}),Object.defineProperty(exports,"quote",{enumerable:!0,get:function(){return _quote.quote}});var _query=require("./data/queries/query"),_quote=require("./data/queries/quote"),_queryStatus=require("./data/queries/queryStatus"),_introspect=require("./data/introspect"),_config=require("./data/utilities/config");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-fs-query",
3
- "version": "3.3.1",
3
+ "version": "3.5.0",
4
4
  "description": "A git-native JSON data store for static sites: JSON files with a schema, enforced keys and a SQL-like query language, read straight from static hosting.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,6 +27,10 @@
27
27
  "prepublishOnly": "npm run build",
28
28
  "benchmark": "node scripts/benchmark.cjs"
29
29
  },
30
+ "bin": {
31
+ "json-fs-query": "dist/cli/index.js",
32
+ "jfsq": "dist/cli/index.js"
33
+ },
30
34
  "repository": {
31
35
  "type": "git",
32
36
  "url": "git+https://github.com/jheagle/json-fs-query.git"
@@ -49,8 +53,9 @@
49
53
  "homepage": "https://github.com/jheagle/json-fs-query#readme",
50
54
  "devDependencies": {
51
55
  "@babel/core": "^8.1.0",
56
+ "@types/node": "^26.6.5",
52
57
  "gulp": "^5.0.1",
53
- "js-build-tools": "^8.0.0",
58
+ "js-build-tools": "^8.2.0",
54
59
  "playwright": "^1.65.0",
55
60
  "release-it": "^21.1.1",
56
61
  "test-filesystem": "^2.0.2",
@@ -58,8 +63,9 @@
58
63
  },
59
64
  "dependencies": {
60
65
  "browser-or-node": "^3.0.0",
66
+ "commander": "^14.0.3",
61
67
  "core-js": "^3.51.0",
62
- "si-funciona": "^2.8.0"
68
+ "si-funciona": "^2.10.0"
63
69
  },
64
70
  "standard": {
65
71
  "env": [