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 +26 -0
- package/datastoreAdapter.d.ts +9 -0
- package/datastoreAdapter.js +65 -0
- package/datastoreAdapter.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +40 -0
- package/index.js.map +1 -0
- package/lib.d.ts +3 -0
- package/lib.js +153 -0
- package/lib.js.map +1 -0
- package/package.json +103 -0
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Functional Models ORM Memory
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
[](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
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
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
|
+
}
|