json-fs-query 0.1.0 → 0.1.1
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/dist/data/introspect/create.js +6 -4
- package/dist/data/introspect/create.min.js +1 -1
- package/dist/data/introspect/drop.js +2 -2
- package/dist/data/introspect/drop.min.js +1 -1
- package/dist/data/queries/deleteEntity.js +3 -3
- package/dist/data/queries/deleteEntity.min.js +1 -1
- package/dist/data/queries/groupBy.js +22 -22
- package/dist/data/queries/groupBy.min.js +1 -1
- package/dist/data/queries/insertEntity.js +5 -5
- package/dist/data/queries/insertEntity.min.js +1 -1
- package/dist/data/queries/readEntity.js +1 -1
- package/dist/data/queries/readEntity.min.js +1 -1
- package/dist/data/queries/updateEntity.js +6 -6
- package/dist/data/queries/updateEntity.min.js +1 -1
- package/dist/data/queries/where.js +1 -1
- package/dist/data/queries/where.min.js +1 -1
- package/dist/data/utilities/config.d.ts +22 -0
- package/dist/data/utilities/config.js +39 -0
- package/dist/data/utilities/config.min.js +1 -0
- package/dist/data/utilities/deregisterRecord.js +2 -2
- package/dist/data/utilities/deregisterRecord.min.js +1 -1
- package/dist/data/utilities/getConditionIndexedList.js +1 -1
- package/dist/data/utilities/getConditionIndexedList.min.js +1 -1
- package/dist/data/utilities/getJoinIndexedList.js +2 -2
- package/dist/data/utilities/getJoinIndexedList.min.js +1 -1
- package/dist/data/utilities/getMatchingIndexes.js +2 -2
- package/dist/data/utilities/getMatchingIndexes.min.js +1 -1
- package/dist/data/utilities/matchIndexedJoins.js +2 -2
- package/dist/data/utilities/matchIndexedJoins.min.js +1 -1
- package/dist/data/utilities/reconcileJoin.js +26 -26
- package/dist/data/utilities/reconcileJoin.min.js +1 -1
- package/dist/data/utilities/reconcileJoins.js +26 -27
- package/dist/data/utilities/reconcileJoins.min.js +1 -1
- package/dist/data/utilities/registerRecord.js +2 -2
- package/dist/data/utilities/registerRecord.min.js +1 -1
- package/dist/data/utilities/removeFromIndex.js +2 -2
- package/dist/data/utilities/removeFromIndex.min.js +1 -1
- package/dist/data/utilities/restrictIndexedList.js +45 -45
- package/dist/data/utilities/restrictIndexedList.min.js +1 -1
- package/dist/data/utilities/retrieveFile.js +3 -3
- package/dist/data/utilities/retrieveFile.min.js +1 -1
- package/dist/data/utilities/retrieveIndexes.js +1 -1
- package/dist/data/utilities/retrieveIndexes.min.js +1 -1
- package/dist/data/utilities/updateIndex.js +2 -2
- package/dist/data/utilities/updateIndex.min.js +1 -1
- package/dist/data/utilities/useJoinClause.js +4 -4
- package/dist/data/utilities/useJoinClause.min.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -0
- package/dist/index.min.js +1 -1
- package/package.json +5 -1
- package/.browserslistrc +0 -1
- package/.nvmrc +0 -1
- package/MAIN.md +0 -15
- package/babel.config.js +0 -3
- package/build-tools.config.json +0 -30
- package/gulpfile.mjs +0 -15
- package/src/data/introspect/create.test.js +0 -67
- package/src/data/introspect/create.ts +0 -29
- package/src/data/introspect/definitions/field.test.js +0 -23
- package/src/data/introspect/definitions/field.ts +0 -48
- package/src/data/introspect/definitions/key.test.js +0 -100
- package/src/data/introspect/definitions/key.ts +0 -64
- package/src/data/introspect/definitions/keyReference.test.js +0 -8
- package/src/data/introspect/definitions/keyReference.ts +0 -23
- package/src/data/introspect/definitions/record.ts +0 -42
- package/src/data/introspect/describe.test.js +0 -36
- package/src/data/introspect/describe.ts +0 -9
- package/src/data/introspect/drop.test.js +0 -77
- package/src/data/introspect/drop.ts +0 -20
- package/src/data/introspect/index.ts +0 -8
- package/src/data/introspect/policies/foreignKeyExists.test.js +0 -44
- package/src/data/introspect/policies/foreignKeyExists.ts +0 -15
- package/src/data/introspect/policies/keyGenerate.ts +0 -11
- package/src/data/introspect/policies/keyUnique.ts +0 -11
- package/src/data/introspect/policies/typeCheck.test.js +0 -84
- package/src/data/introspect/policies/typeCheck.ts +0 -49
- package/src/data/introspect/policies/typeEnum.ts +0 -6
- package/src/data/introspect/policies/useDefault.ts +0 -6
- package/src/data/queries/deleteEntity.test.js +0 -86
- package/src/data/queries/deleteEntity.ts +0 -56
- package/src/data/queries/groupBy.test.js +0 -135
- package/src/data/queries/groupBy.ts +0 -16
- package/src/data/queries/insertEntity.test.js +0 -156
- package/src/data/queries/insertEntity.ts +0 -113
- package/src/data/queries/joinEntity.test.js +0 -109
- package/src/data/queries/joinEntity.ts +0 -20
- package/src/data/queries/mergeJoins.test.js +0 -174
- package/src/data/queries/mergeJoins.ts +0 -13
- package/src/data/queries/parser.test.js +0 -343
- package/src/data/queries/parser.ts +0 -24
- package/src/data/queries/query.test.js +0 -233
- package/src/data/queries/query.ts +0 -12
- package/src/data/queries/readEntity.test.js +0 -85
- package/src/data/queries/readEntity.ts +0 -8
- package/src/data/queries/sortBy.test.js +0 -131
- package/src/data/queries/sortBy.ts +0 -18
- package/src/data/queries/updateEntity.test.js +0 -228
- package/src/data/queries/updateEntity.ts +0 -162
- package/src/data/queries/where.test.js +0 -129
- package/src/data/queries/where.ts +0 -54
- package/src/data/utilities/deregisterRecord.test.js +0 -26
- package/src/data/utilities/deregisterRecord.ts +0 -24
- package/src/data/utilities/getConditionIndexedList.ts +0 -43
- package/src/data/utilities/getJoinIndexedList.ts +0 -53
- package/src/data/utilities/getMatchingIndexes.ts +0 -21
- package/src/data/utilities/matchIndexedJoins.ts +0 -45
- package/src/data/utilities/mergeJoin.test.js +0 -102
- package/src/data/utilities/mergeJoin.ts +0 -28
- package/src/data/utilities/parsers/findCommand.ts +0 -25
- package/src/data/utilities/parsers/findConditions.test.js +0 -38
- package/src/data/utilities/parsers/findConditions.ts +0 -32
- package/src/data/utilities/parsers/findGroupBy.ts +0 -20
- package/src/data/utilities/parsers/findInsertValues.test.js +0 -26
- package/src/data/utilities/parsers/findInsertValues.ts +0 -32
- package/src/data/utilities/parsers/findJoinClauses.ts +0 -29
- package/src/data/utilities/parsers/findJoinEntity.ts +0 -20
- package/src/data/utilities/parsers/findLimit.ts +0 -20
- package/src/data/utilities/parsers/findMergeJoins.ts +0 -27
- package/src/data/utilities/parsers/findOffset.ts +0 -20
- package/src/data/utilities/parsers/findSelects.ts +0 -31
- package/src/data/utilities/parsers/findSortClauses.ts +0 -31
- package/src/data/utilities/parsers/findUpdateValues.test.js +0 -37
- package/src/data/utilities/parsers/findUpdateValues.ts +0 -32
- package/src/data/utilities/parsers/isEntityProperty.ts +0 -1
- package/src/data/utilities/parsers/parseLiteralValue.test.js +0 -41
- package/src/data/utilities/parsers/parseLiteralValue.ts +0 -29
- package/src/data/utilities/parsers/parseQuery.ts +0 -73
- package/src/data/utilities/parsers/removeFromQuery.ts +0 -1
- package/src/data/utilities/parsers/splitEntityProperty.test.js +0 -8
- package/src/data/utilities/parsers/splitEntityProperty.ts +0 -17
- package/src/data/utilities/parsers/splitQueries.test.js +0 -33
- package/src/data/utilities/parsers/splitQueries.ts +0 -4
- package/src/data/utilities/reconcileJoin.test.js +0 -38
- package/src/data/utilities/reconcileJoin.ts +0 -23
- package/src/data/utilities/reconcileJoins.test.js +0 -160
- package/src/data/utilities/reconcileJoins.ts +0 -15
- package/src/data/utilities/registerRecord.test.js +0 -44
- package/src/data/utilities/registerRecord.ts +0 -44
- package/src/data/utilities/removeFromIndex.test.js +0 -44
- package/src/data/utilities/removeFromIndex.ts +0 -34
- package/src/data/utilities/restrictIndexedList.ts +0 -38
- package/src/data/utilities/retrieveFile.test.js +0 -49
- package/src/data/utilities/retrieveFile.ts +0 -19
- package/src/data/utilities/retrieveIndexes.ts +0 -17
- package/src/data/utilities/retrieveRecord.ts +0 -3
- package/src/data/utilities/retrieveRecords.test.js +0 -223
- package/src/data/utilities/retrieveRecords.ts +0 -16
- package/src/data/utilities/runQuery.test.js +0 -88
- package/src/data/utilities/runQuery.ts +0 -75
- package/src/data/utilities/updateIndex.test.js +0 -44
- package/src/data/utilities/updateIndex.ts +0 -45
- package/src/data/utilities/useJoinClause.test.js +0 -94
- package/src/data/utilities/useJoinClause.ts +0 -44
- package/src/global.d.ts +0 -1
- package/src/index.test.js +0 -52
- package/src/index.ts +0 -17
- package/test-data/__RECORDS.json +0 -32
- package/test-data/__indexes/exercise_muscle/fk_exercise_id.json +0 -14
- package/test-data/__indexes/exercise_muscle/fk_muscle_id.json +0 -14
- package/test-data/__indexes/exercise_muscle/pk__id.json +0 -14
- package/test-data/__indexes/exercises/pk__id.json +0 -14
- package/test-data/__indexes/muscles/pk__id.json +0 -58
- package/test-data/__indexes/workouts/fk_exercise_id.json +0 -23
- package/test-data/__indexes/workouts/index_date.json +0 -18
- package/test-data/__indexes/workouts/pk__id.json +0 -26
- package/test-data/copyDatabase.ts +0 -64
- package/test-data/exercise_muscle/bench_press_pectorals.json +0 -6
- package/test-data/exercise_muscle/deadlift_hamstrings.json +0 -6
- package/test-data/exercise_muscle/squat_quadriceps.json +0 -6
- package/test-data/exercise_muscle.json +0 -69
- package/test-data/exercises/bench_press.json +0 -5
- package/test-data/exercises/deadlift.json +0 -5
- package/test-data/exercises/squat.json +0 -5
- package/test-data/exercises.json +0 -34
- package/test-data/muscles/abdominal.json +0 -6
- package/test-data/muscles/biceps.json +0 -6
- package/test-data/muscles/calves.json +0 -6
- package/test-data/muscles/deltoids.json +0 -6
- package/test-data/muscles/erector_spinae.json +0 -6
- package/test-data/muscles/forearms.json +0 -6
- package/test-data/muscles/gluteus_maximus.json +0 -6
- package/test-data/muscles/hamstrings.json +0 -6
- package/test-data/muscles/latissimus_dorsi.json +0 -6
- package/test-data/muscles/obliques.json +0 -6
- package/test-data/muscles/pectorals.json +0 -6
- package/test-data/muscles/quadriceps.json +0 -6
- package/test-data/muscles/trapezius.json +0 -6
- package/test-data/muscles/triceps.json +0 -6
- package/test-data/muscles.json +0 -50
- package/test-data/workouts/2024-06-02-001.json +0 -10
- package/test-data/workouts/2024-06-02-002.json +0 -10
- package/test-data/workouts/2024-06-02-003.json +0 -10
- package/test-data/workouts/2024-06-05-001.json +0 -10
- package/test-data/workouts/2024-06-05-002.json +0 -10
- package/test-data/workouts/2024-06-05-003.json +0 -10
- package/test-data/workouts.json +0 -84
- package/tsconfig.json +0 -15
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
5
5
|
})
|
|
6
6
|
exports.create = void 0
|
|
7
7
|
require('core-js/modules/es.json.stringify.js')
|
|
8
|
-
const _testFilesystem = require('test-filesystem')
|
|
9
8
|
const _record = require('./definitions/record')
|
|
10
9
|
const _registerRecord = require('../utilities/registerRecord')
|
|
10
|
+
const _config = require('../utilities/config')
|
|
11
11
|
/**
|
|
12
12
|
* Create a new record.
|
|
13
13
|
* @param recordName
|
|
@@ -15,16 +15,18 @@ const _registerRecord = require('../utilities/registerRecord')
|
|
|
15
15
|
* @param keys
|
|
16
16
|
*/
|
|
17
17
|
const create = async (recordName, definition = [], keys = []) => {
|
|
18
|
-
const gulpConfig = require('js-build-tools/gulp.config')
|
|
19
18
|
const {
|
|
20
19
|
writeFile,
|
|
21
20
|
mkdir
|
|
22
21
|
} = require('fs/promises')
|
|
23
|
-
const
|
|
22
|
+
const {
|
|
23
|
+
existsSync
|
|
24
|
+
} = require('fs')
|
|
25
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
24
26
|
if (recordName === '__RECORDS') {
|
|
25
27
|
return null
|
|
26
28
|
}
|
|
27
|
-
if ((
|
|
29
|
+
if (existsSync(`${databasePath}${recordName}.json`)) {
|
|
28
30
|
return null
|
|
29
31
|
}
|
|
30
32
|
await mkdir(databasePath, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.create=void 0,require("core-js/modules/es.json.stringify.js");var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.create=void 0,require("core-js/modules/es.json.stringify.js");var _record=require("./definitions/record"),_registerRecord=require("../utilities/registerRecord"),_config=require("../utilities/config");const create=async(e,r=[],i=[])=>{const{writeFile:t,mkdir:s}=require("fs/promises"),{existsSync:o}=require("fs"),c=(0,_config.getSetting)("databasePath","database/");if("__RECORDS"===e)return null;if(o(`${c}${e}.json`))return null;await s(c,{recursive:!0});const n=(0,_record.record)({path:e,definition:r,keys:i});return await t(`${c}${e}.json`,JSON.stringify(n,null,2)),await s(`${c}${e}`,{recursive:!0}),await(0,_registerRecord.registerRecord)(e),n};exports.create=create;
|
|
@@ -10,12 +10,12 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
10
10
|
exports.drop = void 0
|
|
11
11
|
const _retrieveFile = require('../utilities/retrieveFile')
|
|
12
12
|
const _deregisterRecord = require('../utilities/deregisterRecord')
|
|
13
|
-
const
|
|
13
|
+
const _config = require('../utilities/config')
|
|
14
14
|
const {
|
|
15
15
|
rm
|
|
16
16
|
} = require('fs/promises')
|
|
17
17
|
const drop = async record => {
|
|
18
|
-
const databasePath =
|
|
18
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
19
19
|
if (record === '__RECORDS') {
|
|
20
20
|
return null
|
|
21
21
|
}
|
|
@@ -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}),exports.drop=void 0;var _retrieveFile=require("../utilities/retrieveFile"),_deregisterRecord=require("../utilities/deregisterRecord")
|
|
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}),exports.drop=void 0;var _retrieveFile=require("../utilities/retrieveFile"),_deregisterRecord=require("../utilities/deregisterRecord"),_config=require("../utilities/config");const{rm:rm}=require("fs/promises"),drop=async e=>{const r=(0,_config.getSetting)("databasePath","database/");if("__RECORDS"===e)return null;const t=await(0,_retrieveFile.retrieveFile)(`${e}.json`);for(const e of t.entries)await rm(`${r}${t.path}/${e}`);await rm(`${r}${t.path}`,{recursive:!0,force:!0}),await rm(`${r}__indexes/${t.path}`,{recursive:!0,force:!0}),await rm(`${r}${e}.json`),await(0,_deregisterRecord.deregisterRecord)(e)};exports.drop=drop;
|
|
@@ -27,7 +27,7 @@ require('core-js/modules/esnext.set.union.js')
|
|
|
27
27
|
const _retrieveRecord = require('../utilities/retrieveRecord')
|
|
28
28
|
const _retrieveFile = require('../utilities/retrieveFile')
|
|
29
29
|
const _removeFromIndex = require('../utilities/removeFromIndex')
|
|
30
|
-
const
|
|
30
|
+
const _config = require('../utilities/config')
|
|
31
31
|
const {
|
|
32
32
|
rm,
|
|
33
33
|
writeFile
|
|
@@ -42,7 +42,7 @@ const {
|
|
|
42
42
|
* @param deletedValues
|
|
43
43
|
*/
|
|
44
44
|
const removeMatchingEntries = async (entity, record, primaryField, deletedValues) => {
|
|
45
|
-
const databasePath =
|
|
45
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
46
46
|
const remainingEntries = []
|
|
47
47
|
for (const fileName of record.entries) {
|
|
48
48
|
const data = await (0, _retrieveFile.retrieveFile)(`${record.path}/${fileName}`)
|
|
@@ -60,7 +60,7 @@ const removeMatchingEntries = async (entity, record, primaryField, deletedValues
|
|
|
60
60
|
return remainingEntries
|
|
61
61
|
}
|
|
62
62
|
const deleteEntity = async (entity = '', dataSet = {}) => {
|
|
63
|
-
const databasePath =
|
|
63
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
64
64
|
const record = await (0, _retrieveRecord.retrieveRecord)(entity)
|
|
65
65
|
const primaryKey = record.keys.find(key => key.type === 'primary' && key.fields.length === 1)
|
|
66
66
|
if (!primaryKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deleteEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_retrieveFile=require("../utilities/retrieveFile"),_removeFromIndex=require("../utilities/removeFromIndex")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deleteEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_retrieveFile=require("../utilities/retrieveFile"),_removeFromIndex=require("../utilities/removeFromIndex"),_config=require("../utilities/config");const{rm:rm,writeFile:writeFile}=require("fs/promises"),removeMatchingEntries=async(e,r,s,t)=>{const i=(0,_config.getSetting)("databasePath","database/"),o=[];for(const e of r.entries){const n=await(0,_retrieveFile.retrieveFile)(`${r.path}/${e}`);if(t.has(n[s])){await rm(`${i}${r.path}/${e}`);for(const s of r.keys)1===s.fields.length&&await(0,_removeFromIndex.removeFromIndex)(r.path,s,n[s.fields[0]],e)}else o.push(e)}return o},deleteEntity=async(e="",r={})=>{const s=(0,_config.getSetting)("databasePath","database/"),t=await(0,_retrieveRecord.retrieveRecord)(e),i=t.keys.find((e=>"primary"===e.type&&1===e.fields.length));if(!i)throw new Error(`Cannot delete from "${e}" without a single-field primary key`);const o=i.fields[0],n=r[e]||[];if(!n.length)return r;const u=new Set(n.map((e=>e[o])));return t.entries=await removeMatchingEntries(0,t,o,u),await writeFile(`${s}${t.path}.json`,JSON.stringify(t,null,2)),r};exports.deleteEntity=deleteEntity;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.groupBy = void 0
|
|
7
|
-
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
-
require('core-js/modules/esnext.iterator.reduce.js')
|
|
9
|
-
const groupBy = (dataSet = [], groupProperty = '') => {
|
|
10
|
-
if (!groupProperty) {
|
|
11
|
-
return dataSet
|
|
12
|
-
}
|
|
13
|
-
return dataSet.reduce((groupedData, data) => {
|
|
14
|
-
const property = data[groupProperty]
|
|
15
|
-
if (!
|
|
16
|
-
groupedData[property] = []
|
|
17
|
-
}
|
|
18
|
-
groupedData[property].push(data)
|
|
19
|
-
return groupedData
|
|
20
|
-
}, {})
|
|
21
|
-
}
|
|
22
|
-
exports.groupBy = groupBy
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.groupBy = void 0
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.reduce.js')
|
|
9
|
+
const groupBy = (dataSet = [], groupProperty = '') => {
|
|
10
|
+
if (!groupProperty) {
|
|
11
|
+
return dataSet
|
|
12
|
+
}
|
|
13
|
+
return dataSet.reduce((groupedData, data) => {
|
|
14
|
+
const property = data[groupProperty]
|
|
15
|
+
if (!Object.prototype.hasOwnProperty.call(groupedData, property)) {
|
|
16
|
+
groupedData[property] = []
|
|
17
|
+
}
|
|
18
|
+
groupedData[property].push(data)
|
|
19
|
+
return groupedData
|
|
20
|
+
}, {})
|
|
21
|
+
}
|
|
22
|
+
exports.groupBy = groupBy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.groupBy=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js");const groupBy=(e=[],r="")=>r?e.reduce(((e,o)=>{const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.groupBy=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js");const groupBy=(e=[],r="")=>r?e.reduce(((e,o)=>{const t=o[r];return Object.prototype.hasOwnProperty.call(e,t)||(e[t]=[]),e[t].push(o),e}),{}):e;exports.groupBy=groupBy;
|
|
@@ -15,7 +15,7 @@ const _useDefault = require('../introspect/policies/useDefault')
|
|
|
15
15
|
const _typeCheck = require('../introspect/policies/typeCheck')
|
|
16
16
|
const _foreignKeyExists = require('../introspect/policies/foreignKeyExists')
|
|
17
17
|
const _splitEntityProperty = require('../utilities/parsers/splitEntityProperty')
|
|
18
|
-
const
|
|
18
|
+
const _config = require('../utilities/config')
|
|
19
19
|
const {
|
|
20
20
|
writeFile
|
|
21
21
|
} = require('fs/promises')
|
|
@@ -32,7 +32,7 @@ const buildEntityValues = async (entity, record, rowValues = {}) => {
|
|
|
32
32
|
let value = rowValues[field.name]
|
|
33
33
|
if (field.autoGenerate) {
|
|
34
34
|
value = await (0, _keyGenerate.keyGenerate)(entity, [field.name])
|
|
35
|
-
} else if (
|
|
35
|
+
} else if (Object.prototype.hasOwnProperty.call(field, 'default')) {
|
|
36
36
|
value = (0, _useDefault.useDefault)(field.default, value)
|
|
37
37
|
}
|
|
38
38
|
if (typeof value === 'undefined') {
|
|
@@ -75,7 +75,7 @@ const assertForeignKeys = async (entity, record, entityValues) => {
|
|
|
75
75
|
continue
|
|
76
76
|
}
|
|
77
77
|
const field = key.fields[0]
|
|
78
|
-
if (!
|
|
78
|
+
if (!Object.prototype.hasOwnProperty.call(entityValues, field)) {
|
|
79
79
|
continue
|
|
80
80
|
}
|
|
81
81
|
const {
|
|
@@ -89,10 +89,10 @@ const assertForeignKeys = async (entity, record, entityValues) => {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
const insertEntity = async (entity = '', values = [], dataSet = {}) => {
|
|
92
|
-
const databasePath =
|
|
92
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
93
93
|
const record = await (0, _retrieveRecord.retrieveRecord)(entity)
|
|
94
94
|
const primaryKey = record.keys.find(key => key.type === 'primary' && key.fields.length === 1)
|
|
95
|
-
if (!
|
|
95
|
+
if (!Object.prototype.hasOwnProperty.call(dataSet, entity)) {
|
|
96
96
|
dataSet[entity] = []
|
|
97
97
|
}
|
|
98
98
|
for (const rowValues of values) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.insertEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_updateIndex=require("../utilities/updateIndex"),_keyGenerate=require("../introspect/policies/keyGenerate"),_keyUnique=require("../introspect/policies/keyUnique"),_useDefault=require("../introspect/policies/useDefault"),_typeCheck=require("../introspect/policies/typeCheck"),_foreignKeyExists=require("../introspect/policies/foreignKeyExists"),_splitEntityProperty=require("../utilities/parsers/splitEntityProperty")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.insertEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_updateIndex=require("../utilities/updateIndex"),_keyGenerate=require("../introspect/policies/keyGenerate"),_keyUnique=require("../introspect/policies/keyUnique"),_useDefault=require("../introspect/policies/useDefault"),_typeCheck=require("../introspect/policies/typeCheck"),_foreignKeyExists=require("../introspect/policies/foreignKeyExists"),_splitEntityProperty=require("../utilities/parsers/splitEntityProperty"),_config=require("../utilities/config");const{writeFile:writeFile}=require("fs/promises"),buildEntityValues=async(e,t,i={})=>{const r={};for(const s of t.definition){let t=i[s.name];if(s.autoGenerate?t=await(0,_keyGenerate.keyGenerate)(e,[s.name]):Object.prototype.hasOwnProperty.call(s,"default")&&(t=(0,_useDefault.useDefault)(s.default,t)),void 0!==t)r[s.name]=(0,_typeCheck.typeCheck)(s.type,t);else if(!s.optional)throw new Error(`Missing required field "${s.name}" for ${e}`)}return r},assertUnique=async(e,t,i)=>{for(const r of t.keys){if("primary"!==r.type&&"unique"!==r.type||1!==r.fields.length)continue;if(!await(0,_keyUnique.keyUnique)(e,r.fields,i[r.fields[0]]))throw new Error(`Duplicate value for ${r.type} key "${r.fields[0]}" on ${e}`)}},assertForeignKeys=async(e,t,i)=>{for(const r of t.keys){if("foreign"!==r.type||1!==r.fields.length||!r.references||1!==r.references.length)continue;const t=r.fields[0];if(!Object.prototype.hasOwnProperty.call(i,t))continue;const{entity:s,property:n}=(0,_splitEntityProperty.splitEntityProperty)(r.references[0].fields[0]);if(!await(0,_foreignKeyExists.foreignKeyExists)(s,n,i[t]))throw new Error(`Foreign key "${t}" on ${e} references a nonexistent ${s}.${n} = ${i[t]}`)}},insertEntity=async(e="",t=[],i={})=>{const r=(0,_config.getSetting)("databasePath","database/"),s=await(0,_retrieveRecord.retrieveRecord)(e),n=s.keys.find((e=>"primary"===e.type&&1===e.fields.length));Object.prototype.hasOwnProperty.call(i,e)||(i[e]=[]);for(const o of t){const t=await buildEntityValues(e,s,o);await assertUnique(e,s,t),await assertForeignKeys(e,s,t);const a=`${n?t[n.fields[0]]:crypto.randomUUID()}.json`;await writeFile(`${r}${s.path}/${a}`,JSON.stringify(t,null,2)),s.entries.push(a),await writeFile(`${r}${s.path}.json`,JSON.stringify(s,null,2));for(const e of s.keys)1===e.fields.length&&await(0,_updateIndex.updateIndex)(s.path,e,t[e.fields[0]],a);i[e].push(t)}return i};exports.insertEntity=insertEntity;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
6
6
|
exports.readEntity = void 0
|
|
7
7
|
const _retrieveRecords = require('../utilities/retrieveRecords')
|
|
8
8
|
const readEntity = async (entity = '', dataSet = {}) => {
|
|
9
|
-
if (!
|
|
9
|
+
if (!Object.prototype.hasOwnProperty.call(dataSet, entity) || !dataSet[entity].length) {
|
|
10
10
|
dataSet[entity] = await (0, _retrieveRecords.retrieveRecords)(entity)
|
|
11
11
|
}
|
|
12
12
|
return dataSet
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.readEntity=void 0;var _retrieveRecords=require("../utilities/retrieveRecords");const readEntity=async(e="",r={})=>(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.readEntity=void 0;var _retrieveRecords=require("../utilities/retrieveRecords");const readEntity=async(e="",r={})=>(Object.prototype.hasOwnProperty.call(r,e)&&r[e].length||(r[e]=await(0,_retrieveRecords.retrieveRecords)(e)),r);exports.readEntity=readEntity;
|
|
@@ -15,7 +15,7 @@ const _keyUnique = require('../introspect/policies/keyUnique')
|
|
|
15
15
|
const _typeCheck = require('../introspect/policies/typeCheck')
|
|
16
16
|
const _foreignKeyExists = require('../introspect/policies/foreignKeyExists')
|
|
17
17
|
const _splitEntityProperty = require('../utilities/parsers/splitEntityProperty')
|
|
18
|
-
const
|
|
18
|
+
const _config = require('../utilities/config')
|
|
19
19
|
const {
|
|
20
20
|
writeFile
|
|
21
21
|
} = require('fs/promises')
|
|
@@ -50,7 +50,7 @@ const assertUniqueForUpdate = async (entity, record, oldData, newValues) => {
|
|
|
50
50
|
continue
|
|
51
51
|
}
|
|
52
52
|
const field = key.fields[0]
|
|
53
|
-
if (!
|
|
53
|
+
if (!Object.prototype.hasOwnProperty.call(newValues, field) || newValues[field] == oldData[field]) {
|
|
54
54
|
continue
|
|
55
55
|
}
|
|
56
56
|
const isUnique = await (0, _keyUnique.keyUnique)(entity, key.fields, newValues[field])
|
|
@@ -83,7 +83,7 @@ const assertForeignKeysForUpdate = async (entity, record, oldData, newValues) =>
|
|
|
83
83
|
continue
|
|
84
84
|
}
|
|
85
85
|
const field = key.fields[0]
|
|
86
|
-
if (!
|
|
86
|
+
if (!Object.prototype.hasOwnProperty.call(newValues, field) || newValues[field] == oldData[field]) {
|
|
87
87
|
continue
|
|
88
88
|
}
|
|
89
89
|
const {
|
|
@@ -102,7 +102,7 @@ const reconcileIndexes = async (record, oldData, newData, newValues, fileName) =
|
|
|
102
102
|
continue
|
|
103
103
|
}
|
|
104
104
|
const field = key.fields[0]
|
|
105
|
-
if (!
|
|
105
|
+
if (!Object.prototype.hasOwnProperty.call(newValues, field) || newValues[field] == oldData[field]) {
|
|
106
106
|
continue
|
|
107
107
|
}
|
|
108
108
|
await (0, _removeFromIndex.removeFromIndex)(record.path, key, oldData[field], fileName)
|
|
@@ -127,14 +127,14 @@ const assertRequiredFields = (entity, record, newData) => {
|
|
|
127
127
|
const applyFieldTypes = (record, values) => {
|
|
128
128
|
const typedValues = Object.assign({}, values)
|
|
129
129
|
for (const field of record.definition) {
|
|
130
|
-
if (
|
|
130
|
+
if (Object.prototype.hasOwnProperty.call(typedValues, field.name)) {
|
|
131
131
|
typedValues[field.name] = (0, _typeCheck.typeCheck)(field.type, typedValues[field.name])
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
return typedValues
|
|
135
135
|
}
|
|
136
136
|
const updateEntity = async (entity = '', values = {}, dataSet = {}) => {
|
|
137
|
-
const databasePath =
|
|
137
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
138
138
|
const record = await (0, _retrieveRecord.retrieveRecord)(entity)
|
|
139
139
|
const primaryKey = record.keys.find(key => key.type === 'primary' && key.fields.length === 1)
|
|
140
140
|
if (!primaryKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.updateEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_retrieveFile=require("../utilities/retrieveFile"),_updateIndex=require("../utilities/updateIndex"),_removeFromIndex=require("../utilities/removeFromIndex"),_keyUnique=require("../introspect/policies/keyUnique"),_typeCheck=require("../introspect/policies/typeCheck"),_foreignKeyExists=require("../introspect/policies/foreignKeyExists"),_splitEntityProperty=require("../utilities/parsers/splitEntityProperty")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.updateEntity=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js");var _retrieveRecord=require("../utilities/retrieveRecord"),_retrieveFile=require("../utilities/retrieveFile"),_updateIndex=require("../utilities/updateIndex"),_removeFromIndex=require("../utilities/removeFromIndex"),_keyUnique=require("../introspect/policies/keyUnique"),_typeCheck=require("../introspect/policies/typeCheck"),_foreignKeyExists=require("../introspect/policies/foreignKeyExists"),_splitEntityProperty=require("../utilities/parsers/splitEntityProperty"),_config=require("../utilities/config");const{writeFile:writeFile}=require("fs/promises"),findEntryFile=async(e,t,r)=>{for(const i of e.entries){if((await(0,_retrieveFile.retrieveFile)(`${e.path}/${i}`))[t]==r)return i}return null},assertUniqueForUpdate=async(e,t,r,i)=>{for(const n of t.keys){if("primary"!==n.type&&"unique"!==n.type||1!==n.fields.length)continue;const t=n.fields[0];if(!Object.prototype.hasOwnProperty.call(i,t)||i[t]==r[t])continue;if(!await(0,_keyUnique.keyUnique)(e,n.fields,i[t]))throw new Error(`Duplicate value for ${n.type} key "${t}" on ${e}`)}},assertForeignKeysForUpdate=async(e,t,r,i)=>{for(const n of t.keys){if("foreign"!==n.type||1!==n.fields.length||!n.references||1!==n.references.length)continue;const t=n.fields[0];if(!Object.prototype.hasOwnProperty.call(i,t)||i[t]==r[t])continue;const{entity:o,property:s}=(0,_splitEntityProperty.splitEntityProperty)(n.references[0].fields[0]);if(!await(0,_foreignKeyExists.foreignKeyExists)(o,s,i[t]))throw new Error(`Foreign key "${t}" on ${e} references a nonexistent ${o}.${s} = ${i[t]}`)}},reconcileIndexes=async(e,t,r,i,n)=>{for(const o of e.keys){if(1!==o.fields.length)continue;const s=o.fields[0];Object.prototype.hasOwnProperty.call(i,s)&&i[s]!=t[s]&&(await(0,_removeFromIndex.removeFromIndex)(e.path,o,t[s],n),await(0,_updateIndex.updateIndex)(e.path,o,r[s],n))}},assertRequiredFields=(e,t,r)=>{for(const i of t.definition)if(!i.optional&&void 0===r[i.name])throw new Error(`Missing required field "${i.name}" for ${e}`)},applyFieldTypes=(e,t)=>{const r=Object.assign({},t);for(const t of e.definition)Object.prototype.hasOwnProperty.call(r,t.name)&&(r[t.name]=(0,_typeCheck.typeCheck)(t.type,r[t.name]));return r},updateEntity=async(e="",t={},r={})=>{const i=(0,_config.getSetting)("databasePath","database/"),n=await(0,_retrieveRecord.retrieveRecord)(e),o=n.keys.find((e=>"primary"===e.type&&1===e.fields.length));if(!o)throw new Error(`Cannot update "${e}" without a single-field primary key`);const s=o.fields[0],a=applyFieldTypes(n,t),p=r[e]||[],c=[];for(const t of p){const r=await findEntryFile(n,s,t[s]);if(!r)throw new Error(`Could not find entry for ${e} where "${s}" = ${t[s]}`);const o=await(0,_retrieveFile.retrieveFile)(`${n.path}/${r}`);await assertUniqueForUpdate(e,n,o,a),await assertForeignKeysForUpdate(e,n,o,a);const p=Object.assign({},o,a);assertRequiredFields(e,n,p),await reconcileIndexes(n,o,p,a,r),await writeFile(`${i}${n.path}/${r}`,JSON.stringify(p,null,2)),c.push(p)}return r[e]=c,r};exports.updateEntity=updateEntity;
|
|
@@ -15,7 +15,7 @@ const likeMatch = (dataValue, pattern) => {
|
|
|
15
15
|
return new RegExp(`^${regexPattern}$`, 'i').test(dataValue)
|
|
16
16
|
}
|
|
17
17
|
const makeCondition = (data, property, comparator, value) => {
|
|
18
|
-
if (!
|
|
18
|
+
if (!Object.prototype.hasOwnProperty.call(data, property)) {
|
|
19
19
|
return false
|
|
20
20
|
}
|
|
21
21
|
const dataValue = data[property]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.where=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");const likeMatch=(e,r)=>{if("string"!=typeof e||"string"!=typeof r)return!1;const t=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${t}$`,"i").test(e)},makeCondition=(e,r,t,s)=>{if(!
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.where=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");const likeMatch=(e,r)=>{if("string"!=typeof e||"string"!=typeof r)return!1;const t=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${t}$`,"i").test(e)},makeCondition=(e,r,t,s)=>{if(!Object.prototype.hasOwnProperty.call(e,r))return!1;const n=e[r];switch(t){case"=":return n==s;case"!=":case"<>":return n!=s;case">":return n>s;case">=":return n>=s;case"<":return n<s;case"<=":return n<=s;case"in":return Array.isArray(s)&&s.includes(n);case"between":return Array.isArray(s)&&2===s.length&&n>=s[0]&&n<=s[1];case"like":return likeMatch(n,s)}return!1},where=(e=[],{property:r="",joinEntity:t,comparator:s="=",value:n=null}={})=>e.filter((e=>makeCondition(e,t?`${t}.${r}`:r,s,n)));exports.where=where;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type RuntimeSettings = {
|
|
2
|
+
databasePath: string;
|
|
3
|
+
relativePath: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Set where this package's data lives: databasePath (a filesystem path, used in Node) and/or
|
|
7
|
+
* relativePath (a URL prefix prepended to databasePath, used when reading over fetch() in a
|
|
8
|
+
* browser). Call this once before using create()/drop()/query() - a fresh consumer has no other
|
|
9
|
+
* way to point this package at their own data directory.
|
|
10
|
+
* @param newSettings
|
|
11
|
+
*/
|
|
12
|
+
export declare const configure: (newSettings: Partial<RuntimeSettings>) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Read one runtime setting, falling back to the given default if it was never configured. This is
|
|
15
|
+
* the package's own lightweight replacement for reading settings via js-build-tools/gulp.config -
|
|
16
|
+
* that module is a dev-time build tool, not something a published package should require at
|
|
17
|
+
* runtime, and it isn't available at all once a consumer installs this package on its own.
|
|
18
|
+
* @param key
|
|
19
|
+
* @param defaultValue
|
|
20
|
+
*/
|
|
21
|
+
export declare const getSetting: <K extends keyof RuntimeSettings>(key: K, defaultValue: RuntimeSettings[K]) => RuntimeSettings[K];
|
|
22
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.getSetting = exports.configure = void 0
|
|
7
|
+
const defaults = {
|
|
8
|
+
databasePath: 'database/',
|
|
9
|
+
relativePath: ''
|
|
10
|
+
}
|
|
11
|
+
let settings = {
|
|
12
|
+
...defaults
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Set where this package's data lives: databasePath (a filesystem path, used in Node) and/or
|
|
16
|
+
* relativePath (a URL prefix prepended to databasePath, used when reading over fetch() in a
|
|
17
|
+
* browser). Call this once before using create()/drop()/query() - a fresh consumer has no other
|
|
18
|
+
* way to point this package at their own data directory.
|
|
19
|
+
* @param newSettings
|
|
20
|
+
*/
|
|
21
|
+
const configure = newSettings => {
|
|
22
|
+
settings = {
|
|
23
|
+
...settings,
|
|
24
|
+
...newSettings
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read one runtime setting, falling back to the given default if it was never configured. This is
|
|
29
|
+
* the package's own lightweight replacement for reading settings via js-build-tools/gulp.config -
|
|
30
|
+
* that module is a dev-time build tool, not something a published package should require at
|
|
31
|
+
* runtime, and it isn't available at all once a consumer installs this package on its own.
|
|
32
|
+
* @param key
|
|
33
|
+
* @param defaultValue
|
|
34
|
+
*/
|
|
35
|
+
exports.configure = configure
|
|
36
|
+
const getSetting = (key, defaultValue) => {
|
|
37
|
+
return typeof settings[key] !== 'undefined' ? settings[key] : defaultValue
|
|
38
|
+
}
|
|
39
|
+
exports.getSetting = getSetting
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSetting=exports.configure=void 0;const defaults={databasePath:"database/",relativePath:""};let settings={...defaults};const configure=t=>{settings={...settings,...t}};exports.configure=configure;const getSetting=(t,e)=>void 0!==settings[t]?settings[t]:e;exports.getSetting=getSetting;
|
|
@@ -7,7 +7,7 @@ exports.deregisterRecord = void 0
|
|
|
7
7
|
require('core-js/modules/es.json.stringify.js')
|
|
8
8
|
require('core-js/modules/esnext.iterator.constructor.js')
|
|
9
9
|
require('core-js/modules/esnext.iterator.filter.js')
|
|
10
|
-
const
|
|
10
|
+
const _config = require('./config')
|
|
11
11
|
const {
|
|
12
12
|
readFile,
|
|
13
13
|
writeFile
|
|
@@ -18,7 +18,7 @@ const {
|
|
|
18
18
|
* @param recordName
|
|
19
19
|
*/
|
|
20
20
|
const deregisterRecord = async recordName => {
|
|
21
|
-
const databasePath =
|
|
21
|
+
const databasePath = (0, _config.getSetting)('databasePath', 'database/')
|
|
22
22
|
const registryPath = `${databasePath}__RECORDS.json`
|
|
23
23
|
let registry
|
|
24
24
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deregisterRecord=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deregisterRecord=void 0,require("core-js/modules/es.json.stringify.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js");var _config=require("./config");const{readFile:readFile,writeFile:writeFile}=require("fs/promises"),deregisterRecord=async e=>{const r=`${(0,_config.getSetting)("databasePath","database/")}__RECORDS.json`;let t;try{t=JSON.parse(await readFile(r,"utf8"))}catch(e){return null}const s=`${e}.json`;return t.entries=t.entries.filter((e=>e!==s)),await writeFile(r,JSON.stringify(t,null,2)),t};exports.deregisterRecord=deregisterRecord;
|
|
@@ -20,7 +20,7 @@ const getConditionIndexedList = async (parsed, recordData, dataSet) => {
|
|
|
20
20
|
entity = entityProperty.entity
|
|
21
21
|
property = entityProperty.property
|
|
22
22
|
}
|
|
23
|
-
if (!
|
|
23
|
+
if (!Object.prototype.hasOwnProperty.call(recordData, entity)) {
|
|
24
24
|
recordData[entity] = await (0, _retrieveRecord.retrieveRecord)(entity)
|
|
25
25
|
}
|
|
26
26
|
const indexed = {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getConditionIndexedList=void 0;var _isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_where=require("../queries/where"),_retrieveFile=require("./retrieveFile"),_getMatchingIndexes=require("./getMatchingIndexes");const getConditionIndexedList=async(e,t,r)=>{let i=[];for(let o of e.conditions){let n=e.entity,s=o.property;if((0,_isEntityProperty.isEntityProperty)(s)){const e=(0,_splitEntityProperty.splitEntityProperty)(s);n=e.entity,s=e.property}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getConditionIndexedList=void 0;var _isEntityProperty=require("./parsers/isEntityProperty"),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_where=require("../queries/where"),_retrieveFile=require("./retrieveFile"),_getMatchingIndexes=require("./getMatchingIndexes");const getConditionIndexedList=async(e,t,r)=>{let i=[];for(let o of e.conditions){let n=e.entity,s=o.property;if((0,_isEntityProperty.isEntityProperty)(s)){const e=(0,_splitEntityProperty.splitEntityProperty)(s);n=e.entity,s=e.property}Object.prototype.hasOwnProperty.call(t,n)||(t[n]=await(0,_retrieveRecord.retrieveRecord)(n));const p={},d=async(e,t,r,i,o,n)=>{const s=(0,_where.where)(n[e][t],{property:"value",comparator:i.comparator,value:i.value});for(let t of s)for(let r of t.record)o[e].push(await(0,_retrieveFile.retrieveFile)(`${e}/${r}`))};await(0,_getMatchingIndexes.getMatchingIndexes)(n,s,t,o,r,p,d)||i.push(o)}return e.conditions=i,e};exports.getConditionIndexedList=getConditionIndexedList;
|
|
@@ -34,10 +34,10 @@ const getJoinIndexedList = async (parsed, recordData, dataSets) => {
|
|
|
34
34
|
property: propertyB
|
|
35
35
|
} = (0, _splitEntityProperty.splitEntityProperty)(joinClause.propertyB)
|
|
36
36
|
// Get the record for the entities A and B, store on the recordData
|
|
37
|
-
if (!
|
|
37
|
+
if (!Object.prototype.hasOwnProperty.call(recordData, entityA)) {
|
|
38
38
|
recordData[entityA] = await (0, _retrieveRecord.retrieveRecord)(entityA)
|
|
39
39
|
}
|
|
40
|
-
if (!
|
|
40
|
+
if (!Object.prototype.hasOwnProperty.call(recordData, entityB)) {
|
|
41
41
|
recordData[entityB] = await (0, _retrieveRecord.retrieveRecord)(entityB)
|
|
42
42
|
}
|
|
43
43
|
indexedClone = (0, _restrictIndexedList.restrictIndexedList)(joinClause, filterJoins, indexedClone)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getJoinIndexedList=void 0;var _siFunciona=_interopRequireDefault(require("si-funciona")),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_getMatchingIndexes=require("./getMatchingIndexes"),_matchIndexedJoins=require("./matchIndexedJoins"),_restrictIndexedList=require("./restrictIndexedList");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getJoinIndexedList=async(e,t,r)=>{let i=[];const n={};let
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getJoinIndexedList=void 0;var _siFunciona=_interopRequireDefault(require("si-funciona")),_splitEntityProperty=require("./parsers/splitEntityProperty"),_retrieveRecord=require("./retrieveRecord"),_getMatchingIndexes=require("./getMatchingIndexes"),_matchIndexedJoins=require("./matchIndexedJoins"),_restrictIndexedList=require("./restrictIndexedList");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getJoinIndexedList=async(e,t,r)=>{let i=[];const n={};let o=!0;const s=e.entity,c=e.joinEntity,d=e.joinClauses;for(const e in r[s]){const a=r[s][e];let p={};p[s]=[_siFunciona.default.cloneObject(a)];for(let e of d){let c=_siFunciona.default.cloneObject(n);const{entity:d,property:a}=(0,_splitEntityProperty.splitEntityProperty)(e.propertyA),{entity:l,property:u}=(0,_splitEntityProperty.splitEntityProperty)(e.propertyB);Object.prototype.hasOwnProperty.call(t,d)||(t[d]=await(0,_retrieveRecord.retrieveRecord)(d)),Object.prototype.hasOwnProperty.call(t,l)||(t[l]=await(0,_retrieveRecord.retrieveRecord)(l)),c=(0,_restrictIndexedList.restrictIndexedList)(e,p,c);const y=(0,_matchIndexedJoins.matchIndexedJoins)(s,c,r),_=await(0,_getMatchingIndexes.getMatchingIndexes)(d,a,t,e,p,n),x=await(0,_getMatchingIndexes.getMatchingIndexes)(l,u,t,e,p,n,y);!(_||x)&&o&&(i.push(e),o=!1)}r[s][e][c]=p[c]}return e.joinClauses=i,e};exports.getJoinIndexedList=getJoinIndexedList;
|
|
@@ -11,10 +11,10 @@ const getMatchingIndexes = async (entity, property, recordData, clause, dataSet,
|
|
|
11
11
|
for (const key of recordData[entity].keys) {
|
|
12
12
|
if (key.fields.includes(property)) {
|
|
13
13
|
dataSet[entity] = []
|
|
14
|
-
if (!
|
|
14
|
+
if (!Object.prototype.hasOwnProperty.call(indexed, entity)) {
|
|
15
15
|
indexed[entity] = {}
|
|
16
16
|
}
|
|
17
|
-
if (!indexed[entity]
|
|
17
|
+
if (!Object.prototype.hasOwnProperty.call(indexed[entity], property)) {
|
|
18
18
|
indexed[entity][property] = (await (0, _retrieveIndexes.retrieveIndexes)(entity, [property], recordData))[property]
|
|
19
19
|
}
|
|
20
20
|
if (typeof cb === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMatchingIndexes=void 0,require("core-js/modules/es.array.includes.js");var _retrieveIndexes=require("./retrieveIndexes");const getMatchingIndexes=async(e,r,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMatchingIndexes=void 0,require("core-js/modules/es.array.includes.js");var _retrieveIndexes=require("./retrieveIndexes");const getMatchingIndexes=async(e,t,r,s,n,i,o=null)=>{let a=!1;for(let c of r[e].keys)c.fields.includes(t)&&(n[e]=[],Object.prototype.hasOwnProperty.call(i,e)||(i[e]={}),Object.prototype.hasOwnProperty.call(i[e],t)||(i[e][t]=(await(0,_retrieveIndexes.retrieveIndexes)(e,[t],r))[t]),"function"==typeof o&&await o(e,t,r,s,n,i),a=!0);return a};exports.getMatchingIndexes=getMatchingIndexes;
|
|
@@ -32,7 +32,7 @@ const matchIndexedJoins = (entity, indexedClone, dataSets) => async (focusEntity
|
|
|
32
32
|
propertySecond: propertyA
|
|
33
33
|
}]
|
|
34
34
|
for (const checkProp of properties) {
|
|
35
|
-
if (!
|
|
35
|
+
if (!Object.prototype.hasOwnProperty.call(indexedClone, checkProp.entitySecond)) {
|
|
36
36
|
indexedClone[checkProp.entitySecond] = _siFunciona.default.cloneObject(indexed[checkProp.entitySecond])
|
|
37
37
|
}
|
|
38
38
|
const matchedRecords = indexedClone[checkProp.entitySecond][checkProp.propertySecond].reduce((dataA, dataB) => _siFunciona.default.mergeArrays(dataA, (0, _where.where)(indexedClone[checkProp.entityFirst][checkProp.propertyFirst], {
|
|
@@ -41,7 +41,7 @@ const matchIndexedJoins = (entity, indexedClone, dataSets) => async (focusEntity
|
|
|
41
41
|
value: dataB.value
|
|
42
42
|
})), [])
|
|
43
43
|
const skipPush = checkProp.entityFirst === entity
|
|
44
|
-
if (!
|
|
44
|
+
if (!Object.prototype.hasOwnProperty.call(dataSets, checkProp.entityFirst)) {
|
|
45
45
|
dataSets[checkProp.entityFirst] = []
|
|
46
46
|
}
|
|
47
47
|
for (const matchedRecord of matchedRecords) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchIndexedJoins=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js");var _siFunciona=_interopRequireDefault(require("si-funciona")),_where=require("../queries/where"),_retrieveFile=require("./retrieveFile"),_splitEntityProperty=require("./parsers/splitEntityProperty");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const matchIndexedJoins=(e,t,r)=>async(i,o,n,s,p,y)=>{const{entity:c,property:u}=(0,_splitEntityProperty.splitEntityProperty)(s.propertyA),{entity:a,property:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchIndexedJoins=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js");var _siFunciona=_interopRequireDefault(require("si-funciona")),_where=require("../queries/where"),_retrieveFile=require("./retrieveFile"),_splitEntityProperty=require("./parsers/splitEntityProperty");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const matchIndexedJoins=(e,t,r)=>async(i,o,n,s,p,y)=>{const{entity:c,property:u}=(0,_splitEntityProperty.splitEntityProperty)(s.propertyA),{entity:a,property:l}=(0,_splitEntityProperty.splitEntityProperty)(s.propertyB),d=[{entityFirst:c,propertyFirst:u,entitySecond:a,propertySecond:l},{entityFirst:a,propertyFirst:l,entitySecond:c,propertySecond:u}];for(let i of d){Object.prototype.hasOwnProperty.call(t,i.entitySecond)||(t[i.entitySecond]=_siFunciona.default.cloneObject(y[i.entitySecond]));const o=t[i.entitySecond][i.propertySecond].reduce(((e,r)=>_siFunciona.default.mergeArrays(e,(0,_where.where)(t[i.entityFirst][i.propertyFirst],{property:"value",comparator:s.comparator,value:r.value}))),[]);let n=i.entityFirst===e;Object.prototype.hasOwnProperty.call(r,i.entityFirst)||(r[i.entityFirst]=[]);for(let e of o)for(let t of e.record){let e=t;"string"==typeof t&&(e=await(0,_retrieveFile.retrieveFile)(`${i.entityFirst}/${t}`)),n||r[i.entityFirst].push(e),p[i.entityFirst].push(e)}}};exports.matchIndexedJoins=matchIndexedJoins;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.reconcileJoin = void 0
|
|
7
|
-
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
-
require('core-js/modules/esnext.iterator.for-each.js')
|
|
9
|
-
const _where = require('../queries/where')
|
|
10
|
-
const reconcileJoin = (dataSet, entityName, entityKey, joinEntity, joinProp) => {
|
|
11
|
-
const entity = dataSet[entityName][entityKey]
|
|
12
|
-
if (
|
|
13
|
-
entity[joinEntity].forEach((mergedEntity, k) => {
|
|
14
|
-
const matchedEntity = (0, _where.where)(dataSet[joinEntity], {
|
|
15
|
-
property: joinProp,
|
|
16
|
-
comparator: '=',
|
|
17
|
-
value: mergedEntity[joinProp]
|
|
18
|
-
})
|
|
19
|
-
if (matchedEntity.length) {
|
|
20
|
-
dataSet[entityName][entityKey][joinEntity][k] = matchedEntity[0]
|
|
21
|
-
}
|
|
22
|
-
})
|
|
23
|
-
}
|
|
24
|
-
return dataSet
|
|
25
|
-
}
|
|
26
|
-
exports.reconcileJoin = reconcileJoin
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.reconcileJoin = void 0
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.for-each.js')
|
|
9
|
+
const _where = require('../queries/where')
|
|
10
|
+
const reconcileJoin = (dataSet, entityName, entityKey, joinEntity, joinProp) => {
|
|
11
|
+
const entity = dataSet[entityName][entityKey]
|
|
12
|
+
if (Object.prototype.hasOwnProperty.call(entity, joinEntity) && Array.isArray(entity[joinEntity])) {
|
|
13
|
+
entity[joinEntity].forEach((mergedEntity, k) => {
|
|
14
|
+
const matchedEntity = (0, _where.where)(dataSet[joinEntity], {
|
|
15
|
+
property: joinProp,
|
|
16
|
+
comparator: '=',
|
|
17
|
+
value: mergedEntity[joinProp]
|
|
18
|
+
})
|
|
19
|
+
if (matchedEntity.length) {
|
|
20
|
+
dataSet[entityName][entityKey][joinEntity][k] = matchedEntity[0]
|
|
21
|
+
}
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
return dataSet
|
|
25
|
+
}
|
|
26
|
+
exports.reconcileJoin = reconcileJoin
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.reconcileJoin=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js");var _where=require("../queries/where");const reconcileJoin=(e,r,o,t,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.reconcileJoin=void 0,require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js");var _where=require("../queries/where");const reconcileJoin=(e,r,o,t,c)=>{const s=e[r][o];return Object.prototype.hasOwnProperty.call(s,t)&&Array.isArray(s[t])&&s[t].forEach(((s,i)=>{const n=(0,_where.where)(e[t],{property:c,comparator:"=",value:s[c]});n.length&&(e[r][o][t][i]=n[0])})),e};exports.reconcileJoin=reconcileJoin;
|