json-fs-query 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/browser/jsonFsQuery.js +2 -2
  2. package/browser/jsonFsQuery.min.js +1 -1
  3. package/dist/data/introspect/create.js +46 -46
  4. package/dist/data/introspect/definitions/field.js +35 -35
  5. package/dist/data/introspect/definitions/key.js +52 -52
  6. package/dist/data/introspect/definitions/keyReference.js +19 -19
  7. package/dist/data/introspect/definitions/record.js +31 -31
  8. package/dist/data/introspect/describe.js +14 -14
  9. package/dist/data/introspect/drop.js +36 -36
  10. package/dist/data/introspect/index.js +29 -29
  11. package/dist/data/introspect/policies/foreignKeyExists.js +24 -24
  12. package/dist/data/introspect/policies/hasDependents.js +51 -51
  13. package/dist/data/introspect/policies/keyGenerate.js +16 -16
  14. package/dist/data/introspect/policies/keyUnique.js +30 -30
  15. package/dist/data/introspect/policies/typeCheck.js +56 -56
  16. package/dist/data/introspect/policies/typeEnum.js +13 -13
  17. package/dist/data/introspect/policies/useDefault.js +12 -12
  18. package/dist/data/queries/deleteEntity.js +99 -99
  19. package/dist/data/queries/groupBy.js +21 -21
  20. package/dist/data/queries/insertEntity.js +116 -116
  21. package/dist/data/queries/joinEntity.js +31 -31
  22. package/dist/data/queries/limitOffset.js +20 -20
  23. package/dist/data/queries/mergeJoins.js +18 -18
  24. package/dist/data/queries/parser.js +29 -29
  25. package/dist/data/queries/query.js +17 -17
  26. package/dist/data/queries/readEntity.js +13 -13
  27. package/dist/data/queries/selectFields.js +35 -35
  28. package/dist/data/queries/sortBy.js +24 -24
  29. package/dist/data/queries/updateEntity.js +189 -189
  30. package/dist/data/queries/where.js +55 -55
  31. package/dist/data/utilities/computeKeyValue.js +25 -25
  32. package/dist/data/utilities/config.js +44 -44
  33. package/dist/data/utilities/deregisterRecord.js +33 -33
  34. package/dist/data/utilities/getConditionIndexedList.js +46 -46
  35. package/dist/data/utilities/getJoinIndexedList.js +75 -75
  36. package/dist/data/utilities/getMatchingIndexes.js +27 -27
  37. package/dist/data/utilities/matchIndexedJoins.js +60 -60
  38. package/dist/data/utilities/mergeJoin.js +43 -43
  39. package/dist/data/utilities/parsers/findCommand.js +24 -24
  40. package/dist/data/utilities/parsers/findConditions.js +27 -27
  41. package/dist/data/utilities/parsers/findGroupBy.js +21 -21
  42. package/dist/data/utilities/parsers/findInsertValues.js +33 -33
  43. package/dist/data/utilities/parsers/findJoinClauses.js +26 -26
  44. package/dist/data/utilities/parsers/findJoinEntity.js +21 -21
  45. package/dist/data/utilities/parsers/findLimit.js +21 -21
  46. package/dist/data/utilities/parsers/findMergeJoins.js +25 -25
  47. package/dist/data/utilities/parsers/findOffset.js +21 -21
  48. package/dist/data/utilities/parsers/findSelects.js +29 -29
  49. package/dist/data/utilities/parsers/findSortClauses.js +29 -29
  50. package/dist/data/utilities/parsers/findUpdateValues.js +33 -33
  51. package/dist/data/utilities/parsers/isEntityProperty.js +7 -7
  52. package/dist/data/utilities/parsers/parseLiteralValue.js +33 -33
  53. package/dist/data/utilities/parsers/parseQuery.js +50 -50
  54. package/dist/data/utilities/parsers/removeFromQuery.js +7 -7
  55. package/dist/data/utilities/parsers/splitEntityProperty.js +22 -22
  56. package/dist/data/utilities/parsers/splitQueries.js +10 -10
  57. package/dist/data/utilities/reconcileJoin.js +25 -25
  58. package/dist/data/utilities/reconcileJoins.js +25 -25
  59. package/dist/data/utilities/registerRecord.js +66 -66
  60. package/dist/data/utilities/removeFromIndex.js +43 -43
  61. package/dist/data/utilities/restrictIndexedList.js +44 -44
  62. package/dist/data/utilities/retrieveFile.js +27 -27
  63. package/dist/data/utilities/retrieveIndexes.js +23 -23
  64. package/dist/data/utilities/retrieveRecord.js +8 -8
  65. package/dist/data/utilities/retrieveRecords.js +20 -20
  66. package/dist/data/utilities/runQuery.js +86 -86
  67. package/dist/data/utilities/updateIndex.js +55 -55
  68. package/dist/data/utilities/useJoinClause.js +50 -50
  69. package/dist/index.js +41 -41
  70. package/package.json +9 -5
@@ -1,47 +1,47 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.create = void 0;
7
- require("core-js/modules/es.json.stringify.js");
8
- var _record = require("./definitions/record");
9
- var _registerRecord = require("../utilities/registerRecord");
10
- var _config = require("../utilities/config");
11
- /**
12
- * Create a new record.
13
- * @param recordName
14
- * @param definition
15
- * @param keys
16
- */
17
- const create = async (recordName, definition = [], keys = []) => {
18
- const {
19
- writeFile,
20
- mkdir
21
- } = require('fs/promises');
22
- const {
23
- existsSync
24
- } = require('fs');
25
- const databasePath = (0, _config.getSetting)('databasePath', 'database/');
26
- if (recordName === '__RECORDS') {
27
- return null;
28
- }
29
- if (existsSync(`${databasePath}${recordName}.json`)) {
30
- return null;
31
- }
32
- await mkdir(databasePath, {
33
- recursive: true
34
- });
35
- const recordContent = (0, _record.record)({
36
- path: recordName,
37
- definition,
38
- keys
39
- });
40
- await writeFile(`${databasePath}${recordName}.json`, JSON.stringify(recordContent, null, 2));
41
- await mkdir(`${databasePath}${recordName}`, {
42
- recursive: true
43
- });
44
- await (0, _registerRecord.registerRecord)(recordName);
45
- return recordContent;
46
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.create = void 0;
7
+ require("core-js/modules/es.json.stringify.js");
8
+ var _record = require("./definitions/record");
9
+ var _registerRecord = require("../utilities/registerRecord");
10
+ var _config = require("../utilities/config");
11
+ /**
12
+ * Create a new record.
13
+ * @param recordName
14
+ * @param definition
15
+ * @param keys
16
+ */
17
+ const create = async (recordName, definition = [], keys = []) => {
18
+ const {
19
+ writeFile,
20
+ mkdir
21
+ } = require('fs/promises');
22
+ const {
23
+ existsSync
24
+ } = require('fs');
25
+ const databasePath = (0, _config.getSetting)('databasePath', 'database/');
26
+ if (recordName === '__RECORDS') {
27
+ return null;
28
+ }
29
+ if (existsSync(`${databasePath}${recordName}.json`)) {
30
+ return null;
31
+ }
32
+ await mkdir(databasePath, {
33
+ recursive: true
34
+ });
35
+ const recordContent = (0, _record.record)({
36
+ path: recordName,
37
+ definition,
38
+ keys
39
+ });
40
+ await writeFile(`${databasePath}${recordName}.json`, JSON.stringify(recordContent, null, 2));
41
+ await mkdir(`${databasePath}${recordName}`, {
42
+ recursive: true
43
+ });
44
+ await (0, _registerRecord.registerRecord)(recordName);
45
+ return recordContent;
46
+ };
47
47
  exports.create = create;
@@ -1,36 +1,36 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.field = void 0;
7
- /**
8
- * Generate a field for a record.
9
- * @param properties
10
- * @param properties.name
11
- * @param properties.type
12
- * @param properties.optional
13
- * @param properties.useDefault
14
- * @param properties.defaultValue
15
- * @param properties.autoGenerate
16
- */
17
- const field = ({
18
- name = '',
19
- type = 'string',
20
- optional = false,
21
- useDefault = false,
22
- defaultValue = '',
23
- autoGenerate = false
24
- } = {}) => {
25
- const returnField = {
26
- name,
27
- type,
28
- optional,
29
- autoGenerate
30
- };
31
- if (useDefault) {
32
- returnField['default'] = defaultValue;
33
- }
34
- return returnField;
35
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.field = void 0;
7
+ /**
8
+ * Generate a field for a record.
9
+ * @param properties
10
+ * @param properties.name
11
+ * @param properties.type
12
+ * @param properties.optional
13
+ * @param properties.useDefault
14
+ * @param properties.defaultValue
15
+ * @param properties.autoGenerate
16
+ */
17
+ const field = ({
18
+ name = '',
19
+ type = 'string',
20
+ optional = false,
21
+ useDefault = false,
22
+ defaultValue = '',
23
+ autoGenerate = false
24
+ } = {}) => {
25
+ const returnField = {
26
+ name,
27
+ type,
28
+ optional,
29
+ autoGenerate
30
+ };
31
+ if (useDefault) {
32
+ returnField['default'] = defaultValue;
33
+ }
34
+ return returnField;
35
+ };
36
36
  exports.field = field;
@@ -1,53 +1,53 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.key = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.map.js");
9
- var _keyReference = require("./keyReference");
10
- /**
11
- * Create a field key.
12
- * @param properties
13
- * @param properties.type
14
- * @param properties.fields
15
- * @param properties.lookup
16
- * @param properties.references
17
- */
18
- const key = ({
19
- type = 'index',
20
- fields = [],
21
- lookup = '',
22
- references = []
23
- } = {}) => {
24
- switch (type) {
25
- case 'primary':
26
- case 'index':
27
- case 'unique':
28
- references = [];
29
- break;
30
- case 'multi':
31
- if (fields.length < 2) {
32
- throw new Error('Multi key indicated with less than two fields');
33
- }
34
- break;
35
- case 'foreign':
36
- if (references.length < 1) {
37
- throw new Error('Foreign key must have one reference to an external record');
38
- }
39
- break;
40
- default:
41
- throw new Error('Unrecognized key type; must be index, primary, unique, multi, or foreign');
42
- }
43
- const keyDefinition = {
44
- type,
45
- fields,
46
- lookup
47
- };
48
- if (typeof references !== 'undefined' && references.length > 0) {
49
- keyDefinition['references'] = references.map(_keyReference.keyReference);
50
- }
51
- return keyDefinition;
52
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.key = void 0;
7
+ require("core-js/modules/esnext.iterator.constructor.js");
8
+ require("core-js/modules/esnext.iterator.map.js");
9
+ var _keyReference = require("./keyReference");
10
+ /**
11
+ * Create a field key.
12
+ * @param properties
13
+ * @param properties.type
14
+ * @param properties.fields
15
+ * @param properties.lookup
16
+ * @param properties.references
17
+ */
18
+ const key = ({
19
+ type = 'index',
20
+ fields = [],
21
+ lookup = '',
22
+ references = []
23
+ } = {}) => {
24
+ switch (type) {
25
+ case 'primary':
26
+ case 'index':
27
+ case 'unique':
28
+ references = [];
29
+ break;
30
+ case 'multi':
31
+ if (fields.length < 2) {
32
+ throw new Error('Multi key indicated with less than two fields');
33
+ }
34
+ break;
35
+ case 'foreign':
36
+ if (references.length < 1) {
37
+ throw new Error('Foreign key must have one reference to an external record');
38
+ }
39
+ break;
40
+ default:
41
+ throw new Error('Unrecognized key type; must be index, primary, unique, multi, or foreign');
42
+ }
43
+ const keyDefinition = {
44
+ type,
45
+ fields,
46
+ lookup
47
+ };
48
+ if (typeof references !== 'undefined' && references.length > 0) {
49
+ keyDefinition['references'] = references.map(_keyReference.keyReference);
50
+ }
51
+ return keyDefinition;
52
+ };
53
53
  exports.key = key;
@@ -1,20 +1,20 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.keyReference = void 0;
7
- /**
8
- * Create a reference to a remote (foreign; existing on another record) key.
9
- * @param properties
10
- * @param properties.fields
11
- * @param properties.lookup
12
- */
13
- const keyReference = ({
14
- fields = [],
15
- lookup = ''
16
- } = {}) => ({
17
- fields,
18
- lookup
19
- });
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.keyReference = void 0;
7
+ /**
8
+ * Create a reference to a remote (foreign; existing on another record) key.
9
+ * @param properties
10
+ * @param properties.fields
11
+ * @param properties.lookup
12
+ */
13
+ const keyReference = ({
14
+ fields = [],
15
+ lookup = ''
16
+ } = {}) => ({
17
+ fields,
18
+ lookup
19
+ });
20
20
  exports.keyReference = keyReference;
@@ -1,32 +1,32 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.record = void 0;
7
- require("core-js/modules/esnext.iterator.constructor.js");
8
- require("core-js/modules/esnext.iterator.map.js");
9
- var _field = require("./field");
10
- var _key = require("./key");
11
- /**
12
- *
13
- * @param properties
14
- * @param properties.path
15
- * @param properties.definition
16
- * @param properties.keys
17
- * @param properties.entries
18
- */
19
- const record = ({
20
- path = '',
21
- definition = [],
22
- keys = [],
23
- entries = []
24
- } = {}) => {
25
- return {
26
- path,
27
- definition: definition.map(_field.field),
28
- keys: keys.map(_key.key),
29
- entries
30
- };
31
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.record = void 0;
7
+ require("core-js/modules/esnext.iterator.constructor.js");
8
+ require("core-js/modules/esnext.iterator.map.js");
9
+ var _field = require("./field");
10
+ var _key = require("./key");
11
+ /**
12
+ *
13
+ * @param properties
14
+ * @param properties.path
15
+ * @param properties.definition
16
+ * @param properties.keys
17
+ * @param properties.entries
18
+ */
19
+ const record = ({
20
+ path = '',
21
+ definition = [],
22
+ keys = [],
23
+ entries = []
24
+ } = {}) => {
25
+ return {
26
+ path,
27
+ definition: definition.map(_field.field),
28
+ keys: keys.map(_key.key),
29
+ entries
30
+ };
31
+ };
32
32
  exports.record = record;
@@ -1,15 +1,15 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.describe = void 0;
7
- var _retrieveFile = require("../utilities/retrieveFile");
8
- const describe = async (record = '__RECORDS') => {
9
- const recordFile = await (0, _retrieveFile.retrieveFile)(`${record}.json`);
10
- if (record === '__RECORDS') {
11
- return recordFile.entries;
12
- }
13
- return recordFile.definition;
14
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.describe = void 0;
7
+ var _retrieveFile = require("../utilities/retrieveFile");
8
+ const describe = async (record = '__RECORDS') => {
9
+ const recordFile = await (0, _retrieveFile.retrieveFile)(`${record}.json`);
10
+ if (record === '__RECORDS') {
11
+ return recordFile.entries;
12
+ }
13
+ return recordFile.definition;
14
+ };
15
15
  exports.describe = describe;
@@ -1,37 +1,37 @@
1
- "use strict";
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
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.drop = void 0;
11
- var _retrieveFile = require("../utilities/retrieveFile");
12
- var _deregisterRecord = require("../utilities/deregisterRecord");
13
- var _config = require("../utilities/config");
14
- const {
15
- rm
16
- } = require('fs/promises');
17
- const drop = async record => {
18
- const databasePath = (0, _config.getSetting)('databasePath', 'database/');
19
- if (record === '__RECORDS') {
20
- return null;
21
- }
22
- const recordFile = await (0, _retrieveFile.retrieveFile)(`${record}.json`);
23
- for (const file of recordFile.entries) {
24
- await rm(`${databasePath}${recordFile.path}/${file}`);
25
- }
26
- await rm(`${databasePath}${recordFile.path}`, {
27
- recursive: true,
28
- force: true
29
- });
30
- await rm(`${databasePath}__indexes/${recordFile.path}`, {
31
- recursive: true,
32
- force: true
33
- });
34
- await rm(`${databasePath}${record}.json`);
35
- await (0, _deregisterRecord.deregisterRecord)(record);
36
- };
1
+ "use strict";
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
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.drop = void 0;
11
+ var _retrieveFile = require("../utilities/retrieveFile");
12
+ var _deregisterRecord = require("../utilities/deregisterRecord");
13
+ var _config = require("../utilities/config");
14
+ const {
15
+ rm
16
+ } = require('fs/promises');
17
+ const drop = async record => {
18
+ const databasePath = (0, _config.getSetting)('databasePath', 'database/');
19
+ if (record === '__RECORDS') {
20
+ return null;
21
+ }
22
+ const recordFile = await (0, _retrieveFile.retrieveFile)(`${record}.json`);
23
+ for (const file of recordFile.entries) {
24
+ await rm(`${databasePath}${recordFile.path}/${file}`);
25
+ }
26
+ await rm(`${databasePath}${recordFile.path}`, {
27
+ recursive: true,
28
+ force: true
29
+ });
30
+ await rm(`${databasePath}__indexes/${recordFile.path}`, {
31
+ recursive: true,
32
+ force: true
33
+ });
34
+ await rm(`${databasePath}${record}.json`);
35
+ await (0, _deregisterRecord.deregisterRecord)(record);
36
+ };
37
37
  exports.drop = drop;
@@ -1,30 +1,30 @@
1
- "use strict";
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
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- Object.defineProperty(exports, "create", {
11
- enumerable: true,
12
- get: function () {
13
- return _create.create;
14
- }
15
- });
16
- Object.defineProperty(exports, "describe", {
17
- enumerable: true,
18
- get: function () {
19
- return _describe.describe;
20
- }
21
- });
22
- Object.defineProperty(exports, "drop", {
23
- enumerable: true,
24
- get: function () {
25
- return _drop.drop;
26
- }
27
- });
28
- var _create = require("./create");
29
- var _drop = require("./drop");
1
+ "use strict";
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
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ Object.defineProperty(exports, "create", {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _create.create;
14
+ }
15
+ });
16
+ Object.defineProperty(exports, "describe", {
17
+ enumerable: true,
18
+ get: function () {
19
+ return _describe.describe;
20
+ }
21
+ });
22
+ Object.defineProperty(exports, "drop", {
23
+ enumerable: true,
24
+ get: function () {
25
+ return _drop.drop;
26
+ }
27
+ });
28
+ var _create = require("./create");
29
+ var _drop = require("./drop");
30
30
  var _describe = require("./describe");
@@ -1,25 +1,25 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.foreignKeyExists = void 0;
7
- var _retrieveRecords = require("../../utilities/retrieveRecords");
8
- var _where = require("../../queries/where");
9
- /**
10
- * Check whether any record in the referenced entity has the given property set to the given
11
- * value - the mirror image of keyUnique(), which checks that no record already has a value.
12
- * @param entity
13
- * @param property
14
- * @param value
15
- */
16
- const foreignKeyExists = async (entity, property, value) => {
17
- const records = await (0, _retrieveRecords.retrieveRecords)(entity);
18
- const found = (0, _where.where)(records, {
19
- property,
20
- comparator: '=',
21
- value
22
- });
23
- return found.length > 0;
24
- };
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.foreignKeyExists = void 0;
7
+ var _retrieveRecords = require("../../utilities/retrieveRecords");
8
+ var _where = require("../../queries/where");
9
+ /**
10
+ * Check whether any record in the referenced entity has the given property set to the given
11
+ * value - the mirror image of keyUnique(), which checks that no record already has a value.
12
+ * @param entity
13
+ * @param property
14
+ * @param value
15
+ */
16
+ const foreignKeyExists = async (entity, property, value) => {
17
+ const records = await (0, _retrieveRecords.retrieveRecords)(entity);
18
+ const found = (0, _where.where)(records, {
19
+ property,
20
+ comparator: '=',
21
+ value
22
+ });
23
+ return found.length > 0;
24
+ };
25
25
  exports.foreignKeyExists = foreignKeyExists;