functional-models-orm-memory 3.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/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Functional Models ORM Memory
2
+
3
+ ![Unit Tests](https://github.com/monolithst/functional-models-orm-memory/actions/workflows/ut.yml/badge.svg?branch=master)
4
+ [![Coverage Status](https://coveralls.io/repos/github/monolithst/functional-models-orm-memory/badge.svg?branch=master)](https://coveralls.io/github/monolithst/functional-models-orm-memory?branch=master)
5
+
6
+ An ORM datastore adapter that is in-memory.
7
+
8
+ Useful for testing and some caching applications.
9
+
10
+ # To Install
11
+
12
+ Run
13
+
14
+ ```bash
15
+ npm install functional-models-orm-memory
16
+ ```
17
+
18
+ # To Use
19
+
20
+ ```typescript
21
+ import { datastoreAdapter as memoryDatastore } from 'functional-models-orm-memory'
22
+ import { createOrm } from 'functional-models'
23
+
24
+ const datastoreAdapter = memoryDatastore.create()
25
+ const orm = createOrm({ datastoreAdapter })
26
+ ```
@@ -0,0 +1,9 @@
1
+ import { DatastoreAdapter } from 'functional-models';
2
+ type WithRequired<T, K extends keyof T> = T & {
3
+ [P in K]-?: T[P];
4
+ };
5
+ type Props = {
6
+ seedData?: Record<string, Record<string | number, any>>;
7
+ };
8
+ declare const create: ({ seedData }?: Props) => WithRequired<DatastoreAdapter, "count">;
9
+ export { create };
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.create = void 0;
16
+ const clone_1 = __importDefault(require("lodash/clone"));
17
+ const merge_1 = __importDefault(require("lodash/merge"));
18
+ const lib_1 = require("./lib");
19
+ const create = ({ seedData } = {}) => {
20
+ const database = (0, clone_1.default)(seedData) || {};
21
+ const _getRecords = (model) => {
22
+ const name = model.getName();
23
+ if (!(name in database)) {
24
+ // eslint-disable-next-line functional/immutable-data
25
+ database[name] = {};
26
+ }
27
+ return database[name];
28
+ };
29
+ return {
30
+ delete: (model, id) => {
31
+ const records = _getRecords(model);
32
+ // eslint-disable-next-line functional/immutable-data
33
+ delete records[id];
34
+ return Promise.resolve(undefined);
35
+ },
36
+ retrieve: (model, primaryKey) => {
37
+ return Promise.resolve().then(() => {
38
+ const records = _getRecords(model);
39
+ return records[primaryKey];
40
+ });
41
+ },
42
+ save: (instance) => __awaiter(void 0, void 0, void 0, function* () {
43
+ return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
44
+ const model = instance.getModel();
45
+ const data = yield instance.toObj();
46
+ const records = _getRecords(model);
47
+ (0, merge_1.default)(records, { [yield instance.getPrimaryKey()]: data });
48
+ return data;
49
+ }));
50
+ }),
51
+ search: (model, query) => {
52
+ const records = _getRecords(model);
53
+ const instances = (0, lib_1.filterResults)(query, Object.values(records));
54
+ return Promise.resolve({ instances: instances, page: undefined });
55
+ },
56
+ count: (model) => {
57
+ return Promise.resolve().then(() => {
58
+ const records = _getRecords(model);
59
+ return Object.keys(records).length;
60
+ });
61
+ },
62
+ };
63
+ };
64
+ exports.create = create;
65
+ //# sourceMappingURL=datastoreAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datastoreAdapter.js","sourceRoot":"","sources":["../src/datastoreAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAYA,yDAAgC;AAChC,yDAAgC;AAChC,+BAAqC;AAQrC,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,KAAY,EAAE,EAGtC,EAAE;IACF,MAAM,QAAQ,GAAiD,IAAA,eAAK,EAClE,QAAQ,CACT,IAAI,EAAE,CAAA;IAEP,MAAM,WAAW,GAAG,CAClB,KAAuB,EACvB,EAAE;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAC5B,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YACxB,qDAAqD;YACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAqD,CAAA;IAC3E,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,CACN,KAAsB,EACtB,EAAkB,EACH,EAAE;YACjB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YAClC,qDAAqD;YACrD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAA;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QACD,QAAQ,EAAE,CACR,KAAsB,EACtB,UAA0B,EACa,EAAE;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,OAAO,OAAO,CAAC,UAAU,CAEZ,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,EAAE,CACJ,QAA8B,EACE,EAAE;YAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAS,EAAE;gBACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;gBACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAS,CAAA;gBAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,IAAA,eAAK,EAAC,OAAO,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC1D,OAAO,IAAI,CAAA;YACb,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,MAAM,EAAE,CACN,KAAsB,EACtB,KAAgB,EACuB,EAAE;YACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YAClC,MAAM,SAAS,GAAG,IAAA,mBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACnE,CAAC;QACD,KAAK,EAAE,CAAgC,KAAsB,EAAE,EAAE;YAC/D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAEQ,wBAAM"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * as datastoreAdapter from './datastoreAdapter';
2
+ export { filterResults } from './lib';
package/index.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.filterResults = exports.datastoreAdapter = void 0;
37
+ exports.datastoreAdapter = __importStar(require("./datastoreAdapter"));
38
+ var lib_1 = require("./lib");
39
+ Object.defineProperty(exports, "filterResults", { enumerable: true, get: function () { return lib_1.filterResults; } });
40
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAsD;AACtD,6BAAqC;AAA5B,oGAAA,aAAa,OAAA"}
package/lib.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { DataDescription, OrmSearch } from 'functional-models';
2
+ declare const filterResults: <T extends DataDescription>(searchQuery: OrmSearch, databaseEntries: T[]) => T[];
3
+ export { filterResults };
package/lib.js ADDED
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterResults = void 0;
4
+ const isAfter_1 = require("date-fns/isAfter");
5
+ const isBefore_1 = require("date-fns/isBefore");
6
+ const functional_models_1 = require("functional-models");
7
+ const lodash_1 = require("lodash");
8
+ const _emptyValueWrapper = (func) => (property) => {
9
+ const isEmptyCheck = property.value === undefined || property.value === null;
10
+ const subfunc = func(property);
11
+ return (obj) => {
12
+ // @ts-ignore
13
+ const value = obj[property.key];
14
+ const valueIsEmpty = value === undefined || value === null;
15
+ // Are we looking for empty and its empty?
16
+ if (isEmptyCheck && valueIsEmpty) {
17
+ return true;
18
+ }
19
+ // Are we checking for a value but its empty?
20
+ if (!isEmptyCheck && valueIsEmpty) {
21
+ return false;
22
+ }
23
+ // Both have values, time to compare.
24
+ return subfunc(obj);
25
+ };
26
+ };
27
+ const _stringCompare = _emptyValueWrapper((property) => {
28
+ const rePrefix = property.options.startsWith ? '^' : '';
29
+ const reSuffix = property.options.endsWith ? '$' : '';
30
+ const flags = property.options.caseSensitive ? '' : 'i';
31
+ const re = new RegExp(`${rePrefix}${property.value}${reSuffix}`, flags);
32
+ return (obj) => {
33
+ // @ts-ignore
34
+ const value = obj[property.key];
35
+ return re.test(value);
36
+ };
37
+ });
38
+ const _checks = {
39
+ [functional_models_1.EqualitySymbol.eq]: (searchValue, dataValue) => searchValue === dataValue,
40
+ [functional_models_1.EqualitySymbol.gt]: (searchValue, dataValue) => searchValue < dataValue,
41
+ [functional_models_1.EqualitySymbol.gte]: (searchValue, dataValue) => searchValue <= dataValue,
42
+ [functional_models_1.EqualitySymbol.lt]: (searchValue, dataValue) => searchValue > dataValue,
43
+ [functional_models_1.EqualitySymbol.lte]: (searchValue, dataValue) => searchValue >= dataValue,
44
+ };
45
+ const _numberCompare = _emptyValueWrapper((property) => {
46
+ return (obj) => {
47
+ // @ts-ignore
48
+ const value = obj[property.key];
49
+ return _checks[property.equalitySymbol](property.value, value);
50
+ };
51
+ });
52
+ const _booleanCompare = _emptyValueWrapper((property) => {
53
+ return (obj) => {
54
+ // @ts-ignore
55
+ const value = obj[property.key];
56
+ return property.value === value;
57
+ };
58
+ });
59
+ const _objectCompare = _emptyValueWrapper((property) => {
60
+ const asObj = typeof property.value === 'object'
61
+ ? property.value
62
+ : JSON.parse(property.value);
63
+ return (obj) => {
64
+ // @ts-ignore
65
+ const value = obj[property.key];
66
+ return (0, lodash_1.isEqual)(asObj, value);
67
+ };
68
+ });
69
+ const _typeToCompare = {
70
+ [functional_models_1.DatastoreValueType.number]: _numberCompare,
71
+ [functional_models_1.DatastoreValueType.string]: _stringCompare,
72
+ [functional_models_1.DatastoreValueType.date]: _stringCompare,
73
+ [functional_models_1.DatastoreValueType.boolean]: _booleanCompare,
74
+ [functional_models_1.DatastoreValueType.object]: _objectCompare,
75
+ };
76
+ const _datesBeforeCheck = (o) => (obj) => {
77
+ // @ts-ignore
78
+ const value = obj[o.key];
79
+ const dateA = new Date(o.date);
80
+ const dateB = new Date(value);
81
+ const before = (0, isBefore_1.isBefore)(dateB, dateA);
82
+ return o.options.equalToAndBefore ? before || (0, lodash_1.isEqual)(dateA, dateB) : before;
83
+ };
84
+ const _datesAfterCheck = (o) => (obj) => {
85
+ // @ts-ignore
86
+ const value = obj[o.key];
87
+ const dateA = new Date(o.date);
88
+ const dateB = new Date(value);
89
+ const after = (0, isAfter_1.isAfter)(dateB, dateA);
90
+ return o.options.equalToAndAfter ? after || (0, lodash_1.isEqual)(dateA, dateB) : after;
91
+ };
92
+ const _compareProperty = (property) => {
93
+ if (property.type === 'property') {
94
+ return _typeToCompare[property.valueType](property);
95
+ }
96
+ if (property.type === 'datesBefore') {
97
+ return _datesBeforeCheck(property);
98
+ }
99
+ /* istanbul ignore next */
100
+ if (property.type === 'datesAfter') {
101
+ return _datesAfterCheck(property);
102
+ }
103
+ /* istanbul ignore next */
104
+ throw new Error('Impossible property situation');
105
+ };
106
+ const _andCheck = (a, b) => (obj) => {
107
+ const r1 = a(obj);
108
+ const r2 = b(obj);
109
+ if (!r1) {
110
+ return false;
111
+ }
112
+ return r2;
113
+ };
114
+ const _orCheck = (a, b) => (obj) => {
115
+ const r1 = a(obj);
116
+ const r2 = b(obj);
117
+ return r1 || r2;
118
+ };
119
+ const _allCheck = (listOfChecks) => (obj) => {
120
+ return listOfChecks.every(x => {
121
+ return x(obj);
122
+ });
123
+ };
124
+ const _buildChecks = (o) => {
125
+ if ((0, functional_models_1.isPropertyBasedQuery)(o)) {
126
+ return _compareProperty(o);
127
+ }
128
+ /* istanbul ignore next */
129
+ if (Array.isArray(o)) {
130
+ // Is this just queries?
131
+ if (o.every(x => !(0, functional_models_1.isALinkToken)(x))) {
132
+ return _allCheck(o.map(_buildChecks));
133
+ }
134
+ const threes = (0, functional_models_1.threeitize)(o);
135
+ const checks = threes.reduce((acc, [a, link, b]) => {
136
+ const check1 = _buildChecks(a);
137
+ const check2 = _buildChecks(b);
138
+ const checkFunc = link.toLowerCase() === 'and' ? _andCheck : _orCheck;
139
+ const combinedCheck = checkFunc(check1, check2);
140
+ return [...acc, combinedCheck];
141
+ }, []);
142
+ return _allCheck(checks);
143
+ }
144
+ /* istanbul ignore next */
145
+ throw new Error('Should never happen');
146
+ };
147
+ const filterResults = (searchQuery, databaseEntries) => {
148
+ (0, functional_models_1.validateOrmSearch)(searchQuery);
149
+ const func = _buildChecks(searchQuery.query);
150
+ return databaseEntries.filter(func);
151
+ };
152
+ exports.filterResults = filterResults;
153
+ //# sourceMappingURL=lib.js.map
package/lib.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "functional-models-orm-memory",
3
+ "version": "3.0.0",
4
+ "description": "An in-memory datastore adapter for functional-models",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
7
+ "scripts": {
8
+ "build": "rm -Rf ./dist && tsc && cp package.json ./dist && cp README.md ./dist",
9
+ "build:watch": "nodemon -e '*' --watch ./src --exec npm run build",
10
+ "commit": "cz",
11
+ "dist": "npm run build && cd dist && npm publish",
12
+ "eslint": "eslint .",
13
+ "prettier": "prettier --write .",
14
+ "prettier:check": "prettier -c .",
15
+ "test": "mocha -r ts-node/register test/**/*.test.ts",
16
+ "test:coverage": "nyc npm run test",
17
+ "test:features": "TS_NODE_PROJECT=tsconfig.cucumber.json ./node_modules/.bin/cucumber-js --require ./features/step_definitions/steps.ts --require-module ts-node/register"
18
+ },
19
+ "homepage": "https://github.com/monolithst/functional-models-orm-memory#readme",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/monolithst/functional-models-orm-memory.git"
23
+ },
24
+ "nyc": {
25
+ "branches": 100,
26
+ "lines": 100,
27
+ "functions": 100,
28
+ "statements": 100,
29
+ "extends": "@istanbuljs/nyc-config-typescript",
30
+ "check-coverage": true,
31
+ "all": true,
32
+ "include": [
33
+ "src/**/!(*.test.*).[tj]s?(x)"
34
+ ],
35
+ "exclude": [
36
+ "src/_tests_/**/*.*"
37
+ ],
38
+ "reporter": [
39
+ "html",
40
+ "lcov",
41
+ "text",
42
+ "text-summary"
43
+ ],
44
+ "report-dir": "coverage"
45
+ },
46
+ "config": {
47
+ "commitizen": {
48
+ "path": "./node_modules/cz-conventional-changelog"
49
+ }
50
+ },
51
+ "keywords": [
52
+ "orm",
53
+ "javascript",
54
+ "functional-models",
55
+ "nodejs"
56
+ ],
57
+ "publishConfig": {
58
+ "registry": "https://registry.npmjs.org"
59
+ },
60
+ "author": "Mike Cornwell",
61
+ "license": "GPL-3.0-or-later",
62
+ "bugs": {
63
+ "url": "https://github.com/monolithst/functional-models-orm-memory/issues"
64
+ },
65
+ "devDependencies": {
66
+ "@cucumber/cucumber": "^11.2.0",
67
+ "@eslint/compat": "^1.2.0",
68
+ "@eslint/eslintrc": "^3.1.0",
69
+ "@eslint/js": "^9.12.0",
70
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
71
+ "@types/chai": "^4.3.16",
72
+ "@types/chai-as-promised": "^7.1.8",
73
+ "@types/lodash": "^4.17.1",
74
+ "@types/mocha": "^10.0.6",
75
+ "@types/sinon": "^17.0.3",
76
+ "@typescript-eslint/eslint-plugin": "^8.20.0",
77
+ "@typescript-eslint/parser": "^8.20.0",
78
+ "chai": "^4.3.0",
79
+ "chai-as-promised": "^7.1.2",
80
+ "cz-conventional-changelog": "^3.3.0",
81
+ "eslint": "^9.18.0",
82
+ "eslint-config-prettier": "^9.1.0",
83
+ "eslint-import-resolver-typescript": "^3.6.3",
84
+ "eslint-plugin-functional": "~7.1.0",
85
+ "eslint-plugin-import": "^2.31.0",
86
+ "mocha": "^10.4.0",
87
+ "nodemon": "^3.1.9",
88
+ "nyc": "^15.1.0",
89
+ "prettier-plugin-organize-imports": "^3.2.4",
90
+ "proxyquire": "^2.1.3",
91
+ "sinon": "^11.1.2",
92
+ "source-map-support": "^0.5.21",
93
+ "sqlite3": "^5.1.7",
94
+ "ts-node": "^10.9.2",
95
+ "tsx": "^4.19.2",
96
+ "typescript": "^5.7.2"
97
+ },
98
+ "dependencies": {
99
+ "date-fns": "^3.6.0",
100
+ "functional-models": "^3.0.12",
101
+ "lodash": "^4.17.21"
102
+ }
103
+ }