functional-models 3.10.0 → 3.11.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.
Files changed (83) hide show
  1. package/cjs/errors.cjs +38 -0
  2. package/cjs/errors.cjs.map +7 -0
  3. package/cjs/index.cjs +2426 -0
  4. package/cjs/index.cjs.map +7 -0
  5. package/cjs/lib.cjs +431 -0
  6. package/cjs/lib.cjs.map +7 -0
  7. package/cjs/models.cjs +571 -0
  8. package/cjs/models.cjs.map +7 -0
  9. package/cjs/orm/index.cjs +1765 -0
  10. package/cjs/orm/index.cjs.map +7 -0
  11. package/cjs/orm/internal-libs.cjs +136 -0
  12. package/cjs/orm/internal-libs.cjs.map +7 -0
  13. package/cjs/orm/libs.cjs +88 -0
  14. package/cjs/orm/libs.cjs.map +7 -0
  15. package/cjs/orm/models.cjs +1027 -0
  16. package/cjs/orm/models.cjs.map +7 -0
  17. package/cjs/orm/properties.cjs +989 -0
  18. package/cjs/orm/properties.cjs.map +7 -0
  19. package/cjs/orm/query.cjs +376 -0
  20. package/cjs/orm/query.cjs.map +7 -0
  21. package/cjs/orm/types.cjs +59 -0
  22. package/cjs/orm/types.cjs.map +7 -0
  23. package/cjs/orm/validation.cjs +301 -0
  24. package/cjs/orm/validation.cjs.map +7 -0
  25. package/cjs/properties.cjs +998 -0
  26. package/cjs/properties.cjs.map +7 -0
  27. package/cjs/serialization.cjs +75 -0
  28. package/cjs/serialization.cjs.map +7 -0
  29. package/cjs/types.cjs +65 -0
  30. package/cjs/types.cjs.map +7 -0
  31. package/cjs/utils.cjs +187 -0
  32. package/cjs/utils.cjs.map +7 -0
  33. package/cjs/validation.cjs +431 -0
  34. package/cjs/validation.cjs.map +7 -0
  35. package/errors.js +3 -4
  36. package/errors.js.map +1 -1
  37. package/index.d.ts +13 -13
  38. package/index.js +13 -52
  39. package/index.js.map +1 -1
  40. package/lib.d.ts +2 -2
  41. package/lib.js +45 -65
  42. package/lib.js.map +1 -1
  43. package/models.d.ts +1 -1
  44. package/models.js +22 -30
  45. package/models.js.map +1 -1
  46. package/orm/index.d.ts +9 -9
  47. package/orm/index.js +9 -48
  48. package/orm/index.js.map +1 -1
  49. package/orm/internal-libs.js +7 -11
  50. package/orm/internal-libs.js.map +1 -1
  51. package/orm/libs.d.ts +1 -1
  52. package/orm/libs.js +8 -16
  53. package/orm/libs.js.map +1 -1
  54. package/orm/models.d.ts +2 -2
  55. package/orm/models.js +20 -26
  56. package/orm/models.js.map +1 -1
  57. package/orm/properties.d.ts +22 -22
  58. package/orm/properties.js +26 -36
  59. package/orm/properties.js.map +1 -1
  60. package/orm/query.d.ts +1 -1
  61. package/orm/query.js +31 -52
  62. package/orm/query.js.map +1 -1
  63. package/orm/types.d.ts +1 -1
  64. package/orm/types.js +7 -10
  65. package/orm/types.js.map +1 -1
  66. package/orm/validation.d.ts +2 -2
  67. package/orm/validation.js +5 -13
  68. package/orm/validation.js.map +1 -1
  69. package/package.json +50 -65
  70. package/properties.d.ts +21 -21
  71. package/properties.js +65 -94
  72. package/properties.js.map +1 -1
  73. package/serialization.d.ts +1 -1
  74. package/serialization.js +3 -9
  75. package/serialization.js.map +1 -1
  76. package/types.js +4 -6
  77. package/types.js.map +1 -1
  78. package/utils.d.ts +2 -1
  79. package/utils.js +8 -23
  80. package/utils.js.map +1 -1
  81. package/validation.d.ts +1 -1
  82. package/validation.js +19 -50
  83. package/validation.js.map +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils.ts", "../../node_modules/uuid/dist-node/stringify.js", "../../node_modules/uuid/dist-node/rng.js", "../../node_modules/uuid/dist-node/v4.js"],
4
+ "sourcesContent": ["import AsyncLock from 'async-lock'\nimport { v4 as uuidv4 } from 'uuid'\n// @ts-ignore\nimport getRandomValuesFunc from 'get-random-values'\n\nconst getRandomValues = (): Uint8Array => {\n const array = new Uint8Array(1)\n if (typeof window !== 'undefined') {\n if (window.crypto) {\n return window.crypto.getRandomValues(array)\n }\n // @ts-ignore\n if (window.msCrypto) {\n // @ts-ignore\n return window.msCrypto.getRandomValues(array)\n }\n }\n\n return getRandomValuesFunc(array)\n}\n\nconst toTitleCase = (string: string) => {\n return `${string.slice(0, 1).toUpperCase()}${string.slice(1)}`\n}\n\nconst loweredTitleCase = (string: string) => {\n return `${string.slice(0, 1).toLowerCase()}${string.slice(1)}`\n}\n\nconst isPromise = <T>(something: any): something is Promise<T> => {\n if (something?.then) {\n return true\n }\n return false\n}\n\nenum PluralEndings {\n ves = 'fe',\n ies = 'y',\n i = 'us',\n zes = 'ze',\n ses = 's',\n es = 'e',\n s = '',\n}\nconst _singularizingRe = new RegExp(\n `(${Object.keys(PluralEndings).join('|')})$`,\n 'u'\n)\n\nconst singularize = (word: string) => {\n // @ts-ignore\n return word.replace(_singularizingRe, r => PluralEndings[r])\n}\n\nconst createHeadAndTail = (values: readonly string[], joiner: string) => {\n const head = values[0]\n const tail = values.slice(1).join(joiner)\n return [head, tail]\n}\n\nconst flowFindFirst =\n <T, TResult>(funcs: ((t: T) => undefined | TResult)[]) =>\n (input: T) => {\n return funcs.reduce((acc: undefined | TResult, func) => {\n if (acc) {\n return acc\n }\n return func(input)\n }, undefined) as string | TResult\n }\n\nconst memoizeSync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n /* eslint-disable functional/no-let */\n let value: any = undefined\n let called = false\n return (...args: A): T => {\n if (!called) {\n called = true\n value = method(...args)\n }\n\n return value\n }\n /* eslint-enable functional/no-let */\n}\n\nconst memoizeAsync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n const key = uuidv4()\n const lock = new AsyncLock()\n /* eslint-disable functional/no-let */\n let value: any = undefined\n let called = false\n return async (...args: A): Promise<T> => {\n return lock.acquire(key, async () => {\n if (!called) {\n called = true\n value = await method(...args)\n }\n\n return value\n })\n }\n /* eslint-enable functional/no-let */\n}\n\nconst createUuid = uuidv4\n\nexport {\n getRandomValues,\n loweredTitleCase,\n toTitleCase,\n isPromise,\n createHeadAndTail,\n singularize,\n flowFindFirst,\n memoizeSync,\n memoizeAsync,\n createUuid,\n}\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n"],
5
+ "mappings": "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",
6
+ "names": ["getRandomValuesFunc", "PluralEndings", "AsyncLock"]
7
+ }
@@ -0,0 +1,431 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/validation.ts
31
+ var validation_exports = {};
32
+ __export(validation_exports, {
33
+ aggregateValidator: () => aggregateValidator,
34
+ arrayType: () => arrayType,
35
+ choices: () => choices,
36
+ createModelValidator: () => createModelValidator,
37
+ createPropertyValidator: () => createPropertyValidator,
38
+ emptyValidator: () => emptyValidator,
39
+ isArray: () => isArray,
40
+ isBoolean: () => isBoolean,
41
+ isDate: () => isDate,
42
+ isInteger: () => isInteger,
43
+ isNumber: () => isNumber,
44
+ isObject: () => isObject,
45
+ isRequired: () => isRequired,
46
+ isString: () => isString,
47
+ isType: () => isType,
48
+ isValid: () => isValid,
49
+ isValidUuid: () => isValidUuid,
50
+ maxNumber: () => maxNumber,
51
+ maxTextLength: () => maxTextLength,
52
+ meetsRegex: () => meetsRegex,
53
+ minNumber: () => minNumber,
54
+ minTextLength: () => minTextLength,
55
+ multiValidator: () => multiValidator,
56
+ objectValidator: () => objectValidator,
57
+ optionalValidator: () => optionalValidator,
58
+ referenceTypeMatch: () => referenceTypeMatch
59
+ });
60
+ module.exports = __toCommonJS(validation_exports);
61
+ var import_isEmpty = __toESM(require("lodash/isEmpty.js"), 1);
62
+ var import_merge = __toESM(require("lodash/merge.js"), 1);
63
+ var import_flatMap = __toESM(require("lodash/flatMap.js"), 1);
64
+ var import_get = __toESM(require("lodash/get.js"), 1);
65
+
66
+ // src/utils.ts
67
+ var import_async_lock = __toESM(require("async-lock"), 1);
68
+ var import_get_random_values = __toESM(require("get-random-values"), 1);
69
+ var PluralEndings = /* @__PURE__ */ ((PluralEndings2) => {
70
+ PluralEndings2["ves"] = "fe";
71
+ PluralEndings2["ies"] = "y";
72
+ PluralEndings2["i"] = "us";
73
+ PluralEndings2["zes"] = "ze";
74
+ PluralEndings2["ses"] = "s";
75
+ PluralEndings2["es"] = "e";
76
+ PluralEndings2["s"] = "";
77
+ return PluralEndings2;
78
+ })(PluralEndings || {});
79
+ var _singularizingRe = new RegExp(
80
+ `(${Object.keys(PluralEndings).join("|")})$`,
81
+ "u"
82
+ );
83
+ var flowFindFirst = (funcs) => (input) => {
84
+ return funcs.reduce((acc, func) => {
85
+ if (acc) {
86
+ return acc;
87
+ }
88
+ return func(input);
89
+ }, void 0);
90
+ };
91
+
92
+ // src/validation.ts
93
+ var multiValidator = (validators) => {
94
+ const flow = flowFindFirst(
95
+ validators
96
+ );
97
+ return flow;
98
+ };
99
+ var filterEmpty = (array) => {
100
+ return array.filter((x) => x);
101
+ };
102
+ var _trueOrError = (method, error) => (value) => {
103
+ if (method(value) === false) {
104
+ return error;
105
+ }
106
+ return void 0;
107
+ };
108
+ var _typeOrError = (type, errorMessage) => (value) => {
109
+ if (typeof value !== type) {
110
+ return errorMessage;
111
+ }
112
+ return void 0;
113
+ };
114
+ var isType = (type) => (value) => {
115
+ return _typeOrError(type, `Must be a ${type}`)(value);
116
+ };
117
+ var isNumber = isType("number");
118
+ var isInteger = _trueOrError(Number.isInteger, "Must be an integer");
119
+ var isObject = multiValidator([
120
+ isType("object"),
121
+ (x) => Array.isArray(x) ? "Must be an object, but got an array" : void 0
122
+ ]);
123
+ var isBoolean = isType("boolean");
124
+ var isString = isType("string");
125
+ var isArray = _trueOrError(
126
+ (v) => Array.isArray(v),
127
+ "Value is not an array"
128
+ );
129
+ var PRIMITIVE_TO_SPECIAL_TYPE_VALIDATOR = {
130
+ ["boolean" /* boolean */]: isBoolean,
131
+ ["string" /* string */]: isString,
132
+ ["integer" /* integer */]: isInteger,
133
+ ["number" /* number */]: isNumber,
134
+ ["object" /* object */]: isObject
135
+ };
136
+ var arrayType = (type) => (value) => {
137
+ const arrayError = isArray(value);
138
+ if (arrayError) {
139
+ return arrayError;
140
+ }
141
+ const validator = PRIMITIVE_TO_SPECIAL_TYPE_VALIDATOR[type] || isType(type);
142
+ return value.reduce(
143
+ (acc, v) => {
144
+ if (acc) {
145
+ return acc;
146
+ }
147
+ return validator(v);
148
+ },
149
+ void 0
150
+ );
151
+ };
152
+ var meetsRegex = (regex, flags, errorMessage = "Format was invalid") => (value) => {
153
+ const reg = new RegExp(regex, flags);
154
+ return _trueOrError((v) => reg.test(v), errorMessage)(value);
155
+ };
156
+ var choices = (choiceArray) => (value) => {
157
+ if (Array.isArray(value)) {
158
+ const bad = value.find((v) => !choiceArray.includes(v));
159
+ if (bad) {
160
+ return `${bad} is not a valid choice`;
161
+ }
162
+ } else {
163
+ if (!choiceArray.includes(value)) {
164
+ return `${value} is not a valid choice`;
165
+ }
166
+ }
167
+ return void 0;
168
+ };
169
+ var isDate = (value) => {
170
+ if (!value) {
171
+ return "Date value is empty";
172
+ }
173
+ if (!value.toISOString) {
174
+ return "Value is not a date";
175
+ }
176
+ return void 0;
177
+ };
178
+ var isRequired = (value) => {
179
+ if (value === true || value === false) {
180
+ return void 0;
181
+ }
182
+ if (isNumber(value) === void 0) {
183
+ return void 0;
184
+ }
185
+ const empty = (0, import_isEmpty.default)(value);
186
+ if (empty) {
187
+ if (isDate(value)) {
188
+ return "A value is required";
189
+ }
190
+ }
191
+ return void 0;
192
+ };
193
+ var maxNumber = (max) => (value) => {
194
+ const numberError = isNumber(value);
195
+ if (numberError) {
196
+ return numberError;
197
+ }
198
+ if (value && value > max) {
199
+ return `The maximum is ${max}`;
200
+ }
201
+ return void 0;
202
+ };
203
+ var minNumber = (min) => (value) => {
204
+ const numberError = isNumber(value);
205
+ if (numberError) {
206
+ return numberError;
207
+ }
208
+ if (value && value < min) {
209
+ return `The minimum is ${min}`;
210
+ }
211
+ return void 0;
212
+ };
213
+ var maxTextLength = (max) => (value) => {
214
+ const stringError = isString(value);
215
+ if (stringError) {
216
+ return stringError;
217
+ }
218
+ if (value && value.length > max) {
219
+ return `The maximum length is ${max}`;
220
+ }
221
+ return void 0;
222
+ };
223
+ var minTextLength = (min) => (value) => {
224
+ const stringError = isString(value);
225
+ if (stringError) {
226
+ return stringError;
227
+ }
228
+ if (value && value.length < min) {
229
+ return `The minimum length is ${min}`;
230
+ }
231
+ return void 0;
232
+ };
233
+ var aggregateValidator = (value, methodOrMethods) => {
234
+ const toDo = Array.isArray(methodOrMethods) ? methodOrMethods : [methodOrMethods];
235
+ const _aggregativeValidator = async (model, instanceData, propertyConfiguration) => {
236
+ const values = await Promise.all(
237
+ toDo.map((method) => {
238
+ return method(value, model, instanceData, propertyConfiguration);
239
+ })
240
+ );
241
+ return filterEmpty(values);
242
+ };
243
+ return _aggregativeValidator;
244
+ };
245
+ var emptyValidator = () => void 0;
246
+ var _boolChoice = (method) => (configValue) => {
247
+ const func = method(configValue);
248
+ const validatorWrapper = func;
249
+ return validatorWrapper;
250
+ };
251
+ var simpleFuncWrap = (validator) => () => {
252
+ return validator;
253
+ };
254
+ var includeOrDont = (method) => (configValue) => {
255
+ if (configValue === false) {
256
+ return emptyValidator;
257
+ }
258
+ const func = method();
259
+ const validatorWrapper = func;
260
+ return validatorWrapper;
261
+ };
262
+ var CONFIG_TO_VALIDATE_METHOD = () => ({
263
+ required: includeOrDont(simpleFuncWrap(isRequired)),
264
+ isInteger: _boolChoice(simpleFuncWrap(isInteger)),
265
+ isNumber: _boolChoice(simpleFuncWrap(isNumber)),
266
+ isString: _boolChoice(simpleFuncWrap(isString)),
267
+ isArray: _boolChoice(simpleFuncWrap(isArray)),
268
+ isBoolean: _boolChoice(simpleFuncWrap(isBoolean)),
269
+ choices: _boolChoice(choices)
270
+ });
271
+ var createPropertyValidator = (valueGetter, config) => {
272
+ const _propertyValidator = async (model, instanceData, propertyConfiguration) => {
273
+ return Promise.resolve().then(async () => {
274
+ const configToValidateMethod = CONFIG_TO_VALIDATE_METHOD();
275
+ if (!config) {
276
+ config = {};
277
+ }
278
+ const validators = [
279
+ ...Object.entries(config).map(([key, value2]) => {
280
+ const method = configToValidateMethod[key];
281
+ if (method) {
282
+ return method(value2);
283
+ }
284
+ return emptyValidator;
285
+ }),
286
+ ...config.validators ? config.validators : []
287
+ ].filter((x) => x);
288
+ const value = await valueGetter();
289
+ const isRequiredValue = config.required ? true : validators.includes(isRequired);
290
+ if (!value && !isRequiredValue) {
291
+ return [];
292
+ }
293
+ const validator = aggregateValidator(value, validators);
294
+ const errors = await validator(model, instanceData, propertyConfiguration);
295
+ return [...new Set((0, import_flatMap.default)(errors))];
296
+ });
297
+ };
298
+ return _propertyValidator;
299
+ };
300
+ var createModelValidator = (validators, modelValidators) => {
301
+ const _modelValidator = async (instance, propertyConfiguration) => {
302
+ return Promise.resolve().then(async () => {
303
+ if (!instance) {
304
+ throw new Error(`Instance cannot be empty`);
305
+ }
306
+ const model = instance.getModel();
307
+ const keysAndFunctions = Object.entries(validators);
308
+ const instanceData = await instance.toObj();
309
+ const propertyValidationErrors = await Promise.all(
310
+ keysAndFunctions.map(async ([key, validator]) => {
311
+ return [
312
+ key,
313
+ await validator(model, instanceData, propertyConfiguration)
314
+ ];
315
+ })
316
+ );
317
+ const modelValidationErrors = (await Promise.all(
318
+ modelValidators ? modelValidators.map((validator) => {
319
+ return validator(model, instanceData, propertyConfiguration);
320
+ }) : []
321
+ )).filter((x) => x);
322
+ const propertyErrors = propertyValidationErrors.filter(([, errors]) => Boolean(errors) && errors.length > 0).reduce((acc, [key, errors]) => {
323
+ return (0, import_merge.default)(acc, { [String(key)]: errors });
324
+ }, {});
325
+ const final = modelValidationErrors.length > 0 ? (0, import_merge.default)(propertyErrors, { overall: modelValidationErrors }) : propertyErrors;
326
+ if ((0, import_isEmpty.default)(final)) {
327
+ return void 0;
328
+ }
329
+ return final;
330
+ });
331
+ };
332
+ return _modelValidator;
333
+ };
334
+ var isValid = (errors) => {
335
+ return Object.keys(errors).length < 1;
336
+ };
337
+ var referenceTypeMatch = (referencedModel) => {
338
+ return (value) => {
339
+ const theType = typeof value;
340
+ switch (theType) {
341
+ case "string":
342
+ case "number":
343
+ case "undefined":
344
+ return void 0;
345
+ default:
346
+ break;
347
+ }
348
+ if (value === null) {
349
+ return void 0;
350
+ }
351
+ const model = typeof referencedModel === "function" ? referencedModel() : referencedModel;
352
+ const eModel = model.getName();
353
+ const aModel = value.getModel().getName();
354
+ if (eModel !== aModel) {
355
+ return `Model should be ${eModel} instead, received ${aModel}`;
356
+ }
357
+ return void 0;
358
+ };
359
+ };
360
+ var objectValidator = ({
361
+ required,
362
+ keyToValidators
363
+ }) => {
364
+ return (obj) => {
365
+ if (!obj) {
366
+ if (required) {
367
+ return "Must include a value";
368
+ }
369
+ return void 0;
370
+ }
371
+ const isNotObj = isObject(obj);
372
+ if (isNotObj) {
373
+ return isNotObj;
374
+ }
375
+ return Object.entries(keyToValidators).reduce((acc, [key, validator]) => {
376
+ const theValidator = Array.isArray(validator) ? multiValidator(validator) : validator;
377
+ const value = (0, import_get.default)(obj, key);
378
+ const error = theValidator(value);
379
+ if (error) {
380
+ return acc.concat(`${key}: ${error}`);
381
+ }
382
+ return acc;
383
+ }, []).join(", ") || void 0;
384
+ };
385
+ };
386
+ var optionalValidator = (validator) => {
387
+ return (v) => {
388
+ if (v === void 0 || v === null) {
389
+ return void 0;
390
+ }
391
+ return validator(v);
392
+ };
393
+ };
394
+ var UUID_VALIDATOR = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
395
+ var isValidUuid = (uuid) => {
396
+ const stringError = isString(uuid);
397
+ if (stringError) {
398
+ return stringError;
399
+ }
400
+ return meetsRegex(UUID_VALIDATOR, "g", "Invalid UUID format")(uuid);
401
+ };
402
+ // Annotate the CommonJS export names for ESM import in node:
403
+ 0 && (module.exports = {
404
+ aggregateValidator,
405
+ arrayType,
406
+ choices,
407
+ createModelValidator,
408
+ createPropertyValidator,
409
+ emptyValidator,
410
+ isArray,
411
+ isBoolean,
412
+ isDate,
413
+ isInteger,
414
+ isNumber,
415
+ isObject,
416
+ isRequired,
417
+ isString,
418
+ isType,
419
+ isValid,
420
+ isValidUuid,
421
+ maxNumber,
422
+ maxTextLength,
423
+ meetsRegex,
424
+ minNumber,
425
+ minTextLength,
426
+ multiValidator,
427
+ objectValidator,
428
+ optionalValidator,
429
+ referenceTypeMatch
430
+ });
431
+ //# sourceMappingURL=validation.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/validation.ts", "../../src/utils.ts"],
4
+ "sourcesContent": ["import isEmpty from 'lodash/isEmpty.js'\nimport merge from 'lodash/merge.js'\nimport flatMap from 'lodash/flatMap.js'\nimport get from 'lodash/get.js'\nimport {\n DataDescription,\n ModelInstance,\n ModelType,\n ModelValidatorComponent,\n PropertyValidatorComponent,\n PropertyValidatorComponentSync,\n PropertyValidator,\n PropertyConfig,\n PropertyValidators,\n ValueGetter,\n Arrayable,\n DataValue,\n ModelErrors,\n ValidatorContext,\n ValuePropertyValidatorComponent,\n ValidationErrors,\n MaybeFunction,\n PropertyValidatorComponentTypeAdvanced,\n PrimitiveValueType,\n ToObjectResult,\n} from './types.js'\nimport { flowFindFirst } from './utils.js'\n\nconst multiValidator = <T extends Arrayable<DataValue>>(\n validators: ValuePropertyValidatorComponent<T>[]\n): ValuePropertyValidatorComponent<T> => {\n const flow = flowFindFirst<T, string>(\n validators as ((t: T) => undefined | string)[]\n )\n return flow as ValuePropertyValidatorComponent<T>\n}\n\nconst filterEmpty = <T>(\n array: readonly (T | undefined | null)[]\n): readonly T[] => {\n return array.filter(x => x) as readonly T[]\n}\n\nconst _trueOrError =\n <T extends Arrayable<DataValue>>(\n method: (t: T) => boolean,\n error: string\n ): ValuePropertyValidatorComponent<T> =>\n (value: T) => {\n if (method(value) === false) {\n return error\n }\n return undefined\n }\n\nconst _typeOrError =\n <T extends Arrayable<DataValue>>(\n type: string,\n errorMessage: string\n ): ValuePropertyValidatorComponent<T> =>\n (value: T) => {\n if (typeof value !== type) {\n return errorMessage\n }\n return undefined\n }\n\nconst isType =\n <T extends Arrayable<DataValue>>(\n type: string\n ): ValuePropertyValidatorComponent<T> =>\n (value: T) => {\n // @ts-ignore\n return _typeOrError(type, `Must be a ${type}`)(value)\n }\nconst isNumber = isType<number>('number')\nconst isInteger = _trueOrError<number>(Number.isInteger, 'Must be an integer')\n\nconst isObject = multiValidator<object>([\n isType<object>('object'),\n x => (Array.isArray(x) ? 'Must be an object, but got an array' : undefined),\n])\nconst isBoolean = isType<boolean>('boolean')\nconst isString = isType<string>('string')\nconst isArray = _trueOrError<readonly DataValue[]>(\n (v: any) => Array.isArray(v),\n 'Value is not an array'\n)\n\nconst PRIMITIVE_TO_SPECIAL_TYPE_VALIDATOR: Record<\n PrimitiveValueType,\n ValuePropertyValidatorComponent<any>\n> = {\n [PrimitiveValueType.boolean]: isBoolean,\n [PrimitiveValueType.string]: isString,\n [PrimitiveValueType.integer]: isInteger,\n [PrimitiveValueType.number]: isNumber,\n [PrimitiveValueType.object]: isObject,\n}\n\nconst arrayType =\n <TValue extends DataValue>(\n type: PrimitiveValueType\n ): ValuePropertyValidatorComponent<readonly TValue[]> =>\n (value: readonly TValue[]) => {\n const arrayError = isArray(value)\n if (arrayError) {\n return arrayError\n }\n const validator = PRIMITIVE_TO_SPECIAL_TYPE_VALIDATOR[type] || isType(type)\n return (value as readonly []).reduce(\n (acc: string | undefined, v: DataValue) => {\n if (acc) {\n return acc\n }\n\n return validator(v)\n },\n undefined\n )\n }\n\nconst meetsRegex =\n <TValue extends DataValue>(\n regex: string | RegExp,\n flags?: string,\n errorMessage = 'Format was invalid'\n ): ValuePropertyValidatorComponent<TValue> =>\n (value: TValue) => {\n const reg = new RegExp(regex, flags)\n // @ts-ignore\n return _trueOrError((v: string) => reg.test(v), errorMessage)(value)\n }\n\nconst choices =\n <T extends DataValue>(\n choiceArray: readonly T[]\n ): ValuePropertyValidatorComponent<T> =>\n (value: T | readonly T[]) => {\n if (Array.isArray(value)) {\n const bad = value.find(v => !choiceArray.includes(v))\n if (bad) {\n return `${bad} is not a valid choice`\n }\n } else {\n if (!choiceArray.includes(value as T)) {\n return `${value} is not a valid choice`\n }\n }\n return undefined\n }\n\nconst isDate: ValuePropertyValidatorComponent<Date> = (value: Date) => {\n if (!value) {\n return 'Date value is empty'\n }\n if (!value.toISOString) {\n return 'Value is not a date'\n }\n return undefined\n}\n\nconst isRequired: ValuePropertyValidatorComponent<any> = (value?: any) => {\n if (value === true || value === false) {\n return undefined\n }\n // @ts-ignore\n if (isNumber(value) === undefined) {\n return undefined\n }\n const empty = isEmpty(value)\n if (empty) {\n // @ts-ignore\n if (isDate(value)) {\n return 'A value is required'\n }\n }\n return undefined\n}\n\nconst maxNumber =\n (max: number): ValuePropertyValidatorComponent<number> =>\n (value: number) => {\n // @ts-ignore\n const numberError = isNumber(value)\n if (numberError) {\n return numberError\n }\n if (value && value > max) {\n return `The maximum is ${max}`\n }\n return undefined\n }\n\nconst minNumber =\n (min: number): ValuePropertyValidatorComponent<number> =>\n (value: number) => {\n // @ts-ignore\n const numberError = isNumber(value)\n if (numberError) {\n return numberError\n }\n if (value && value < min) {\n return `The minimum is ${min}`\n }\n return undefined\n }\n\nconst maxTextLength =\n (max: number): ValuePropertyValidatorComponent<string> =>\n (value: string) => {\n // @ts-ignore\n const stringError = isString(value)\n if (stringError) {\n return stringError\n }\n if (value && value.length > max) {\n return `The maximum length is ${max}`\n }\n return undefined\n }\n\nconst minTextLength =\n (min: number): ValuePropertyValidatorComponent<string> =>\n (value: string) => {\n // @ts-ignore\n const stringError = isString(value)\n if (stringError) {\n return stringError\n }\n if (value && value.length < min) {\n return `The minimum length is ${min}`\n }\n return undefined\n }\n\nconst aggregateValidator = <T extends DataDescription>(\n value: any,\n methodOrMethods:\n | PropertyValidatorComponent<T>\n | readonly PropertyValidatorComponent<T>[]\n): PropertyValidator<T> => {\n const toDo = Array.isArray(methodOrMethods)\n ? methodOrMethods\n : [methodOrMethods]\n\n const _aggregativeValidator: PropertyValidator<T> = async (\n model: ModelType<T>,\n instanceData: ToObjectResult<T>,\n propertyConfiguration: ValidatorContext\n ) => {\n const values = await Promise.all(\n toDo.map(method => {\n return method(value, model, instanceData, propertyConfiguration)\n })\n )\n return filterEmpty(values)\n }\n return _aggregativeValidator\n}\n\nconst emptyValidator = () => undefined\n\nconst _boolChoice =\n <T extends DataDescription>(\n method: (configValue: any) => PropertyValidatorComponentSync<T>\n ) =>\n (configValue: any) => {\n const func = method(configValue)\n const validatorWrapper: PropertyValidatorComponentSync<T> = func\n return validatorWrapper\n }\n\ntype MethodConfigDict<T extends DataDescription> = Readonly<{\n [s: string]: (config: any) => PropertyValidatorComponentSync<T>\n}>\n\nconst simpleFuncWrap =\n <T extends DataDescription>(validator: PropertyValidatorComponentSync<T>) =>\n () => {\n return validator\n }\n\nconst includeOrDont =\n <T extends DataDescription>(\n method: () => PropertyValidatorComponentSync<T>\n ) =>\n (configValue: any) => {\n if (configValue === false) {\n return emptyValidator\n }\n const func = method()\n const validatorWrapper: PropertyValidatorComponentSync<T> = func\n return validatorWrapper\n }\n\nconst CONFIG_TO_VALIDATE_METHOD = <\n T extends DataDescription,\n>(): MethodConfigDict<T> => ({\n required: includeOrDont(simpleFuncWrap(isRequired)),\n isInteger: _boolChoice<T>(simpleFuncWrap(isInteger)),\n isNumber: _boolChoice<T>(simpleFuncWrap(isNumber)),\n isString: _boolChoice<T>(simpleFuncWrap(isString)),\n isArray: _boolChoice<T>(simpleFuncWrap(isArray)),\n isBoolean: _boolChoice<T>(simpleFuncWrap(isBoolean)),\n choices: _boolChoice<T>(choices),\n})\n\nconst createPropertyValidator = <\n TValue extends Arrayable<DataValue>,\n T extends DataDescription = DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n>(\n valueGetter: ValueGetter<\n TValue,\n T,\n TModelExtensions,\n TModelInstanceExtensions\n >,\n config: PropertyConfig<TValue>\n): PropertyValidator<T> => {\n const _propertyValidator = async (\n model: ModelType<T>,\n instanceData: ToObjectResult<T>,\n propertyConfiguration: ValidatorContext\n ): Promise<ValidationErrors> => {\n return Promise.resolve().then(async () => {\n const configToValidateMethod = CONFIG_TO_VALIDATE_METHOD<T>()\n if (!config) {\n config = {}\n }\n const validators: readonly PropertyValidatorComponent<T>[] = [\n ...Object.entries(config).map(([key, value]) => {\n const method = configToValidateMethod[key]\n if (method) {\n return method(value)\n }\n return emptyValidator\n }),\n ...(config.validators ? config.validators : []),\n ].filter(x => x) as PropertyValidatorComponent<T>[]\n const value = await valueGetter()\n const isRequiredValue = config.required\n ? true\n : validators.includes(isRequired)\n if (!value && !isRequiredValue) {\n return []\n }\n const validator = aggregateValidator(value, validators)\n const errors = await validator(model, instanceData, propertyConfiguration)\n return [...new Set(flatMap(errors))]\n })\n }\n return _propertyValidator\n}\n\nconst createModelValidator = <\n T extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n>(\n validators: PropertyValidators<T>,\n modelValidators?: readonly ModelValidatorComponent<\n T,\n TModelExtensions,\n TModelInstanceExtensions\n >[]\n) => {\n const _modelValidator = async (\n instance: ModelInstance<T, TModelExtensions, TModelInstanceExtensions>,\n propertyConfiguration: ValidatorContext\n ): Promise<ModelErrors<T> | undefined> => {\n return Promise.resolve().then(async () => {\n if (!instance) {\n throw new Error(`Instance cannot be empty`)\n }\n const model = instance.getModel()\n const keysAndFunctions = Object.entries(validators)\n const instanceData = await instance.toObj<T>()\n const propertyValidationErrors = await Promise.all(\n keysAndFunctions.map(async ([key, validator]) => {\n return [\n key,\n await validator(model, instanceData, propertyConfiguration),\n ]\n })\n )\n const modelValidationErrors = (\n await Promise.all(\n modelValidators\n ? modelValidators.map(validator => {\n return validator(model, instanceData, propertyConfiguration)\n })\n : []\n )\n ).filter(x => x) as readonly string[]\n const propertyErrors = propertyValidationErrors\n .filter(([, errors]) => Boolean(errors) && errors.length > 0)\n .reduce((acc, [key, errors]) => {\n return merge(acc, { [String(key)]: errors })\n }, {} as ModelErrors<T>)\n const final =\n modelValidationErrors.length > 0\n ? merge(propertyErrors, { overall: modelValidationErrors })\n : propertyErrors\n if (isEmpty(final)) {\n return undefined\n }\n return final\n })\n }\n return _modelValidator\n}\n\nconst isValid = <T extends DataDescription>(errors: ModelErrors<T>) => {\n return Object.keys(errors).length < 1\n}\n\nconst referenceTypeMatch = (\n referencedModel: MaybeFunction<ModelType<any>>\n): PropertyValidatorComponentTypeAdvanced<\n ModelInstance<any, any, any>,\n any\n> => {\n return (value?: ModelInstance<any, any, any>) => {\n const theType = typeof value\n switch (theType) {\n case 'string':\n case 'number':\n case 'undefined':\n return undefined\n default:\n break\n }\n if (value === null) {\n return undefined\n }\n // This needs to stay here, as it delays the creation long enough for\n // self referencing types.\n const model =\n typeof referencedModel === 'function'\n ? referencedModel()\n : referencedModel\n // Assumption: By the time this is received, value === a model instance.\n const eModel = model.getName()\n const aModel = value.getModel().getName()\n if (eModel !== aModel) {\n return `Model should be ${eModel} instead, received ${aModel}`\n }\n return undefined\n }\n}\n\n/**\n * A validator that can validate an entire object.\n *\n * @param required - If this object is required.\n * @param keyToValidators - An object that has a dotted path key to the property to validate, and one or more validators for it.\n */\nconst objectValidator = <T extends object>({\n required,\n keyToValidators,\n}: {\n required?: boolean\n keyToValidators: Record<\n string,\n | ValuePropertyValidatorComponent<any>\n | ValuePropertyValidatorComponent<any>[]\n >\n}): ValuePropertyValidatorComponent<T> => {\n return (obj: T) => {\n if (!obj) {\n if (required) {\n return 'Must include a value'\n }\n return undefined\n }\n const isNotObj = isObject(obj)\n if (isNotObj) {\n return isNotObj\n }\n return (\n Object.entries(keyToValidators)\n .reduce((acc, [key, validator]) => {\n const theValidator = Array.isArray(validator)\n ? multiValidator(validator)\n : (validator as ValuePropertyValidatorComponent<any>)\n const value = get(obj, key)\n const error = theValidator(value)\n if (error) {\n return acc.concat(`${key}: ${error}`)\n }\n return acc\n }, [] as string[])\n .join(', ') || undefined\n )\n }\n}\n\nconst optionalValidator = <T extends Arrayable<DataValue>>(\n validator: ValuePropertyValidatorComponent<T>\n): ValuePropertyValidatorComponent<T> => {\n return (v: T | undefined): string | undefined => {\n if (v === undefined || v === null) {\n return undefined\n }\n return validator(v)\n }\n}\n\nconst UUID_VALIDATOR =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/iu\n\nconst isValidUuid: ValuePropertyValidatorComponent<string> = (uuid: string) => {\n const stringError = isString(uuid)\n if (stringError) {\n return stringError\n }\n return meetsRegex<string>(UUID_VALIDATOR, 'g', 'Invalid UUID format')(uuid)\n}\n\nexport {\n isNumber,\n isBoolean,\n isString,\n isInteger,\n isType,\n isDate,\n isArray,\n isRequired,\n maxNumber,\n minNumber,\n choices,\n maxTextLength,\n minTextLength,\n meetsRegex,\n aggregateValidator,\n emptyValidator,\n createPropertyValidator,\n createModelValidator,\n arrayType,\n isValid,\n referenceTypeMatch,\n multiValidator,\n isObject,\n objectValidator,\n optionalValidator,\n isValidUuid,\n}\n", "import AsyncLock from 'async-lock'\nimport { v4 as uuidv4 } from 'uuid'\n// @ts-ignore\nimport getRandomValuesFunc from 'get-random-values'\n\nconst getRandomValues = (): Uint8Array => {\n const array = new Uint8Array(1)\n if (typeof window !== 'undefined') {\n if (window.crypto) {\n return window.crypto.getRandomValues(array)\n }\n // @ts-ignore\n if (window.msCrypto) {\n // @ts-ignore\n return window.msCrypto.getRandomValues(array)\n }\n }\n\n return getRandomValuesFunc(array)\n}\n\nconst toTitleCase = (string: string) => {\n return `${string.slice(0, 1).toUpperCase()}${string.slice(1)}`\n}\n\nconst loweredTitleCase = (string: string) => {\n return `${string.slice(0, 1).toLowerCase()}${string.slice(1)}`\n}\n\nconst isPromise = <T>(something: any): something is Promise<T> => {\n if (something?.then) {\n return true\n }\n return false\n}\n\nenum PluralEndings {\n ves = 'fe',\n ies = 'y',\n i = 'us',\n zes = 'ze',\n ses = 's',\n es = 'e',\n s = '',\n}\nconst _singularizingRe = new RegExp(\n `(${Object.keys(PluralEndings).join('|')})$`,\n 'u'\n)\n\nconst singularize = (word: string) => {\n // @ts-ignore\n return word.replace(_singularizingRe, r => PluralEndings[r])\n}\n\nconst createHeadAndTail = (values: readonly string[], joiner: string) => {\n const head = values[0]\n const tail = values.slice(1).join(joiner)\n return [head, tail]\n}\n\nconst flowFindFirst =\n <T, TResult>(funcs: ((t: T) => undefined | TResult)[]) =>\n (input: T) => {\n return funcs.reduce((acc: undefined | TResult, func) => {\n if (acc) {\n return acc\n }\n return func(input)\n }, undefined) as string | TResult\n }\n\nconst memoizeSync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n /* eslint-disable functional/no-let */\n let value: any = undefined\n let called = false\n return (...args: A): T => {\n if (!called) {\n called = true\n value = method(...args)\n }\n\n return value\n }\n /* eslint-enable functional/no-let */\n}\n\nconst memoizeAsync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n const key = uuidv4()\n const lock = new AsyncLock()\n /* eslint-disable functional/no-let */\n let value: any = undefined\n let called = false\n return async (...args: A): Promise<T> => {\n return lock.acquire(key, async () => {\n if (!called) {\n called = true\n value = await method(...args)\n }\n\n return value\n })\n }\n /* eslint-enable functional/no-let */\n}\n\nconst createUuid = uuidv4\n\nexport {\n getRandomValues,\n loweredTitleCase,\n toTitleCase,\n isPromise,\n createHeadAndTail,\n singularize,\n flowFindFirst,\n memoizeSync,\n memoizeAsync,\n createUuid,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["PluralEndings", "isEmpty", "value", "flatMap", "merge", "get"]
7
+ }
package/errors.js CHANGED
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidationError = void 0;
4
1
  /* eslint-disable functional/no-this-expressions */
5
2
  /* eslint-disable functional/no-classes */
6
3
  class ValidationError extends Error {
@@ -11,5 +8,7 @@ class ValidationError extends Error {
11
8
  this.keysToErrors = keysToErrors;
12
9
  }
13
10
  }
14
- exports.ValidationError = ValidationError;
11
+ /* eslint-enable functional/no-this-expressions */
12
+ /* eslint-enable functional/no-classes */
13
+ export { ValidationError };
15
14
  //# sourceMappingURL=errors.js.map
package/errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,0CAA0C;AAC1C,MAAM,eAAgB,SAAQ,KAAK;IAGjC,YACE,SAAiB,EACjB,YAA+C;QAE/C,KAAK,CAAC,GAAG,SAAS,0BAA0B,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;CACF;AAIQ,0CAAe"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,0CAA0C;AAC1C,MAAM,eAAgB,SAAQ,KAAK;IAGjC,YACE,SAAiB,EACjB,YAA+C;QAE/C,KAAK,CAAC,GAAG,SAAS,0BAA0B,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;CACF;AACD,kDAAkD;AAClD,yCAAyC;AAEzC,OAAO,EAAE,eAAe,EAAE,CAAA"}
package/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- export * from './types';
2
- export * as types from './types';
3
- export * from './models';
4
- export * as models from './models';
5
- export * from './properties';
6
- export * as properties from './properties';
7
- export * from './validation';
8
- export * as validation from './validation';
9
- export * from './errors';
10
- export * as errors from './errors';
11
- export * as orm from './orm';
12
- export * from './orm';
13
- export * from './orm/libs';
1
+ export * from './types.js';
2
+ export * as types from './types.js';
3
+ export * from './models.js';
4
+ export * as models from './models.js';
5
+ export * from './properties.js';
6
+ export * as properties from './properties.js';
7
+ export * from './validation.js';
8
+ export * as validation from './validation.js';
9
+ export * from './errors.js';
10
+ export * as errors from './errors.js';
11
+ export * as orm from './orm/index.js';
12
+ export * from './orm/index.js';
13
+ export * from './orm/libs.js';
package/index.js CHANGED
@@ -1,53 +1,14 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.orm = exports.errors = exports.validation = exports.properties = exports.models = exports.types = void 0;
40
- __exportStar(require("./types"), exports);
41
- exports.types = __importStar(require("./types"));
42
- __exportStar(require("./models"), exports);
43
- exports.models = __importStar(require("./models"));
44
- __exportStar(require("./properties"), exports);
45
- exports.properties = __importStar(require("./properties"));
46
- __exportStar(require("./validation"), exports);
47
- exports.validation = __importStar(require("./validation"));
48
- __exportStar(require("./errors"), exports);
49
- exports.errors = __importStar(require("./errors"));
50
- exports.orm = __importStar(require("./orm"));
51
- __exportStar(require("./orm"), exports);
52
- __exportStar(require("./orm/libs"), exports);
1
+ export * from './types.js';
2
+ export * as types from './types.js';
3
+ export * from './models.js';
4
+ export * as models from './models.js';
5
+ export * from './properties.js';
6
+ export * as properties from './properties.js';
7
+ export * from './validation.js';
8
+ export * as validation from './validation.js';
9
+ export * from './errors.js';
10
+ export * as errors from './errors.js';
11
+ export * as orm from './orm/index.js';
12
+ export * from './orm/index.js';
13
+ export * from './orm/libs.js';
53
14
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,iDAAgC;AAChC,2CAAwB;AACxB,mDAAkC;AAClC,+CAA4B;AAC5B,2DAA0C;AAC1C,+CAA4B;AAC5B,2DAA0C;AAC1C,2CAAwB;AACxB,mDAAkC;AAClC,6CAA4B;AAC5B,wCAAqB;AACrB,6CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA"}
package/lib.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { OpenAPIV3 } from 'openapi-types';
2
2
  import { z } from 'zod';
3
- import { ApiInfo, ApiInfoPartialRest, Arrayable, DataDescription, DataValue, ModelInstance, PrimaryKeyType, PropertyConfig, CanBeNullableType, PropertyValidatorComponent, PropertyValidatorComponentTypeAdvanced } from './types';
3
+ import { ApiInfo, ApiInfoPartialRest, Arrayable, DataDescription, DataValue, ModelInstance, PrimaryKeyType, PropertyConfig, CanBeNullableType, PropertyValidatorComponent, PropertyValidatorComponentTypeAdvanced } from './types.js';
4
4
  import HttpMethods = OpenAPIV3.HttpMethods;
5
5
  declare const NULL_ENDPOINT = "NULL";
6
6
  declare const NULL_METHOD = HttpMethods.HEAD;
7
7
  declare const getValueForReferencedModel: (modelInstance: ModelInstance<any>, path: string) => Promise<PrimaryKeyType | any>;
8
8
  declare const getValueForModelInstance: (modelInstance: ModelInstance<any>, path: string) => Promise<PrimaryKeyType | any>;
9
- declare const isReferencedProperty: (modelInstance: ModelInstance<any>, key: string) => () => import("./types").Maybe<PrimaryKeyType>;
9
+ declare const isReferencedProperty: (modelInstance: ModelInstance<any>, key: string) => () => import("./types.js").Maybe<PrimaryKeyType>;
10
10
  declare const getCommonTextValidators: <T extends CanBeNullableType<string> = string>(config: PropertyConfig<T>) => readonly PropertyValidatorComponent<any>[];
11
11
  declare const getValidatorFromConfigElseEmpty: <T extends DataDescription, TValue extends DataValue>(input: TValue | undefined, validatorGetter: (t: TValue) => PropertyValidatorComponent<T>) => PropertyValidatorComponent<T>;
12
12
  declare const getCommonNumberValidators: <T extends CanBeNullableType<number> = number>(config: PropertyConfig<T>) => readonly PropertyValidatorComponent<any>[];