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.
- package/README.md +104 -2
- package/browser/jsonFsQuery.js +810 -3845
- package/browser/jsonFsQuery.min.js +1 -1
- package/dist/cli/chooseDatabase.d.ts +13 -0
- package/dist/cli/chooseDatabase.js +37 -0
- package/dist/cli/chooseDatabase.min.js +1 -0
- package/dist/cli/formatCsv.d.ts +9 -0
- package/dist/cli/formatCsv.js +53 -0
- package/dist/cli/formatCsv.min.js +1 -0
- package/dist/cli/formatResult.d.ts +30 -0
- package/dist/cli/formatResult.js +139 -0
- package/dist/cli/formatResult.min.js +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +52 -0
- package/dist/cli/index.min.js +2 -0
- package/dist/cli/interactive.d.ts +15 -0
- package/dist/cli/interactive.js +257 -0
- package/dist/cli/interactive.min.js +1 -0
- package/dist/cli/output.d.ts +31 -0
- package/dist/cli/output.js +64 -0
- package/dist/cli/output.min.js +1 -0
- package/dist/cli/runDirect.d.ts +11 -0
- package/dist/cli/runDirect.js +28 -0
- package/dist/cli/runDirect.min.js +1 -0
- package/dist/data/introspect/alter.js +2 -10
- package/dist/data/introspect/alter.min.js +1 -1
- package/dist/data/introspect/create.js +15 -4
- package/dist/data/introspect/create.min.js +1 -1
- package/dist/data/introspect/definitions/key.js +0 -2
- package/dist/data/introspect/definitions/key.min.js +1 -1
- package/dist/data/introspect/definitions/record.js +0 -2
- package/dist/data/introspect/definitions/record.min.js +1 -1
- package/dist/data/introspect/describe.js +2 -0
- package/dist/data/introspect/describe.min.js +1 -1
- package/dist/data/introspect/drop.js +3 -4
- package/dist/data/introspect/drop.min.js +1 -1
- package/dist/data/introspect/formatDatabase.js +0 -2
- package/dist/data/introspect/formatDatabase.min.js +1 -1
- package/dist/data/introspect/index.js +0 -4
- package/dist/data/introspect/index.min.js +1 -1
- package/dist/data/introspect/packDatabase.js +0 -19
- package/dist/data/introspect/packDatabase.min.js +1 -1
- package/dist/data/queries/createRecord.js +0 -2
- package/dist/data/queries/createRecord.min.js +1 -1
- package/dist/data/queries/databaseStatements.js +0 -3
- package/dist/data/queries/databaseStatements.min.js +1 -1
- package/dist/data/queries/deleteEntity.js +0 -20
- package/dist/data/queries/deleteEntity.min.js +1 -1
- package/dist/data/queries/dropRecord.js +0 -5
- package/dist/data/queries/dropRecord.min.js +1 -1
- package/dist/data/queries/groupBy.js +0 -16
- package/dist/data/queries/groupBy.min.js +1 -1
- package/dist/data/queries/insertEntity.js +0 -35
- package/dist/data/queries/insertEntity.min.js +1 -1
- package/dist/data/queries/joinEntity.js +0 -15
- package/dist/data/queries/joinEntity.min.js +1 -1
- package/dist/data/queries/parser.js +0 -2
- package/dist/data/queries/parser.min.js +1 -1
- package/dist/data/queries/selectFields.js +0 -3
- package/dist/data/queries/selectFields.min.js +1 -1
- package/dist/data/queries/showRecords.js +0 -2
- package/dist/data/queries/showRecords.min.js +1 -1
- package/dist/data/queries/updateEntity.js +0 -4
- package/dist/data/queries/updateEntity.min.js +1 -1
- package/dist/data/queries/where.js +0 -4
- package/dist/data/queries/where.min.js +1 -1
- package/dist/data/storage/databases.js +1 -2
- package/dist/data/storage/databases.min.js +1 -1
- package/dist/data/storage/listFiles.js +0 -2
- package/dist/data/storage/listFiles.min.js +1 -1
- package/dist/data/storage/readCache.js +0 -13
- package/dist/data/storage/readCache.min.js +1 -1
- package/dist/data/storage/readJson.js +2 -2
- package/dist/data/storage/readJson.min.js +1 -1
- package/dist/data/storage/storagePath.js +0 -1
- package/dist/data/storage/storagePath.min.js +1 -1
- package/dist/data/storage/writeSet.js +0 -32
- package/dist/data/storage/writeSet.min.js +1 -1
- package/dist/data/utilities/assertValidName.d.ts +14 -0
- package/dist/data/utilities/assertValidName.js +34 -0
- package/dist/data/utilities/assertValidName.min.js +1 -0
- package/dist/data/utilities/computeKeyValue.js +0 -2
- package/dist/data/utilities/computeKeyValue.min.js +1 -1
- package/dist/data/utilities/conditionEntities.js +0 -20
- package/dist/data/utilities/conditionEntities.min.js +1 -1
- package/dist/data/utilities/conditionTree.js +0 -3
- package/dist/data/utilities/conditionTree.min.js +1 -1
- package/dist/data/utilities/config.d.ts +11 -0
- package/dist/data/utilities/config.js +15 -1
- package/dist/data/utilities/config.min.js +1 -1
- package/dist/data/utilities/databaseLock.js +0 -14
- package/dist/data/utilities/databaseLock.min.js +1 -1
- package/dist/data/utilities/deregisterRecord.js +0 -2
- package/dist/data/utilities/deregisterRecord.min.js +1 -1
- package/dist/data/utilities/fieldType.js +0 -2
- package/dist/data/utilities/fieldType.min.js +1 -1
- package/dist/data/utilities/getConditionIndexedList.js +0 -20
- package/dist/data/utilities/getConditionIndexedList.min.js +1 -1
- package/dist/data/utilities/indexBuffer.js +0 -33
- package/dist/data/utilities/indexBuffer.min.js +1 -1
- package/dist/data/utilities/indexHas.js +0 -3
- package/dist/data/utilities/indexHas.min.js +1 -1
- package/dist/data/utilities/joinBases.js +0 -33
- package/dist/data/utilities/joinBases.min.js +1 -1
- package/dist/data/utilities/keyIndexFiles.js +0 -19
- package/dist/data/utilities/keyIndexFiles.min.js +1 -1
- package/dist/data/utilities/knownFields.js +0 -21
- package/dist/data/utilities/knownFields.min.js +1 -1
- package/dist/data/utilities/mergeJoin.js +0 -2
- package/dist/data/utilities/mergeJoin.min.js +1 -1
- package/dist/data/utilities/packedTable.js +0 -3
- package/dist/data/utilities/packedTable.min.js +1 -1
- package/dist/data/utilities/parsers/findConditions.js +0 -2
- package/dist/data/utilities/parsers/findConditions.min.js +1 -1
- package/dist/data/utilities/parsers/findGroupBy.js +0 -2
- package/dist/data/utilities/parsers/findGroupBy.min.js +1 -1
- package/dist/data/utilities/parsers/maskStrings.js +0 -3
- package/dist/data/utilities/parsers/maskStrings.min.js +1 -1
- package/dist/data/utilities/parsers/parseCreate.js +0 -21
- package/dist/data/utilities/parsers/parseCreate.min.js +1 -1
- package/dist/data/utilities/parsers/splitClauses.js +0 -16
- package/dist/data/utilities/parsers/splitClauses.min.js +1 -1
- package/dist/data/utilities/parsers/splitQueries.js +0 -3
- package/dist/data/utilities/parsers/splitQueries.min.js +1 -1
- package/dist/data/utilities/reconcileJoin.js +0 -4
- package/dist/data/utilities/reconcileJoin.min.js +1 -1
- package/dist/data/utilities/removeFromIndex.js +0 -3
- package/dist/data/utilities/removeFromIndex.min.js +1 -1
- package/dist/data/utilities/requireNode.js +0 -1
- package/dist/data/utilities/requireNode.min.js +1 -1
- package/dist/data/utilities/retrieveRecord.js +0 -1
- package/dist/data/utilities/retrieveRecord.min.js +1 -1
- package/dist/data/utilities/retrieveRecords.js +0 -16
- package/dist/data/utilities/retrieveRecords.min.js +1 -1
- package/dist/data/utilities/rowLookup.js +0 -15
- package/dist/data/utilities/rowLookup.min.js +1 -1
- package/dist/data/utilities/runQuery.js +0 -16
- package/dist/data/utilities/runQuery.min.js +1 -1
- package/dist/data/utilities/semiJoin.js +0 -19
- package/dist/data/utilities/semiJoin.min.js +1 -1
- package/dist/data/utilities/updateIndex.js +0 -2
- package/dist/data/utilities/updateIndex.min.js +1 -1
- package/dist/index.js +0 -4
- package/dist/index.min.js +1 -1
- 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")
|
|
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")
|
|
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
|
|
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")
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
"use strict";
|
|
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 +1 @@
|
|
|
1
|
-
"use strict";
|
|
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
|
|
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
|
|
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")
|
|
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
|
|
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")
|
|
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";
|
|
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
|
+
"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.
|
|
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.
|
|
68
|
+
"si-funciona": "^2.10.0"
|
|
63
69
|
},
|
|
64
70
|
"standard": {
|
|
65
71
|
"env": [
|