json-fs-query 1.1.0 → 2.0.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/LICENSE +674 -674
- package/README.md +295 -98
- package/browser/jsonFsQuery.js +12733 -10934
- package/browser/jsonFsQuery.min.js +1 -1
- package/dist/data/introspect/create.d.ts +1 -1
- package/dist/data/introspect/create.js +35 -4
- package/dist/data/introspect/create.min.js +1 -1
- package/dist/data/introspect/definitions/field.d.ts +6 -2
- package/dist/data/introspect/definitions/field.js +7 -1
- package/dist/data/introspect/definitions/field.min.js +1 -1
- package/dist/data/introspect/index.d.ts +6 -3
- package/dist/data/introspect/index.js +10 -19
- package/dist/data/introspect/index.min.js +1 -1
- package/dist/data/introspect/policies/foreignKeyExists.js +28 -28
- package/dist/data/introspect/policies/hasDependents.js +53 -53
- package/dist/data/introspect/policies/keyUnique.js +34 -34
- package/dist/data/introspect/policies/typeCheck.d.ts +9 -1
- package/dist/data/introspect/policies/typeCheck.js +16 -2
- package/dist/data/introspect/policies/typeCheck.min.js +1 -1
- package/dist/data/queries/createRecord.d.ts +11 -0
- package/dist/data/queries/createRecord.js +58 -0
- package/dist/data/queries/createRecord.min.js +1 -0
- package/dist/data/queries/deleteEntity.js +100 -100
- package/dist/data/queries/describeRecord.d.ts +9 -0
- package/dist/data/queries/describeRecord.js +29 -0
- package/dist/data/queries/describeRecord.min.js +1 -0
- package/dist/data/queries/dropRecord.d.ts +9 -0
- package/dist/data/queries/dropRecord.js +61 -0
- package/dist/data/queries/dropRecord.min.js +1 -0
- package/dist/data/queries/insertEntity.js +122 -117
- package/dist/data/queries/insertEntity.min.js +1 -1
- package/dist/data/queries/parser.d.ts +1 -1
- package/dist/data/queries/parser.js +7 -15
- package/dist/data/queries/parser.min.js +1 -1
- package/dist/data/queries/query.d.ts +6 -0
- package/dist/data/queries/query.js +15 -6
- package/dist/data/queries/query.min.js +1 -1
- package/dist/data/queries/queryStatus.d.ts +15 -0
- package/dist/data/queries/queryStatus.js +52 -0
- package/dist/data/queries/queryStatus.min.js +1 -0
- package/dist/data/queries/quote.d.ts +11 -0
- package/dist/data/queries/quote.js +17 -0
- package/dist/data/queries/quote.min.js +1 -0
- package/dist/data/queries/showRecords.d.ts +6 -0
- package/dist/data/queries/showRecords.js +21 -0
- package/dist/data/queries/showRecords.min.js +1 -0
- package/dist/data/queries/sortBy.js +27 -27
- package/dist/data/queries/updateEntity.js +245 -193
- package/dist/data/queries/updateEntity.min.js +1 -1
- package/dist/data/queries/where.d.ts +7 -7
- package/dist/data/queries/where.js +67 -67
- package/dist/data/utilities/compareAs.d.ts +19 -19
- package/dist/data/utilities/compareAs.js +57 -57
- package/dist/data/utilities/config.d.ts +15 -0
- package/dist/data/utilities/config.js +31 -1
- package/dist/data/utilities/config.min.js +1 -1
- package/dist/data/utilities/databaseLock.d.ts +16 -0
- package/dist/data/utilities/databaseLock.js +63 -0
- package/dist/data/utilities/databaseLock.min.js +1 -0
- package/dist/data/utilities/fieldType.d.ts +15 -15
- package/dist/data/utilities/fieldType.js +22 -22
- package/dist/data/utilities/getConditionIndexedList.js +47 -47
- package/dist/data/utilities/matchIndexedJoins.js +62 -62
- package/dist/data/utilities/mergeJoin.js +47 -47
- package/dist/data/utilities/parsers/findConditions.d.ts +18 -15
- package/dist/data/utilities/parsers/findConditions.js +15 -6
- package/dist/data/utilities/parsers/findConditions.min.js +1 -1
- package/dist/data/utilities/parsers/findInsertValues.js +3 -2
- package/dist/data/utilities/parsers/findInsertValues.min.js +1 -1
- package/dist/data/utilities/parsers/findSelects.js +6 -3
- package/dist/data/utilities/parsers/findSelects.min.js +1 -1
- package/dist/data/utilities/parsers/findSortClauses.js +5 -2
- package/dist/data/utilities/parsers/findSortClauses.min.js +1 -1
- package/dist/data/utilities/parsers/findUpdateValues.js +3 -2
- package/dist/data/utilities/parsers/findUpdateValues.min.js +1 -1
- package/dist/data/utilities/parsers/maskStrings.d.ts +39 -0
- package/dist/data/utilities/parsers/maskStrings.js +123 -0
- package/dist/data/utilities/parsers/maskStrings.min.js +1 -0
- package/dist/data/utilities/parsers/parseCreate.d.ts +20 -0
- package/dist/data/utilities/parsers/parseCreate.js +330 -0
- package/dist/data/utilities/parsers/parseCreate.min.js +1 -0
- package/dist/data/utilities/parsers/parseLiteralValue.d.ts +2 -1
- package/dist/data/utilities/parsers/parseLiteralValue.js +6 -3
- package/dist/data/utilities/parsers/parseLiteralValue.min.js +1 -1
- package/dist/data/utilities/parsers/parseQuery.d.ts +3 -0
- package/dist/data/utilities/parsers/parseQuery.js +28 -2
- package/dist/data/utilities/parsers/parseQuery.min.js +1 -1
- package/dist/data/utilities/parsers/parseSchemaStatement.d.ts +13 -0
- package/dist/data/utilities/parsers/parseSchemaStatement.js +82 -0
- package/dist/data/utilities/parsers/parseSchemaStatement.min.js +1 -0
- package/dist/data/utilities/parsers/scanQuery.d.ts +52 -0
- package/dist/data/utilities/parsers/scanQuery.js +158 -0
- package/dist/data/utilities/parsers/scanQuery.min.js +1 -0
- package/dist/data/utilities/parsers/splitQueries.d.ts +6 -0
- package/dist/data/utilities/parsers/splitQueries.js +20 -2
- package/dist/data/utilities/parsers/splitQueries.min.js +1 -1
- package/dist/data/utilities/parsers/startsQuery.d.ts +5 -0
- package/dist/data/utilities/parsers/startsQuery.js +10 -0
- package/dist/data/utilities/parsers/startsQuery.min.js +1 -0
- package/dist/data/utilities/recordExists.d.ts +6 -0
- package/dist/data/utilities/recordExists.js +18 -0
- package/dist/data/utilities/recordExists.min.js +1 -0
- package/dist/data/utilities/removeFromIndex.d.ts +14 -14
- package/dist/data/utilities/removeFromIndex.js +45 -45
- package/dist/data/utilities/runQuery.js +135 -112
- package/dist/data/utilities/runQuery.min.js +1 -1
- package/dist/data/utilities/updateIndex.d.ts +17 -17
- package/dist/data/utilities/updateIndex.js +57 -57
- package/dist/data/utilities/useJoinClause.js +56 -56
- package/dist/index.d.ts +2 -0
- package/dist/index.js +14 -0
- package/dist/index.min.js +1 -1
- package/package.json +68 -60
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runQuery=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js");var _deleteEntity=require("../queries/deleteEntity"),_insertEntity=require("../queries/insertEntity"),_readEntity=require("../queries/readEntity"),_updateEntity=require("../queries/updateEntity"),_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"),_getJoinIndexedList=require("./getJoinIndexedList"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_fieldType=require("./fieldType");const typeConditions=async(e,t)=>{for(const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runQuery=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.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"),_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"),_getJoinIndexedList=require("./getJoinIndexedList"),_isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_fieldType=require("./fieldType");const typeConditions=async(e,t)=>{for(const r of e.conditions){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=>{switch(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"show":return{[e.entity]:await(0,_showRecords.showRecords)()}}const t={[e.entity]:await(0,_retrieveRecord.retrieveRecord)(e.entity)};void 0!==e.joinEntity&&(t[e.joinEntity]=await(0,_retrieveRecord.retrieveRecord)(e.joinEntity)),await typeConditions(e,t);let r={[e.entity]:[]};const i=e.conditions.length>0;e=await(0,_getConditionIndexedList.getConditionIndexedList)(e,t,r);const n=i&&0===e.conditions.length;switch("delete"!==(e=await(0,_getJoinIndexedList.getJoinIndexedList)(e,t,r)).command&&"update"!==e.command||(n||(r=await(0,_readEntity.readEntity)(e.entity,r)),r[e.entity]=e.conditions.reduce(((e,t)=>(0,_where.where)(e,t)),r[e.entity])),e.command){case"delete":r=await(0,_deleteEntity.deleteEntity)(e.entity,r);break;case"insert":r=await(0,_insertEntity.insertEntity)(e.entity,e.insertValues,r);break;case"read":n||(r=await(0,_readEntity.readEntity)(e.entity,r));break;case"update":r=await(0,_updateEntity.updateEntity)(e.entity,e.updateValues,r);break;default:throw new Error(`Unknown command: ${e.command}`)}return r=await(0,_joinEntity.joinEntity)(e.entity,e.joinEntity,r,e.joinClauses,n),r=await(0,_mergeJoins.mergeJoins)(r,e.mergeJoins),"delete"!==e.command&&"update"!==e.command&&(r[e.entity]=e.conditions.reduce(((e,t)=>(0,_where.where)(e,t)),r[e.entity])),r[e.entity]=(0,_sortBy.sortBy)(r[e.entity],e.sortClauses),r[e.entity]=(0,_limitOffset.limitOffset)(r[e.entity],e.offset,e.limit),r[e.entity]=(0,_groupBy.groupBy)(r[e.entity],e.groupBy),r[e.entity]=(0,_selectFields.selectFields)(r[e.entity],e.selectClauses),r};exports.runQuery=runQuery;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { keyDefinition } from '../introspect/definitions/key';
|
|
2
|
-
import { recordPath } from '../introspect/definitions/record';
|
|
3
|
-
export type indexEntry = {
|
|
4
|
-
value: any;
|
|
5
|
-
record: string[];
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Add a single entry file to the index that backs one of a record's keys, creating the index
|
|
9
|
-
* file (and its __indexes/{record} directory) the first time a value is indexed. Keys with no
|
|
10
|
-
* lookup (multi-field keys are not indexed here) are left untouched.
|
|
11
|
-
* @param path
|
|
12
|
-
* @param key
|
|
13
|
-
* @param value
|
|
14
|
-
* @param fileName
|
|
15
|
-
* @param type - The declared type of the indexed value (see keyValueType), so '3' and 3 share one entry.
|
|
16
|
-
*/
|
|
17
|
-
export declare const updateIndex: (path?: recordPath, key?: keyDefinition, value?: any, fileName?: string, type?: string) => Promise<indexEntry[] | null>;
|
|
1
|
+
import { keyDefinition } from '../introspect/definitions/key';
|
|
2
|
+
import { recordPath } from '../introspect/definitions/record';
|
|
3
|
+
export type indexEntry = {
|
|
4
|
+
value: any;
|
|
5
|
+
record: string[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Add a single entry file to the index that backs one of a record's keys, creating the index
|
|
9
|
+
* file (and its __indexes/{record} directory) the first time a value is indexed. Keys with no
|
|
10
|
+
* lookup (multi-field keys are not indexed here) are left untouched.
|
|
11
|
+
* @param path
|
|
12
|
+
* @param key
|
|
13
|
+
* @param value
|
|
14
|
+
* @param fileName
|
|
15
|
+
* @param type - The declared type of the indexed value (see keyValueType), so '3' and 3 share one entry.
|
|
16
|
+
*/
|
|
17
|
+
export declare const updateIndex: (path?: recordPath, key?: keyDefinition, value?: any, fileName?: string, type?: string) => Promise<indexEntry[] | null>;
|
|
18
18
|
//# sourceMappingURL=updateIndex.d.ts.map
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.updateIndex = void 0;
|
|
7
|
-
require("core-js/modules/es.array.includes.js");
|
|
8
|
-
require("core-js/modules/es.json.stringify.js");
|
|
9
|
-
require("core-js/modules/esnext.iterator.constructor.js");
|
|
10
|
-
require("core-js/modules/esnext.iterator.find.js");
|
|
11
|
-
var _config = require("./config");
|
|
12
|
-
var _compareAs = require("./compareAs");
|
|
13
|
-
const {
|
|
14
|
-
readFile,
|
|
15
|
-
writeFile,
|
|
16
|
-
mkdir
|
|
17
|
-
} = require('fs/promises');
|
|
18
|
-
/**
|
|
19
|
-
* Add a single entry file to the index that backs one of a record's keys, creating the index
|
|
20
|
-
* file (and its __indexes/{record} directory) the first time a value is indexed. Keys with no
|
|
21
|
-
* lookup (multi-field keys are not indexed here) are left untouched.
|
|
22
|
-
* @param path
|
|
23
|
-
* @param key
|
|
24
|
-
* @param value
|
|
25
|
-
* @param fileName
|
|
26
|
-
* @param type - The declared type of the indexed value (see keyValueType), so '3' and 3 share one entry.
|
|
27
|
-
*/
|
|
28
|
-
const updateIndex = async (path = '', key = null, value = undefined, fileName = '', type = undefined) => {
|
|
29
|
-
if (!key || !key.lookup) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
const databasePath = (0, _config.getSetting)('databasePath', 'database/');
|
|
33
|
-
const indexDir = `${databasePath}__indexes/${path}`;
|
|
34
|
-
const indexPath = `${indexDir}/${key.lookup}`;
|
|
35
|
-
let index = [];
|
|
36
|
-
try {
|
|
37
|
-
index = JSON.parse(await readFile(indexPath, 'utf8'));
|
|
38
|
-
} catch (err) {
|
|
39
|
-
index = [];
|
|
40
|
-
}
|
|
41
|
-
const existingEntry = index.find(entry => (0, _compareAs.sameValue)(type, entry.value, value));
|
|
42
|
-
if (existingEntry) {
|
|
43
|
-
if (!existingEntry.record.includes(fileName)) {
|
|
44
|
-
existingEntry.record.push(fileName);
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
index.push({
|
|
48
|
-
value,
|
|
49
|
-
record: [fileName]
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
await mkdir(indexDir, {
|
|
53
|
-
recursive: true
|
|
54
|
-
});
|
|
55
|
-
await writeFile(indexPath, JSON.stringify(index, null, 2));
|
|
56
|
-
return index;
|
|
57
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.updateIndex = void 0;
|
|
7
|
+
require("core-js/modules/es.array.includes.js");
|
|
8
|
+
require("core-js/modules/es.json.stringify.js");
|
|
9
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
10
|
+
require("core-js/modules/esnext.iterator.find.js");
|
|
11
|
+
var _config = require("./config");
|
|
12
|
+
var _compareAs = require("./compareAs");
|
|
13
|
+
const {
|
|
14
|
+
readFile,
|
|
15
|
+
writeFile,
|
|
16
|
+
mkdir
|
|
17
|
+
} = require('fs/promises');
|
|
18
|
+
/**
|
|
19
|
+
* Add a single entry file to the index that backs one of a record's keys, creating the index
|
|
20
|
+
* file (and its __indexes/{record} directory) the first time a value is indexed. Keys with no
|
|
21
|
+
* lookup (multi-field keys are not indexed here) are left untouched.
|
|
22
|
+
* @param path
|
|
23
|
+
* @param key
|
|
24
|
+
* @param value
|
|
25
|
+
* @param fileName
|
|
26
|
+
* @param type - The declared type of the indexed value (see keyValueType), so '3' and 3 share one entry.
|
|
27
|
+
*/
|
|
28
|
+
const updateIndex = async (path = '', key = null, value = undefined, fileName = '', type = undefined) => {
|
|
29
|
+
if (!key || !key.lookup) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/');
|
|
33
|
+
const indexDir = `${databasePath}__indexes/${path}`;
|
|
34
|
+
const indexPath = `${indexDir}/${key.lookup}`;
|
|
35
|
+
let index = [];
|
|
36
|
+
try {
|
|
37
|
+
index = JSON.parse(await readFile(indexPath, 'utf8'));
|
|
38
|
+
} catch (err) {
|
|
39
|
+
index = [];
|
|
40
|
+
}
|
|
41
|
+
const existingEntry = index.find(entry => (0, _compareAs.sameValue)(type, entry.value, value));
|
|
42
|
+
if (existingEntry) {
|
|
43
|
+
if (!existingEntry.record.includes(fileName)) {
|
|
44
|
+
existingEntry.record.push(fileName);
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
index.push({
|
|
48
|
+
value,
|
|
49
|
+
record: [fileName]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
await mkdir(indexDir, {
|
|
53
|
+
recursive: true
|
|
54
|
+
});
|
|
55
|
+
await writeFile(indexPath, JSON.stringify(index, null, 2));
|
|
56
|
+
return index;
|
|
57
|
+
};
|
|
58
58
|
exports.updateIndex = updateIndex;
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useJoinClause = void 0;
|
|
7
|
-
require("core-js/modules/esnext.iterator.constructor.js");
|
|
8
|
-
require("core-js/modules/esnext.iterator.reduce.js");
|
|
9
|
-
var _readEntity = require("../queries/readEntity");
|
|
10
|
-
var _where = require("../queries/where");
|
|
11
|
-
var _splitEntityProperty = require("./parsers/splitEntityProperty");
|
|
12
|
-
var _siFunciona = _interopRequireDefault(require("si-funciona"));
|
|
13
|
-
var _retrieveRecord = require("./retrieveRecord");
|
|
14
|
-
var _fieldType = require("./fieldType");
|
|
15
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
const useJoinClause = async ({
|
|
17
|
-
propertyA = null,
|
|
18
|
-
comparator = '=',
|
|
19
|
-
propertyB = null
|
|
20
|
-
} = {}, dataSets = {}, filterJoins = {}) => {
|
|
21
|
-
const {
|
|
22
|
-
entity: entityA,
|
|
23
|
-
property: propA
|
|
24
|
-
} = (0, _splitEntityProperty.splitEntityProperty)(propertyA);
|
|
25
|
-
const {
|
|
26
|
-
entity: entityB,
|
|
27
|
-
property: propB
|
|
28
|
-
} = (0, _splitEntityProperty.splitEntityProperty)(propertyB);
|
|
29
|
-
if (!Object.prototype.hasOwnProperty.call(dataSets, entityA)) {
|
|
30
|
-
dataSets = await (0, _readEntity.readEntity)(entityA, dataSets);
|
|
31
|
-
}
|
|
32
|
-
if (!Object.prototype.hasOwnProperty.call(dataSets, entityB)) {
|
|
33
|
-
dataSets = await (0, _readEntity.readEntity)(entityB, dataSets);
|
|
34
|
-
}
|
|
35
|
-
if (!Object.prototype.hasOwnProperty.call(filterJoins, entityA)) {
|
|
36
|
-
filterJoins[entityA] = _siFunciona.default.cloneObject(dataSets[entityA]);
|
|
37
|
-
}
|
|
38
|
-
if (!Object.prototype.hasOwnProperty.call(filterJoins, entityB)) {
|
|
39
|
-
filterJoins[entityB] = _siFunciona.default.cloneObject(dataSets[entityB]);
|
|
40
|
-
}
|
|
41
|
-
const typeA = (0, _fieldType.fieldType)(await (0, _retrieveRecord.retrieveRecord)(entityA), propA);
|
|
42
|
-
const typeB = (0, _fieldType.fieldType)(await (0, _retrieveRecord.retrieveRecord)(entityB), propB);
|
|
43
|
-
filterJoins[entityA] = filterJoins[entityB].reduce((dataA, dataB) => _siFunciona.default.mergeArrays(dataA, (0, _where.where)(filterJoins[entityA], {
|
|
44
|
-
property: propA,
|
|
45
|
-
comparator,
|
|
46
|
-
value: dataB[propB],
|
|
47
|
-
type: typeA
|
|
48
|
-
})), []);
|
|
49
|
-
filterJoins[entityB] = filterJoins[entityA].reduce((dataB, dataA) => _siFunciona.default.mergeArrays(dataB, (0, _where.where)(filterJoins[entityB], {
|
|
50
|
-
property: propB,
|
|
51
|
-
comparator,
|
|
52
|
-
value: dataA[propA],
|
|
53
|
-
type: typeB
|
|
54
|
-
})), []);
|
|
55
|
-
return filterJoins;
|
|
56
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useJoinClause = void 0;
|
|
7
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
8
|
+
require("core-js/modules/esnext.iterator.reduce.js");
|
|
9
|
+
var _readEntity = require("../queries/readEntity");
|
|
10
|
+
var _where = require("../queries/where");
|
|
11
|
+
var _splitEntityProperty = require("./parsers/splitEntityProperty");
|
|
12
|
+
var _siFunciona = _interopRequireDefault(require("si-funciona"));
|
|
13
|
+
var _retrieveRecord = require("./retrieveRecord");
|
|
14
|
+
var _fieldType = require("./fieldType");
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
const useJoinClause = async ({
|
|
17
|
+
propertyA = null,
|
|
18
|
+
comparator = '=',
|
|
19
|
+
propertyB = null
|
|
20
|
+
} = {}, dataSets = {}, filterJoins = {}) => {
|
|
21
|
+
const {
|
|
22
|
+
entity: entityA,
|
|
23
|
+
property: propA
|
|
24
|
+
} = (0, _splitEntityProperty.splitEntityProperty)(propertyA);
|
|
25
|
+
const {
|
|
26
|
+
entity: entityB,
|
|
27
|
+
property: propB
|
|
28
|
+
} = (0, _splitEntityProperty.splitEntityProperty)(propertyB);
|
|
29
|
+
if (!Object.prototype.hasOwnProperty.call(dataSets, entityA)) {
|
|
30
|
+
dataSets = await (0, _readEntity.readEntity)(entityA, dataSets);
|
|
31
|
+
}
|
|
32
|
+
if (!Object.prototype.hasOwnProperty.call(dataSets, entityB)) {
|
|
33
|
+
dataSets = await (0, _readEntity.readEntity)(entityB, dataSets);
|
|
34
|
+
}
|
|
35
|
+
if (!Object.prototype.hasOwnProperty.call(filterJoins, entityA)) {
|
|
36
|
+
filterJoins[entityA] = _siFunciona.default.cloneObject(dataSets[entityA]);
|
|
37
|
+
}
|
|
38
|
+
if (!Object.prototype.hasOwnProperty.call(filterJoins, entityB)) {
|
|
39
|
+
filterJoins[entityB] = _siFunciona.default.cloneObject(dataSets[entityB]);
|
|
40
|
+
}
|
|
41
|
+
const typeA = (0, _fieldType.fieldType)(await (0, _retrieveRecord.retrieveRecord)(entityA), propA);
|
|
42
|
+
const typeB = (0, _fieldType.fieldType)(await (0, _retrieveRecord.retrieveRecord)(entityB), propB);
|
|
43
|
+
filterJoins[entityA] = filterJoins[entityB].reduce((dataA, dataB) => _siFunciona.default.mergeArrays(dataA, (0, _where.where)(filterJoins[entityA], {
|
|
44
|
+
property: propA,
|
|
45
|
+
comparator,
|
|
46
|
+
value: dataB[propB],
|
|
47
|
+
type: typeA
|
|
48
|
+
})), []);
|
|
49
|
+
filterJoins[entityB] = filterJoins[entityA].reduce((dataB, dataA) => _siFunciona.default.mergeArrays(dataB, (0, _where.where)(filterJoins[entityB], {
|
|
50
|
+
property: propB,
|
|
51
|
+
comparator,
|
|
52
|
+
value: dataA[propA],
|
|
53
|
+
type: typeB
|
|
54
|
+
})), []);
|
|
55
|
+
return filterJoins;
|
|
56
|
+
};
|
|
57
57
|
exports.useJoinClause = useJoinClause;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { query } from './data/queries/query';
|
|
2
|
+
export { quote } from './data/queries/quote';
|
|
3
|
+
export { queryStatus, QueryStatus } from './data/queries/queryStatus';
|
|
2
4
|
export { create, drop, describe } from './data/introspect';
|
|
3
5
|
export { configure } from './data/utilities/config';
|
|
4
6
|
export { fieldProperties, fieldDefinition, fieldName, keyProperties, keyDefinition, indexType, indexLocation, referenceProperties, reference, recordProperties, recordDefinition, recordPath, entityPath } from './data/introspect';
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,20 @@ Object.defineProperty(exports, "query", {
|
|
|
37
37
|
return _query.query;
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
+
Object.defineProperty(exports, "queryStatus", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function () {
|
|
43
|
+
return _queryStatus.queryStatus;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(exports, "quote", {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () {
|
|
49
|
+
return _quote.quote;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
40
52
|
var _query = require("./data/queries/query");
|
|
53
|
+
var _quote = require("./data/queries/quote");
|
|
54
|
+
var _queryStatus = require("./data/queries/queryStatus");
|
|
41
55
|
var _introspect = require("./data/introspect");
|
|
42
56
|
var _config = require("./data/utilities/config");
|
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,"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,"query",{enumerable:!0,get:function(){return _query.query}});var _query=require("./data/queries/query"),_introspect=require("./data/introspect"),_config=require("./data/utilities/config");
|
|
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,"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,"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,60 +1,68 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "json-fs-query",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Use json files to manage and read data.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"unpkg": "browser/jsonFsQuery.min.js",
|
|
8
|
-
"jsdelivr": "browser/jsonFsQuery.min.js",
|
|
9
|
-
"files": [
|
|
10
|
-
"dist",
|
|
11
|
-
"browser"
|
|
12
|
-
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "gulp build",
|
|
15
|
-
"dev": "gulp",
|
|
16
|
-
"docs": "gulp docs",
|
|
17
|
-
"publish:bundle": "gulp copyFiles",
|
|
18
|
-
"release": "release-it",
|
|
19
|
-
"release:dry-run": "release-it --dry-run",
|
|
20
|
-
"sass": "gulp sass",
|
|
21
|
-
"test": "gulp testFull",
|
|
22
|
-
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
23
|
-
"test:quick": "gulp testQuick",
|
|
24
|
-
"watch": "gulp watchFull",
|
|
25
|
-
"watch:test": "gulp watchTest"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "json-fs-query",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Use json files to manage and read data.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"unpkg": "browser/jsonFsQuery.min.js",
|
|
8
|
+
"jsdelivr": "browser/jsonFsQuery.min.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"browser"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "gulp build",
|
|
15
|
+
"dev": "gulp",
|
|
16
|
+
"docs": "gulp docs",
|
|
17
|
+
"publish:bundle": "gulp copyFiles",
|
|
18
|
+
"release": "release-it",
|
|
19
|
+
"release:dry-run": "release-it --dry-run",
|
|
20
|
+
"sass": "gulp sass",
|
|
21
|
+
"test": "gulp testFull",
|
|
22
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
23
|
+
"test:quick": "gulp testQuick",
|
|
24
|
+
"watch": "gulp watchFull",
|
|
25
|
+
"watch:test": "gulp watchTest",
|
|
26
|
+
"lint": "gulp lint",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/jheagle/json-file-db.git"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"database",
|
|
35
|
+
"filesystem",
|
|
36
|
+
"json",
|
|
37
|
+
"data"
|
|
38
|
+
],
|
|
39
|
+
"author": "Joshua Heagle <joshuaheagle@gmail.com>",
|
|
40
|
+
"license": "GPL-3.0-or-later",
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://github.com/jheagle/json-file-db/issues"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://github.com/jheagle/json-file-db#readme",
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"gulp": "^5.0.1",
|
|
47
|
+
"js-build-tools": "^6.6.0",
|
|
48
|
+
"release-it": "^21.1.1",
|
|
49
|
+
"test-filesystem": "^2.0.2",
|
|
50
|
+
"typedoc": "^0.28.20"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"browser-or-node": "^3.0.0",
|
|
54
|
+
"core-js": "^3.51.0",
|
|
55
|
+
"si-funciona": "^2.8.0"
|
|
56
|
+
},
|
|
57
|
+
"standard": {
|
|
58
|
+
"env": [
|
|
59
|
+
"jest"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"allowScripts": {
|
|
63
|
+
"core-js": false,
|
|
64
|
+
"core-js-pure": false,
|
|
65
|
+
"@parcel/watcher": false,
|
|
66
|
+
"unrs-resolver": false
|
|
67
|
+
}
|
|
68
|
+
}
|