functional-models 2.1.13 → 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 +484 -301
- package/errors.d.ts +2 -5
- package/errors.js.map +1 -1
- package/index.d.ts +6 -7
- package/index.js +24 -20
- package/index.js.map +1 -1
- package/lib.d.ts +15 -4051
- package/lib.js +120 -8
- package/lib.js.map +1 -1
- package/models.d.ts +13 -3
- package/models.js +73 -38
- package/models.js.map +1 -1
- package/package.json +34 -21
- package/properties.d.ts +439 -23639
- package/properties.js +237 -103
- package/properties.js.map +1 -1
- package/serialization.d.ts +2 -2
- package/serialization.js +1 -1
- package/serialization.js.map +1 -1
- package/types.d.ts +692 -0
- package/types.js +45 -0
- package/types.js.map +1 -0
- package/utils.d.ts +4 -2
- package/utils.js +43 -2
- package/utils.js.map +1 -1
- package/validation.d.ts +18 -12164
- package/validation.js +30 -28
- package/validation.js.map +1 -1
- package/constants.d.ts +0 -14
- package/constants.js +0 -19
- package/constants.js.map +0 -1
- package/interfaces.d.ts +0 -147
- package/interfaces.js +0 -4
- package/interfaces.js.map +0 -1
- package/lazy.d.ts +0 -3
- package/lazy.js +0 -51
- package/lazy.js.map +0 -1
- package/methods.d.ts +0 -6
- package/methods.js +0 -18
- package/methods.js.map +0 -1
package/lib.js
CHANGED
|
@@ -12,15 +12,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.isModelInstance = exports.mergeValidators = exports.getCommonNumberValidators = exports.getValidatorFromConfigElseEmpty = exports.getCommonTextValidators = exports.getValueForReferencedModel = exports.getValueForModelInstance = exports.isReferencedProperty = void 0;
|
|
15
|
+
exports.NULL_METHOD = exports.NULL_ENDPOINT = exports.populateApiInformation = exports.buildValidEndpoint = exports.getModelName = exports.isModelInstance = exports.mergeValidators = exports.getCommonNumberValidators = exports.getValidatorFromConfigElseEmpty = exports.getCommonTextValidators = exports.getValueForReferencedModel = exports.getValueForModelInstance = exports.isReferencedProperty = void 0;
|
|
16
|
+
const openapi_types_1 = require("openapi-types");
|
|
17
|
+
const kebabCase_1 = __importDefault(require("lodash/kebabCase"));
|
|
18
|
+
const merge_1 = __importDefault(require("lodash/merge"));
|
|
16
19
|
const get_1 = __importDefault(require("lodash/get"));
|
|
20
|
+
const types_1 = require("./types");
|
|
17
21
|
const utils_1 = require("./utils");
|
|
18
22
|
const validation_1 = require("./validation");
|
|
23
|
+
var HttpMethods = openapi_types_1.OpenAPIV3.HttpMethods;
|
|
24
|
+
const NULL_ENDPOINT = 'NULL';
|
|
25
|
+
exports.NULL_ENDPOINT = NULL_ENDPOINT;
|
|
26
|
+
const NULL_METHOD = HttpMethods.HEAD;
|
|
27
|
+
exports.NULL_METHOD = NULL_METHOD;
|
|
28
|
+
const ID_KEY = ':id';
|
|
19
29
|
const getValueForReferencedModel = (modelInstance, path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
30
|
const [head, tail] = (0, utils_1.createHeadAndTail)(path.split('.'), '.');
|
|
21
31
|
// If there are no nested keys, just return the reference id.
|
|
22
32
|
if (!tail) {
|
|
23
|
-
return modelInstance.
|
|
33
|
+
return modelInstance.getReferences()[head]();
|
|
24
34
|
}
|
|
25
35
|
const modelReference = yield modelInstance.get[head]();
|
|
26
36
|
if (modelReference.toObj) {
|
|
@@ -41,7 +51,7 @@ const getValueForModelInstance = (modelInstance, path) => __awaiter(void 0, void
|
|
|
41
51
|
});
|
|
42
52
|
exports.getValueForModelInstance = getValueForModelInstance;
|
|
43
53
|
const isReferencedProperty = (modelInstance, key) => {
|
|
44
|
-
return modelInstance.
|
|
54
|
+
return modelInstance.getReferences()[key];
|
|
45
55
|
};
|
|
46
56
|
exports.isReferencedProperty = isReferencedProperty;
|
|
47
57
|
const getCommonTextValidators = (config) => {
|
|
@@ -51,9 +61,7 @@ const getCommonTextValidators = (config) => {
|
|
|
51
61
|
];
|
|
52
62
|
};
|
|
53
63
|
exports.getCommonTextValidators = getCommonTextValidators;
|
|
54
|
-
const getValidatorFromConfigElseEmpty = (input,
|
|
55
|
-
// eslint-disable-next-line no-unused-vars
|
|
56
|
-
validatorGetter) => {
|
|
64
|
+
const getValidatorFromConfigElseEmpty = (input, validatorGetter) => {
|
|
57
65
|
if (input !== undefined) {
|
|
58
66
|
const validator = validatorGetter(input);
|
|
59
67
|
return validator;
|
|
@@ -68,13 +76,117 @@ const getCommonNumberValidators = (config) => {
|
|
|
68
76
|
];
|
|
69
77
|
};
|
|
70
78
|
exports.getCommonNumberValidators = getCommonNumberValidators;
|
|
71
|
-
const mergeValidators = (config, validators) => {
|
|
79
|
+
const mergeValidators = (config, ...validators) => {
|
|
72
80
|
return [...validators, ...((config === null || config === void 0 ? void 0 : config.validators) ? config.validators : [])];
|
|
73
81
|
};
|
|
74
82
|
exports.mergeValidators = mergeValidators;
|
|
75
83
|
const isModelInstance = (obj) => {
|
|
76
84
|
// @ts-ignore
|
|
77
|
-
return Boolean(obj && obj.
|
|
85
|
+
return Boolean(obj && obj.getPrimaryKey);
|
|
78
86
|
};
|
|
79
87
|
exports.isModelInstance = isModelInstance;
|
|
88
|
+
const getModelName = (namespace, pluralName) => {
|
|
89
|
+
return (0, kebabCase_1.default)(`${namespace}-${pluralName}`).toLowerCase();
|
|
90
|
+
};
|
|
91
|
+
exports.getModelName = getModelName;
|
|
92
|
+
const buildValidEndpoint = (...components) => {
|
|
93
|
+
const suffix = components
|
|
94
|
+
.map(x => {
|
|
95
|
+
if (x === ID_KEY) {
|
|
96
|
+
return x;
|
|
97
|
+
}
|
|
98
|
+
return (0, kebabCase_1.default)(x);
|
|
99
|
+
})
|
|
100
|
+
.map(s => s.toLowerCase())
|
|
101
|
+
.join('/');
|
|
102
|
+
return `/${suffix}`;
|
|
103
|
+
};
|
|
104
|
+
exports.buildValidEndpoint = buildValidEndpoint;
|
|
105
|
+
const _generateRestInfo = (method, withId, ...additional) => (pluralName, namespace) => (existing) => {
|
|
106
|
+
if (existing) {
|
|
107
|
+
return Object.assign({
|
|
108
|
+
// Default add security, then override it.
|
|
109
|
+
security: {} }, existing);
|
|
110
|
+
}
|
|
111
|
+
const endpoint = withId
|
|
112
|
+
? buildValidEndpoint(namespace, pluralName, ID_KEY)
|
|
113
|
+
: buildValidEndpoint(namespace, pluralName, ...additional);
|
|
114
|
+
return {
|
|
115
|
+
method,
|
|
116
|
+
endpoint,
|
|
117
|
+
// We cannot auto create security.
|
|
118
|
+
security: {},
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const _apiMethodToRestInfoGenerator = {
|
|
122
|
+
[types_1.ApiMethod.create]: _generateRestInfo(HttpMethods.POST, false),
|
|
123
|
+
[types_1.ApiMethod.retrieve]: _generateRestInfo(HttpMethods.GET, true),
|
|
124
|
+
[types_1.ApiMethod.update]: _generateRestInfo(HttpMethods.PUT, true),
|
|
125
|
+
[types_1.ApiMethod.delete]: _generateRestInfo(HttpMethods.DELETE, true),
|
|
126
|
+
[types_1.ApiMethod.search]: _generateRestInfo(HttpMethods.POST, false, 'search'),
|
|
127
|
+
};
|
|
128
|
+
const getNullRestInfo = () => {
|
|
129
|
+
return {
|
|
130
|
+
endpoint: NULL_ENDPOINT,
|
|
131
|
+
method: NULL_METHOD,
|
|
132
|
+
security: {},
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
const _fillOutRestInfo = (pluralName, namespace, partial, nullRest) => {
|
|
136
|
+
const finishedRestInfo = Object.entries(types_1.ApiMethod).reduce((acc, [, method]) => {
|
|
137
|
+
const existing = partial && partial.rest && partial.rest[method]
|
|
138
|
+
? partial.rest[method]
|
|
139
|
+
: undefined;
|
|
140
|
+
const restInfo = _apiMethodToRestInfoGenerator[method](pluralName, namespace)(existing);
|
|
141
|
+
return (0, merge_1.default)(acc, {
|
|
142
|
+
[method]: restInfo,
|
|
143
|
+
});
|
|
144
|
+
}, nullRest);
|
|
145
|
+
return {
|
|
146
|
+
noPublish: false,
|
|
147
|
+
onlyPublish: [],
|
|
148
|
+
rest: finishedRestInfo,
|
|
149
|
+
createOnlyOne: (partial === null || partial === void 0 ? void 0 : partial.createOnlyOne) || false,
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
const populateApiInformation = (pluralName, namespace, partial) => {
|
|
153
|
+
const nullRest = {
|
|
154
|
+
delete: getNullRestInfo(),
|
|
155
|
+
search: getNullRestInfo(),
|
|
156
|
+
update: getNullRestInfo(),
|
|
157
|
+
retrieve: getNullRestInfo(),
|
|
158
|
+
create: getNullRestInfo(),
|
|
159
|
+
};
|
|
160
|
+
if (!partial) {
|
|
161
|
+
return _fillOutRestInfo(pluralName, namespace, partial, nullRest);
|
|
162
|
+
}
|
|
163
|
+
// Are we not going to publish at all? All "nulled" out.
|
|
164
|
+
if (partial.noPublish) {
|
|
165
|
+
return {
|
|
166
|
+
onlyPublish: [],
|
|
167
|
+
noPublish: true,
|
|
168
|
+
rest: nullRest,
|
|
169
|
+
createOnlyOne: false,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const rest = partial.rest || {};
|
|
173
|
+
// Should we only publish some but not all?
|
|
174
|
+
if (partial.onlyPublish && partial.onlyPublish.length > 0) {
|
|
175
|
+
return partial.onlyPublish.reduce((acc, method) => {
|
|
176
|
+
const restInfo = _apiMethodToRestInfoGenerator[method](pluralName, namespace)(rest[method]);
|
|
177
|
+
return (0, merge_1.default)(acc, {
|
|
178
|
+
rest: {
|
|
179
|
+
[method]: restInfo,
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
}, {
|
|
183
|
+
noPublish: false,
|
|
184
|
+
onlyPublish: partial.onlyPublish,
|
|
185
|
+
createOnlyOne: Boolean(partial.createOnlyOne),
|
|
186
|
+
rest: nullRest,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return _fillOutRestInfo(pluralName, namespace, partial, nullRest);
|
|
190
|
+
};
|
|
191
|
+
exports.populateApiInformation = populateApiInformation;
|
|
80
192
|
//# sourceMappingURL=lib.js.map
|
package/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAA4B;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
package/models.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ModelFactory, RestInfo } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* An out of the box ModelFactory that can create Models.
|
|
4
|
+
* @param options - Any additional model options
|
|
5
|
+
* @returns A simple Model function ready for creating models. See {@link ModelType}
|
|
6
|
+
*/
|
|
3
7
|
declare const Model: ModelFactory;
|
|
4
|
-
|
|
8
|
+
/**
|
|
9
|
+
* A useful function for determining if a RestInfo found in an ApiInfo is "null" or not.
|
|
10
|
+
* That is, whether it should be used and considered.
|
|
11
|
+
* @param restInfo
|
|
12
|
+
*/
|
|
13
|
+
declare const isNullRestInfo: (restInfo: RestInfo) => boolean;
|
|
14
|
+
export { Model, isNullRestInfo };
|
package/models.js
CHANGED
|
@@ -3,27 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.isNullRestInfo = exports.Model = void 0;
|
|
7
7
|
const merge_1 = __importDefault(require("lodash/merge"));
|
|
8
8
|
const serialization_1 = require("./serialization");
|
|
9
9
|
const validation_1 = require("./validation");
|
|
10
|
-
const
|
|
11
|
-
const lazy_1 = require("./lazy");
|
|
10
|
+
const lib_1 = require("./lib");
|
|
12
11
|
const utils_1 = require("./utils");
|
|
13
12
|
const _defaultOptions = () => ({
|
|
14
|
-
instanceCreatedCallback:
|
|
13
|
+
instanceCreatedCallback: undefined,
|
|
15
14
|
});
|
|
16
15
|
const _convertOptions = (options) => {
|
|
17
16
|
const r = (0, merge_1.default)({}, _defaultOptions(), options);
|
|
18
17
|
return r;
|
|
19
18
|
};
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
id: (0, properties_1.UniqueId)({ required: true }),
|
|
23
|
-
}, modelDefinition.properties);
|
|
24
|
-
return Object.assign(Object.assign({}, modelDefinition), { getPrimaryKeyName: () => 'id', properties });
|
|
19
|
+
const _toModelDefinition = (minimal) => {
|
|
20
|
+
return Object.assign({ singularName: (0, utils_1.singularize)(minimal.pluralName), displayName: (0, utils_1.toTitleCase)(minimal.pluralName), description: '', primaryKeyName: 'id', modelValidators: [] }, minimal);
|
|
25
21
|
};
|
|
26
|
-
const
|
|
22
|
+
const _validateModelDefinition = (modelDefinition) => {
|
|
23
|
+
const primaryKeyProperty =
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
modelDefinition.properties[modelDefinition.primaryKeyName || 'id'];
|
|
26
|
+
if (!primaryKeyProperty) {
|
|
27
|
+
throw new Error(`Property missing for primaryKey named ${modelDefinition.primaryKeyName}`);
|
|
28
|
+
}
|
|
29
|
+
if (!modelDefinition.pluralName) {
|
|
30
|
+
throw new Error(`Must include pluralName for model.`);
|
|
31
|
+
}
|
|
32
|
+
if (!modelDefinition.namespace) {
|
|
33
|
+
throw new Error(`Must include namespace for model.`);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* An out of the box ModelFactory that can create Models.
|
|
38
|
+
* @param options - Any additional model options
|
|
39
|
+
* @returns A simple Model function ready for creating models. See {@link ModelType}
|
|
40
|
+
*/
|
|
41
|
+
const Model = (minimalModelDefinitions, options) => {
|
|
42
|
+
_validateModelDefinition(minimalModelDefinitions);
|
|
27
43
|
/*
|
|
28
44
|
* This non-functional approach is specifically used to
|
|
29
45
|
* allow instances to be able to refer back to its parent without
|
|
@@ -34,11 +50,8 @@ const BaseModel = (pluralName, modelDefinition, options) => {
|
|
|
34
50
|
// eslint-disable-next-line functional/no-let
|
|
35
51
|
let model = null;
|
|
36
52
|
const theOptions = _convertOptions(options);
|
|
37
|
-
modelDefinition =
|
|
38
|
-
|
|
39
|
-
: modelDefinition;
|
|
40
|
-
// @ts-ignore
|
|
41
|
-
const getPrimaryKeyName = () => modelDefinition.getPrimaryKeyName();
|
|
53
|
+
const modelDefinition = _toModelDefinition(minimalModelDefinitions);
|
|
54
|
+
const getPrimaryKeyName = () => modelDefinition.primaryKeyName;
|
|
42
55
|
const getPrimaryKey = (loadedInternals) => {
|
|
43
56
|
const property = loadedInternals.get[getPrimaryKeyName()];
|
|
44
57
|
return property();
|
|
@@ -51,11 +64,13 @@ const BaseModel = (pluralName, modelDefinition, options) => {
|
|
|
51
64
|
validators: {},
|
|
52
65
|
references: {},
|
|
53
66
|
};
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
67
|
+
const prop = Object.entries(modelDefinition.properties);
|
|
68
|
+
const loadedInternals = prop.reduce((acc, [key, property]) => {
|
|
69
|
+
const propertyGetter = (0, utils_1.memoizeSync)(() => property.createGetter(
|
|
70
|
+
//@ts-ignore
|
|
71
|
+
instanceValues[key], instanceValues,
|
|
72
|
+
// NOTE: By the time it gets here, it has already been implemented.
|
|
73
|
+
instance)());
|
|
59
74
|
const propertyValidator = property.getValidator(propertyGetter);
|
|
60
75
|
const fleshedOutInstanceProperties = {
|
|
61
76
|
get: {
|
|
@@ -78,19 +93,29 @@ const BaseModel = (pluralName, modelDefinition, options) => {
|
|
|
78
93
|
return (0, merge_1.default)(acc, fleshedOutInstanceProperties, referencedProperty);
|
|
79
94
|
}, startingInternals);
|
|
80
95
|
const getModel = () => model;
|
|
81
|
-
|
|
82
|
-
|
|
96
|
+
// We are casting this, because the output type is really complicated.
|
|
97
|
+
// and memoizing this is very important.
|
|
98
|
+
// @ts-ignore
|
|
99
|
+
const toObj = (0, utils_1.memoizeAsync)(() => {
|
|
100
|
+
return (0, serialization_1.toJsonAble)(loadedInternals.get)();
|
|
101
|
+
});
|
|
102
|
+
const validate = (0, utils_1.memoizeAsync)((options = {}) => {
|
|
83
103
|
return Promise.resolve().then(() => {
|
|
84
|
-
return (0, validation_1.createModelValidator)(loadedInternals.validators, modelDefinition.modelValidators
|
|
104
|
+
return (0, validation_1.createModelValidator)(loadedInternals.validators, modelDefinition.modelValidators)(instance, options);
|
|
85
105
|
});
|
|
86
|
-
};
|
|
87
|
-
|
|
106
|
+
});
|
|
107
|
+
const getReferences = () => loadedInternals.references;
|
|
108
|
+
const getValidators = () => loadedInternals.validators;
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
instance = {
|
|
111
|
+
get: loadedInternals.get,
|
|
112
|
+
getReferences,
|
|
113
|
+
getValidators,
|
|
88
114
|
getModel,
|
|
89
115
|
toObj,
|
|
90
116
|
getPrimaryKey: () => getPrimaryKey(loadedInternals),
|
|
91
|
-
getPrimaryKeyName,
|
|
92
117
|
validate,
|
|
93
|
-
}
|
|
118
|
+
};
|
|
94
119
|
if (theOptions.instanceCreatedCallback) {
|
|
95
120
|
const toCall = Array.isArray(theOptions.instanceCreatedCallback)
|
|
96
121
|
? theOptions.instanceCreatedCallback
|
|
@@ -99,21 +124,31 @@ const BaseModel = (pluralName, modelDefinition, options) => {
|
|
|
99
124
|
}
|
|
100
125
|
return instance;
|
|
101
126
|
};
|
|
127
|
+
const getApiInfo = (0, utils_1.memoizeSync)(() => {
|
|
128
|
+
return (0, lib_1.populateApiInformation)(modelDefinition.pluralName, modelDefinition.namespace, modelDefinition.api);
|
|
129
|
+
});
|
|
102
130
|
// This sets the model that is used by the instances later.
|
|
103
|
-
|
|
104
|
-
|
|
131
|
+
model = {
|
|
132
|
+
/**
|
|
133
|
+
* Creates a model instance.
|
|
134
|
+
*/
|
|
105
135
|
create,
|
|
106
|
-
getName: () => pluralName,
|
|
107
|
-
|
|
108
|
-
getDisplayName: () => modelDefinition.displayName || (0, utils_1.toTitleCase)(pluralName),
|
|
109
|
-
getModelDefinition: () => modelDefinition,
|
|
110
|
-
getPrimaryKeyName,
|
|
136
|
+
getName: () => (0, lib_1.getModelName)(modelDefinition.namespace, modelDefinition.pluralName),
|
|
137
|
+
getModelDefinition: (0, utils_1.memoizeSync)(() => modelDefinition),
|
|
111
138
|
getPrimaryKey,
|
|
112
|
-
getOptions: () => theOptions,
|
|
113
|
-
|
|
139
|
+
getOptions: () => (Object.assign({}, theOptions)),
|
|
140
|
+
getApiInfo,
|
|
141
|
+
};
|
|
114
142
|
return model;
|
|
115
143
|
};
|
|
116
|
-
exports.BaseModel = BaseModel;
|
|
117
|
-
const Model = BaseModel;
|
|
118
144
|
exports.Model = Model;
|
|
145
|
+
/**
|
|
146
|
+
* A useful function for determining if a RestInfo found in an ApiInfo is "null" or not.
|
|
147
|
+
* That is, whether it should be used and considered.
|
|
148
|
+
* @param restInfo
|
|
149
|
+
*/
|
|
150
|
+
const isNullRestInfo = (restInfo) => {
|
|
151
|
+
return restInfo.method === lib_1.NULL_METHOD && restInfo.endpoint === lib_1.NULL_ENDPOINT;
|
|
152
|
+
};
|
|
153
|
+
exports.isNullRestInfo = isNullRestInfo;
|
|
119
154
|
//# sourceMappingURL=models.js.map
|
package/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAgC;AAChC,mDAA4C;AAC5C,6CAAmD;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functional-models",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Functional models is ooey gooey framework for building and using awesome models EVERYWHERE.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "mocha -r ts
|
|
9
|
-
"
|
|
8
|
+
"test": "mocha -r tsx --extensions ts,tsx 'test/**/*.{ts,tsx}'",
|
|
9
|
+
"mocha": "mocha -r tsx",
|
|
10
|
+
"test:coverage": "TS_NODE_PROJECT=tsconfig.test.json nyc npm run test",
|
|
10
11
|
"test:watch": "nodemon -e '*' --watch test --watch src --exec npm run test:coverage",
|
|
11
12
|
"commit": "cz",
|
|
12
13
|
"feature-tests": "./node_modules/.bin/cucumber-js -p default",
|
|
13
14
|
"coverage": "nyc --all --reporter=lcov npm test",
|
|
14
|
-
"build": "
|
|
15
|
+
"build": "rm -Rf ./dist && tsc && cp package.json ./dist && cp README.md ./dist",
|
|
15
16
|
"build:watch": "nodemon -e '*' --watch ./src --exec npm run build",
|
|
16
17
|
"prettier": "prettier --write .",
|
|
17
18
|
"eslint": "eslint . --fix",
|
|
@@ -22,6 +23,8 @@
|
|
|
22
23
|
"url": "git+https://github.com/monolithst/functional-models.git"
|
|
23
24
|
},
|
|
24
25
|
"keywords": [
|
|
26
|
+
"framework",
|
|
27
|
+
"models",
|
|
25
28
|
"orm",
|
|
26
29
|
"modeling",
|
|
27
30
|
"functional"
|
|
@@ -41,6 +44,10 @@
|
|
|
41
44
|
},
|
|
42
45
|
"homepage": "https://github.com/monolithst/functional-models#readme",
|
|
43
46
|
"nyc": {
|
|
47
|
+
"branches": 90,
|
|
48
|
+
"lines": 100,
|
|
49
|
+
"functions": 100,
|
|
50
|
+
"statements": 100,
|
|
44
51
|
"extends": "@istanbuljs/nyc-config-typescript",
|
|
45
52
|
"check-coverage": true,
|
|
46
53
|
"all": true,
|
|
@@ -67,37 +74,43 @@
|
|
|
67
74
|
"devDependencies": {
|
|
68
75
|
"@cucumber/cucumber": "^11.0.0",
|
|
69
76
|
"@date-fns/utc": "^1.2.0",
|
|
77
|
+
"@eslint/compat": "^1.2.0",
|
|
78
|
+
"@eslint/eslintrc": "^3.1.0",
|
|
79
|
+
"@eslint/js": "^9.12.0",
|
|
70
80
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
71
81
|
"@types/async-lock": "^1.1.3",
|
|
72
|
-
"@types/chai": "^
|
|
82
|
+
"@types/chai": "^5.0.1",
|
|
73
83
|
"@types/chai-as-promised": "^7.1.4",
|
|
74
84
|
"@types/lodash": "^4.14.176",
|
|
75
85
|
"@types/mocha": "^9.0.0",
|
|
86
|
+
"@types/node": "^22.10.7",
|
|
76
87
|
"@types/proxyquire": "^1.3.28",
|
|
77
88
|
"@types/sinon": "^10.0.6",
|
|
78
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
79
|
-
"@typescript-eslint/parser": "^
|
|
80
|
-
"
|
|
81
|
-
"chai": "^4.3.0",
|
|
89
|
+
"@typescript-eslint/eslint-plugin": "^8.20.0",
|
|
90
|
+
"@typescript-eslint/parser": "^8.20.0",
|
|
91
|
+
"chai": "^5.1.2",
|
|
82
92
|
"chai-as-promised": "^7.1.1",
|
|
83
93
|
"cz-conventional-changelog": "^3.3.0",
|
|
84
|
-
"eslint": "^
|
|
85
|
-
"eslint-config-prettier": "^9.
|
|
86
|
-
"eslint-import-resolver-typescript": "^3.6.
|
|
87
|
-
"eslint-plugin-functional": "
|
|
88
|
-
"eslint-plugin-import": "^2.
|
|
89
|
-
"
|
|
94
|
+
"eslint": "^9.18.0",
|
|
95
|
+
"eslint-config-prettier": "^9.1.0",
|
|
96
|
+
"eslint-import-resolver-typescript": "^3.6.3",
|
|
97
|
+
"eslint-plugin-functional": "~7.1.0",
|
|
98
|
+
"eslint-plugin-import": "^2.31.0",
|
|
99
|
+
"esprima": "^4.0.1",
|
|
100
|
+
"globals": "^15.14.0",
|
|
101
|
+
"mocha": "^11.0.1",
|
|
90
102
|
"nodemon": "^3.1.0",
|
|
91
|
-
"nyc": "^
|
|
103
|
+
"nyc": "^17.1.0",
|
|
92
104
|
"proxyquire": "^2.1.3",
|
|
93
105
|
"sinon": "^18.0.1",
|
|
94
|
-
"ts-node": "^
|
|
95
|
-
"
|
|
106
|
+
"ts-node": "^9.1.1",
|
|
107
|
+
"tsx": "^4.19.2",
|
|
108
|
+
"typescript": "^5.7.3"
|
|
96
109
|
},
|
|
97
110
|
"dependencies": {
|
|
98
111
|
"async-lock": "^1.3.0",
|
|
99
|
-
"date-fns": "^3.6.0",
|
|
100
112
|
"get-random-values": "^1.2.2",
|
|
101
|
-
"lodash": "^4.17.21"
|
|
113
|
+
"lodash": "^4.17.21",
|
|
114
|
+
"openapi-types": "^12.1.3"
|
|
102
115
|
}
|
|
103
116
|
}
|