functional-models 3.9.5 → 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 (84) 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 +5 -5
  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 +28 -28
  58. package/orm/properties.js +28 -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 +2 -2
  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 +133 -133
  71. package/properties.js +66 -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.d.ts +6 -1
  77. package/types.js +4 -6
  78. package/types.js.map +1 -1
  79. package/utils.d.ts +2 -1
  80. package/utils.js +8 -23
  81. package/utils.js.map +1 -1
  82. package/validation.d.ts +1 -1
  83. package/validation.js +19 -50
  84. package/validation.js.map +1 -1
@@ -0,0 +1,136 @@
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/orm/internal-libs.ts
31
+ var internal_libs_exports = {};
32
+ __export(internal_libs_exports, {
33
+ getPrimaryKeyGenerator: () => getPrimaryKeyGenerator
34
+ });
35
+ module.exports = __toCommonJS(internal_libs_exports);
36
+
37
+ // src/utils.ts
38
+ var import_async_lock = __toESM(require("async-lock"), 1);
39
+
40
+ // node_modules/uuid/dist-node/stringify.js
41
+ var byteToHex = [];
42
+ for (let i = 0; i < 256; ++i) {
43
+ byteToHex.push((i + 256).toString(16).slice(1));
44
+ }
45
+ function unsafeStringify(arr, offset = 0) {
46
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
47
+ }
48
+
49
+ // node_modules/uuid/dist-node/rng.js
50
+ var rnds8 = new Uint8Array(16);
51
+ function rng() {
52
+ return crypto.getRandomValues(rnds8);
53
+ }
54
+
55
+ // node_modules/uuid/dist-node/v4.js
56
+ function v4(options, buf, offset) {
57
+ if (!buf && !options && crypto.randomUUID) {
58
+ return crypto.randomUUID();
59
+ }
60
+ return _v4(options, buf, offset);
61
+ }
62
+ function _v4(options, buf, offset) {
63
+ options = options || {};
64
+ const rnds = options.random ?? options.rng?.() ?? rng();
65
+ if (rnds.length < 16) {
66
+ throw new Error("Random bytes length must be >= 16");
67
+ }
68
+ rnds[6] = rnds[6] & 15 | 64;
69
+ rnds[8] = rnds[8] & 63 | 128;
70
+ if (buf) {
71
+ offset = offset || 0;
72
+ if (offset < 0 || offset + 16 > buf.length) {
73
+ throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
74
+ }
75
+ for (let i = 0; i < 16; ++i) {
76
+ buf[offset + i] = rnds[i];
77
+ }
78
+ return buf;
79
+ }
80
+ return unsafeStringify(rnds);
81
+ }
82
+ var v4_default = v4;
83
+
84
+ // src/utils.ts
85
+ var import_get_random_values = __toESM(require("get-random-values"), 1);
86
+ var getRandomValues = () => {
87
+ const array = new Uint8Array(1);
88
+ if (typeof window !== "undefined") {
89
+ if (window.crypto) {
90
+ return window.crypto.getRandomValues(array);
91
+ }
92
+ if (window.msCrypto) {
93
+ return window.msCrypto.getRandomValues(array);
94
+ }
95
+ }
96
+ return (0, import_get_random_values.default)(array);
97
+ };
98
+ var PluralEndings = /* @__PURE__ */ ((PluralEndings2) => {
99
+ PluralEndings2["ves"] = "fe";
100
+ PluralEndings2["ies"] = "y";
101
+ PluralEndings2["i"] = "us";
102
+ PluralEndings2["zes"] = "ze";
103
+ PluralEndings2["ses"] = "s";
104
+ PluralEndings2["es"] = "e";
105
+ PluralEndings2["s"] = "";
106
+ return PluralEndings2;
107
+ })(PluralEndings || {});
108
+ var _singularizingRe = new RegExp(
109
+ `(${Object.keys(PluralEndings).join("|")})$`,
110
+ "u"
111
+ );
112
+ var createUuid = v4_default;
113
+
114
+ // src/orm/internal-libs.ts
115
+ var _getModelIdPropertyType = (config = {}) => {
116
+ return config.dataType || "UniqueId" /* UniqueId */;
117
+ };
118
+ var getPrimaryKeyGenerator = (config = {}) => {
119
+ const custom = config.primaryKeyGenerator;
120
+ if (custom) {
121
+ return custom;
122
+ }
123
+ const idType = _getModelIdPropertyType(config);
124
+ switch (idType) {
125
+ case "Integer" /* Integer */:
126
+ return () => Promise.resolve(getRandomValues()[0]);
127
+ default: {
128
+ return () => Promise.resolve(createUuid());
129
+ }
130
+ }
131
+ };
132
+ // Annotate the CommonJS export names for ESM import in node:
133
+ 0 && (module.exports = {
134
+ getPrimaryKeyGenerator
135
+ });
136
+ //# sourceMappingURL=internal-libs.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/orm/internal-libs.ts", "../../../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 { PropertyType, PrimaryKeyType } from '../types.js'\nimport { createUuid, getRandomValues } from '../utils.js'\nimport {\n DatabaseKeyPropertyConfig,\n PrimaryKeyGenerator,\n PrimaryKeyPropertyType,\n} from './types.js'\n\nconst _getModelIdPropertyType = (\n config: DatabaseKeyPropertyConfig<any> = {}\n): PrimaryKeyPropertyType => {\n return config.dataType || PropertyType.UniqueId\n}\n\nexport const getPrimaryKeyGenerator = <TValue extends PrimaryKeyType>(\n config: DatabaseKeyPropertyConfig<TValue> = {}\n): PrimaryKeyGenerator => {\n const custom = config.primaryKeyGenerator\n if (custom) {\n return custom\n }\n const idType = _getModelIdPropertyType(config)\n switch (idType) {\n case PropertyType.Integer:\n return () => Promise.resolve(getRandomValues()[0]!)\n default: {\n return () => Promise.resolve(createUuid())\n }\n }\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", "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"]
7
+ }
@@ -0,0 +1,88 @@
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/orm/libs.ts
31
+ var libs_exports = {};
32
+ __export(libs_exports, {
33
+ multipleAndQuery: () => multipleAndQuery,
34
+ multipleOrQuery: () => multipleOrQuery
35
+ });
36
+ module.exports = __toCommonJS(libs_exports);
37
+ var import_flow = __toESM(require("lodash/flow.js"), 1);
38
+
39
+ // src/orm/types.ts
40
+ var EqualitySymbol = /* @__PURE__ */ ((EqualitySymbol2) => {
41
+ EqualitySymbol2["eq"] = "=";
42
+ EqualitySymbol2["lt"] = "<";
43
+ EqualitySymbol2["lte"] = "<=";
44
+ EqualitySymbol2["gt"] = ">";
45
+ EqualitySymbol2["gte"] = ">=";
46
+ EqualitySymbol2["ne"] = "!=";
47
+ return EqualitySymbol2;
48
+ })(EqualitySymbol || {});
49
+ var AllowableEqualitySymbols = Object.values(EqualitySymbol);
50
+
51
+ // src/orm/libs.ts
52
+ var multipleOrQuery = (queryBuilder, propertyKey, values, propertyType, propertyOptions) => {
53
+ if (values.length === 0) {
54
+ return queryBuilder;
55
+ }
56
+ return (0, import_flow.default)(
57
+ values.map((v, index) => {
58
+ return (qb) => {
59
+ const withProperty = qb.property(propertyKey, v, {
60
+ ...propertyOptions || {},
61
+ type: propertyType || "string" /* string */
62
+ });
63
+ return index < values.length - 1 ? withProperty.or() : withProperty;
64
+ };
65
+ })
66
+ )(queryBuilder);
67
+ };
68
+ var multipleAndQuery = (queryBuilder, propertyKey, values, propertyType) => {
69
+ if (values.length === 0) {
70
+ return queryBuilder;
71
+ }
72
+ return (0, import_flow.default)(
73
+ values.map((v, index) => {
74
+ return (qb) => {
75
+ const withProperty = qb.property(propertyKey, v, {
76
+ type: propertyType || "string" /* string */
77
+ });
78
+ return index < values.length - 1 ? withProperty.and() : withProperty;
79
+ };
80
+ })
81
+ )(queryBuilder);
82
+ };
83
+ // Annotate the CommonJS export names for ESM import in node:
84
+ 0 && (module.exports = {
85
+ multipleAndQuery,
86
+ multipleOrQuery
87
+ });
88
+ //# sourceMappingURL=libs.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/orm/libs.ts", "../../../src/orm/types.ts"],
4
+ "sourcesContent": ["import flow from 'lodash/flow.js'\nimport { QueryBuilder, DatastoreValueType, PropertyOptions } from './types.js'\n\n/**\n * Creates multiple property OR queries added to the passed in query builder.\n * Returns another QueryBuilder.\n */\nexport const multipleOrQuery = <T>(\n queryBuilder: QueryBuilder,\n propertyKey: string,\n values: readonly T[],\n propertyType?: DatastoreValueType,\n propertyOptions?: PropertyOptions\n): QueryBuilder => {\n if (values.length === 0) {\n return queryBuilder\n }\n\n return flow(\n values.map((v, index) => {\n return (qb: QueryBuilder) => {\n const withProperty = qb.property(propertyKey, v, {\n ...(propertyOptions || {}),\n type: propertyType || DatastoreValueType.string,\n })\n // Add 'or()' only if this is not the last item\n return index < values.length - 1 ? withProperty.or() : withProperty\n }\n })\n )(queryBuilder)\n}\n\n/**\n * Creates multiple AND queries.\n */\nexport const multipleAndQuery = <T>(\n queryBuilder: QueryBuilder,\n propertyKey: string,\n values: readonly T[],\n propertyType?: DatastoreValueType\n): QueryBuilder => {\n if (values.length === 0) {\n return queryBuilder\n }\n\n return flow(\n values.map((v, index) => {\n return (qb: QueryBuilder) => {\n const withProperty = qb.property(propertyKey, v, {\n type: propertyType || DatastoreValueType.string,\n })\n // Add 'or()' only if this is not the last item\n return index < values.length - 1 ? withProperty.and() : withProperty\n }\n })\n )(queryBuilder)\n}\n", "import {\n Arrayable,\n DataValue,\n Maybe,\n ModelInstance,\n ModelType,\n DataDescription,\n PrimaryKeyType,\n MinimalModelDefinition,\n PropertyConfig,\n ValidatorContext,\n ToObjectResult,\n ModelInstanceFetcher,\n ModelFactoryOptions,\n CreateParams,\n PropertyType,\n CanBeNullableType,\n} from '../types.js'\n\n/**\n * Equals symbols for doing database matching\n */\nexport enum EqualitySymbol {\n // Equals\n eq = '=',\n // Less than\n lt = '<',\n // Equal to or less than\n lte = '<=',\n // Greater than\n gt = '>',\n // Equal to or greater than\n gte = '>=',\n // Not equal to\n ne = '!=',\n}\n\n/**\n * The value types that map to database types.\n */\nexport enum DatastoreValueType {\n string = 'string',\n number = 'number',\n date = 'date',\n object = 'object',\n boolean = 'boolean',\n}\n\n/**\n * A list of allowable equality symbols.\n */\nexport const AllowableEqualitySymbols = Object.values(EqualitySymbol)\n\n/**\n * A function that can save.\n */\ntype SaveMethod<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n /**\n * An instance to save\n */\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<\n OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * A method that can delete\n */\ntype DeleteMethod<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<void>\n\n/**\n * A function that allows overriding the save functionality for a specific model.\n */\nexport type SaveOverride<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n existingSave: SaveMethod<TModelExtensions, TModelInstanceExtensions>,\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<\n OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * A function that allows overriding the delete functionality for a specific model.\n */\nexport type DeleteOverride<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n existingDelete: DeleteMethod<TModelExtensions, TModelInstanceExtensions>,\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<void>\n\n/**\n * A result of an ORM search.\n * @interface\n */\nexport type OrmSearchResult<\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = Readonly<{\n /**\n * A list of instances\n */\n instances: readonly OrmModelInstance<\n TData,\n TModelExtensions,\n TModelInstanceExtensions\n >[]\n /**\n * An optional page value. The exact structure is provided by the datastore itself.\n */\n page?: any\n}>\n\n/**\n * ORM based ModelFactory extensions.\n * @interface\n */\nexport type OrmModelFactoryOptionsExtensions<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = Readonly<{\n /**\n * Optional: The save function to override.\n */\n save?: SaveOverride<TModelExtensions, TModelInstanceExtensions>\n /**\n * Optional: The delete function to override.\n */\n delete?: DeleteOverride<TModelExtensions, TModelInstanceExtensions>\n}>\n\n/**\n * Extensions to the Model type\n * @interface\n */\nexport type OrmModelExtensions<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = Readonly<{\n /**\n * Save the model\n * @param instance - The instance to save.\n */\n save: <TData extends DataDescription>(\n instance: OrmModelInstance<\n TData,\n TModelExtensions,\n TModelInstanceExtensions\n >\n ) => Promise<\n OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n >\n /**\n * Deletes an instance by its id.\n * @param id - The id to delete\n */\n delete: (id: PrimaryKeyType) => Promise<void>\n /**\n * Attempts to get an instance by its id\n * @param primaryKey\n */\n retrieve: <TData extends DataDescription>(\n primaryKey: PrimaryKeyType\n ) => Promise<\n Maybe<OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>>\n >\n /**\n * Searches instances by the provided search query\n * @param query\n */\n search: <TData extends DataDescription>(\n query: OrmSearch\n ) => Promise<\n OrmSearchResult<\n TData,\n OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n >\n >\n /**\n * Searches for a single instance with the given query.\n * @param query\n */\n searchOne: <TData extends DataDescription>(\n query: Omit<OrmSearch, 'take'>\n ) => Promise<\n | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n | undefined\n >\n /**\n * Creates and saves an instance. An optimization in some databases\n * @param query\n */\n createAndSave: <TData extends DataDescription>(\n data: OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n ) => Promise<\n OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n >\n /**\n * Inserts multiple objects at once. Can often see great optimizations in some databases.\n * @param query\n */\n bulkInsert: <TData extends DataDescription>(\n instances: readonly OrmModelInstance<\n TData,\n TModelExtensions,\n TModelInstanceExtensions\n >[]\n ) => Promise<void>\n /**\n * Deletes multiple instances at once.\n * @param instances\n */\n bulkDelete: <TData extends DataDescription>(\n keysOrInstances:\n | readonly OrmModelInstance<\n TData,\n TModelExtensions,\n TModelInstanceExtensions\n >[]\n | readonly PrimaryKeyType[]\n ) => Promise<void>\n /**\n * Counts the number of models saved in the database.\n */\n count: () => Promise<number>\n}>\n\n/**\n * Instance overrides that give it ORM functions.\n * @interface\n */\nexport type OrmModelInstanceExtensions<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = Readonly<{\n /**\n * Save this model.\n */\n save: <TData extends DataDescription>() => Promise<\n OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n >\n /**\n * Delete this model.\n */\n delete: () => Promise<void>\n}>\n\n/**\n * ORM based configurations for a model.\n * @interface\n */\ntype OrmModelConfigurations = Readonly<{\n /**\n * Validator that there is only a single value in the datastore that has the properties given.\n * Example:\n * [\"name\", \"text\"]\n * This will make sure that there can only be a single row in the database that has a unique combination of name and text.\n */\n uniqueTogether?: readonly string[]\n}>\n\n/**\n * A minimum orm model definition\n * @interface\n */\nexport type MinimumOrmModelDefinition<TData extends DataDescription> =\n MinimalModelDefinition<TData> & OrmModelConfigurations\n\n/**\n * A model factory that produces ORM based models.\n *\n */\nexport type OrmModelFactory<\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n TModelOptionsExtensions extends object = object,\n> = <TData extends DataDescription>(\n /**\n * The model definition for the model\n */\n modelDef: MinimumOrmModelDefinition<TData>,\n /**\n * Additional options for this model.\n */\n options?: ModelFactoryOptions<\n TData,\n OrmModelFactoryOptionsExtensions<\n TModelExtensions,\n TModelInstanceExtensions\n > &\n TModelOptionsExtensions\n >\n) => OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n\n/**\n * A search result from a datastore\n * @interface\n */\nexport type DatastoreSearchResult<T extends DataDescription> = Readonly<{\n /**\n * An array of objects that represent the data from the datastore.\n */\n instances: readonly ToObjectResult<T>[]\n /**\n * Any pagination information.\n */\n page?: any\n}>\n\n/**\n * A model that has ORM functions attached.\n * @interface\n */\nexport type OrmModel<\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = ModelType<\n TData,\n OrmModelExtensions<TModelExtensions, TModelInstanceExtensions>,\n OrmModelInstanceExtensions<TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * A Model Instance with ORM functions attached.\n * @interface\n */\nexport type OrmModelInstance<\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n> = ModelInstance<\n TData,\n OrmModelExtensions<TModelExtensions, TModelInstanceExtensions>,\n OrmModelInstanceExtensions<TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * An interface that describes a datastore. By implementing this interface, databases can be swapped.\n * @interface\n */\nexport type DatastoreAdapter = Readonly<{\n /**\n * Saving a model.\n * @param instance\n */\n save: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n ) => Promise<ToObjectResult<TData>>\n /**\n * Deleting an instance.\n * @param model\n * @param id\n */\n delete: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n id: PrimaryKeyType\n ) => Promise<void>\n /**\n * Attempts to retrieves an instance.\n * @param model\n * @param primaryKey\n */\n retrieve: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n primaryKey: PrimaryKeyType\n ) => Promise<Maybe<ToObjectResult<TData>>>\n /**\n * Searches for instances by a query.\n * @param model\n * @param query\n */\n search: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n query: OrmSearch\n ) => Promise<DatastoreSearchResult<TData>>\n /**\n * Optional: An optimized bulkInsert function. (Highly recommended)\n * @param model\n * @param instances\n */\n bulkInsert?: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n instances: readonly ModelInstance<\n TData,\n TModelExtensions,\n TModelInstanceExtensions\n >[]\n ) => Promise<void>\n /**\n * Optional: An optimized bulkDelete function. (Highly recommended)\n * @param model\n * @param keysOrInstances\n */\n bulkDelete?: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n keys: readonly PrimaryKeyType[]\n ) => Promise<void>\n /**\n * Optional: An optimized createAndSave function.\n * @param instance\n */\n createAndSave?: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n ) => Promise<ToObjectResult<TData>>\n /**\n * Optional: An optimized counting function. Highly recommended.\n * @param model\n */\n count?: <\n TData extends DataDescription,\n TModelExtensions extends object = object,\n TModelInstanceExtensions extends object = object,\n >(\n model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n ) => Promise<number>\n}>\n\n/**\n * A search that describes a property and its value.\n * @interface\n */\nexport type PropertyQuery = Readonly<{\n /**\n * Distinguishes this as a property query.\n */\n type: 'property'\n /**\n * The property's key\n */\n key: string\n /**\n * The value to search for.\n */\n value: any\n /**\n * The type of database value.\n */\n valueType: DatastoreValueType\n /**\n * How the value should be compared.\n */\n equalitySymbol: EqualitySymbol\n /**\n * Options for additional matching.\n */\n options: PropertyOptions\n}>\n\n/**\n * A property search for a string value.\n */\nexport type StringPropertyQuery = PropertyQuery & {\n valueType: DatastoreValueType.string\n equalitySymbol: EqualitySymbol.eq | EqualitySymbol.ne\n options: PropertyOptions\n}\n\n/**\n * A search that looks at dated objects after the given date.\n * @interface\n */\nexport type DatesAfterQuery = Readonly<{\n /**\n * Distinguishes this query\n */\n type: 'datesAfter'\n /**\n * The property's key\n */\n key: string\n /**\n * The date value being examined.\n */\n date: string\n /**\n * The database type.\n */\n valueType: DatastoreValueType\n /**\n * Options for additional searching\n */\n options: {\n /**\n * Should this search be equalsTo as well as after?\n */\n equalToAndAfter: boolean\n }\n}>\n\n/**\n * A search query that looks at dates before the given date.\n * @interface\n */\nexport type DatesBeforeQuery = Readonly<{\n /**\n * Distinguishes this query\n */\n type: 'datesBefore'\n /**\n * The property's key.\n */\n key: string\n /**\n * The date value being examined.\n */\n date: string\n /**\n * The database value type.\n */\n valueType: DatastoreValueType\n /**\n * Options for additional searching\n */\n options: {\n /**\n * Should this search be equalsTo as well as before?\n */\n equalToAndBefore: boolean\n }\n}>\n\n/**\n * Additional configurations for ORM based properties.\n * @interface\n */\nexport type OrmPropertyConfig<T extends Arrayable<DataValue>> =\n PropertyConfig<T> &\n Readonly<{\n /**\n * Validator: Checks to make sure that there is only one instance in a datastore that has this property's value.\n * NOTE: The value is a property KEY. Not true or false.\n */\n unique?: string\n }>\n\n/**\n * Additional context that is provided for ORM based instance.\n * @interface\n */\nexport type OrmValidatorContext = Readonly<{\n /**\n * IMPORTANT: Sometimes you do not want to do any ORM based validation because of speed.\n * This disables any orm based validation, and only runs non-orm validation.\n */\n noOrmValidation?: boolean\n}> &\n ValidatorContext\n\n/**\n * Options for a property query.\n */\nexport type PropertyOptions = {\n /**\n * Is this a case sensitive search?\n */\n caseSensitive?: boolean\n /**\n * Is the value a startsWith query?\n */\n startsWith?: boolean\n /**\n * Is the value a endsWith query?\n */\n endsWith?: boolean\n /**\n * Is the value a includes query?\n */\n includes?: boolean\n /**\n * The type of value\n */\n type?: DatastoreValueType\n /**\n * An equality symbol.\n */\n equalitySymbol?: EqualitySymbol\n}\n\n/**\n * An object that has both an Orm Model Factory (that can make Orm Models) as well as a loaded fetcher\n * that can retrieve referenced models as needed. See {@see \"functional-models.ModelReference\"}\n * @interface\n */\nexport type Orm = {\n /**\n * A model factory that can produce {@link OrmModel}\n */\n Model: OrmModelFactory\n /**\n * A fetcher for use with Model References\n */\n fetcher: ModelInstanceFetcher<OrmModelExtensions, OrmModelInstanceExtensions>\n}\n\n/**\n * The sort order.\n */\nexport enum SortOrder {\n asc = 'asc',\n dsc = 'dsc',\n}\n\n/**\n * The number of instances to receive back from a query.\n */\nexport type MaxMatchStatement = number\n\n/**\n * Defines how a sort should happen. Which column and what order.\n * @interface\n */\nexport type SortStatement = {\n /**\n * The property's key/name. Also could be a \"column\"\n */\n key: string\n /**\n * Ascending or Descending sort.\n */\n order: SortOrder\n}\n\n/**\n * Pagination can be anything.\n */\nexport type PaginationQuery = any\n\n/**\n * A query to a search function.\n * @interface\n */\nexport type OrmSearch = {\n /**\n * Optional: A number of max records to return.\n */\n take?: MaxMatchStatement\n /**\n * Optional: Sorting.\n */\n sort?: SortStatement\n /**\n * Optional: Pagination information\n */\n page?: PaginationQuery\n /**\n * Optional: Querying tokens.\n */\n query: readonly QueryTokens[]\n}\n\n/**\n * Statements that make up the meat of QueryTokens\n */\nexport type Query =\n | PropertyQuery\n | DatesAfterQuery\n | DatesBeforeQuery\n | StringPropertyQuery\n\n/**\n * A token type that links two queries together.\n */\nexport type BooleanQuery = 'AND' | 'OR'\n\n/**\n * A generic structure of querys.\n */\nexport type QueryTokens =\n | readonly QueryTokens[][]\n | readonly QueryTokens[]\n | BooleanQuery\n | Query\n\n/**\n * Builder functions that are not property related.\n * @interface\n */\ntype NonQueryBuilder = Readonly<{\n /**\n * Creates a pagination.\n * @param value - Can be anything\n */\n pagination: (value: any) => BuilderV2Link & InnerBuilderV2\n /**\n * Creates a sort.\n * @param key - The key to sort on\n * @param sortOrder - The order to sort by. Defaults to ascending.\n */\n sort: (key: string, sortOrder?: SortOrder) => BuilderV2Link & InnerBuilderV2\n /**\n * Maximum number of elements to return.\n * @param count - The count\n */\n take: (count: number) => BuilderV2Link & InnerBuilderV2\n /**\n * Compiles the builder into a search query.\n */\n compile: () => OrmSearch\n}>\n\n/**\n * An in between or ending type to a builder creating a SearchQuery\n * @interface\n */\nexport type BuilderV2Link = NonQueryBuilder &\n Readonly<{\n /**\n * Links together two or more {@link Query} or complex queries.\n */\n and: () => QueryBuilder\n /**\n * Links together two or more {@link Query} or complex queries.\n */\n or: () => QueryBuilder\n }>\n\n/**\n * A function that can either take a builder or raw QueryTokens[] and create a sub-query.\n * @param builder - Can be either a BuilderV2 or a hand written Query\n **/\nexport type SubBuilderFunction = (\n builder: QueryBuilder\n) => Omit<OrmSearch, 'take' | 'sort' | 'page'> | (QueryBuilder | BuilderV2Link)\n\n/**\n * A search builder is a structured way to create a complex query.\n * @interface\n */\nexport type QueryBuilder = InnerBuilderV2 & NonQueryBuilder\n\n/**\n * A builder for version 3.0 search queries.\n * @interface\n */\nexport type InnerBuilderV2 = {\n /**\n * Creates a query that has nested property queries.\n * @param subBuilderFunc - A function that can return a Builder\n */\n complex: (subBuilderFunc: SubBuilderFunction) => BuilderV2Link\n /**\n * Searches for elements that are after the given date.\n * NOTE: It can be very important to set the valueType to either string or Date depending on what datastore you are using.\n * @param key - The property name/key to use.\n * @param jsDate - The date to search.\n * @param options - Additional options.\n */\n datesAfter: (\n key: string,\n jsDate: Date | string,\n options?: { valueType?: DatastoreValueType; equalToAndAfter?: boolean }\n ) => BuilderV2Link\n /**\n * Searches for elements that are before the given date.\n * NOTE: It can be very important to set the valueType to either string or Date depending on what datastore you are using.\n * @param key - The property name/key to use.\n * @param jsDate - The date to search.\n * @param options - Additional options.\n */\n datesBefore: (\n key: string,\n jsDate: Date | string,\n options?: { valueType?: DatastoreValueType; equalToAndBefore?: boolean }\n ) => BuilderV2Link\n /**\n * Search a value\n * @param key - The property name/key to use.\n * @param value - The value to match.\n * @param options - Additional options.\n */\n property: (\n key: string,\n value: any,\n options?: Partial<PropertyOptions>\n ) => BuilderV2Link\n}\n\n/**\n * The types of primary key properties.\n */\nexport type PrimaryKeyPropertyType =\n | PropertyType.UniqueId\n | PropertyType.Text\n | PropertyType.Integer\n\n/**\n * A function that can generate a primary key for a model.\n * @param model - The model to generate a primary key for.\n * @returns A promise that resolves to the primary key.\n */\nexport type PrimaryKeyGenerator = <\n TValue extends PrimaryKeyType,\n TData extends DataDescription,\n>(\n value: TValue,\n modelData: CreateParams<TData>,\n instance: ModelInstance<TData>\n) => Promise<PrimaryKeyType>\n\n/**\n * A property that represents a key in a database.\n * By default it is a \"uuid\" type, but if you want to use an arbitrary string, or an integer type you can set the `dataType` property.\n * @interface\n */\nexport type DatabaseKeyPropertyConfig<\n TValue extends CanBeNullableType<PrimaryKeyType> = PrimaryKeyType,\n> = PropertyConfig<TValue> &\n Readonly<{\n /**\n * Sets the type of the key.\n * @default PrimaryKeyDataType.Uuid\n */\n dataType?: PrimaryKeyPropertyType\n /**\n * If true, the key will be automatically generated if not provided. Only applies to uuids and integers\n * @default true\n */\n auto?: boolean\n /**\n * Optional: A custom primary key generator function to use for models. If the property type is UniqueId (default) then this will produce random UUID. If the property type is a number, a random number will be generated.\n * If using a SQL-like database that uses numbers, its HIGHLY recommended to get a number from the database itself.\n */\n primaryKeyGenerator?: PrimaryKeyGenerator\n }>\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;;;ACsBV,IAAK,iBAAL,kBAAKA,oBAAL;AAEL,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,SAAM;AAEN,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,SAAM;AAEN,EAAAA,gBAAA,QAAK;AAZK,SAAAA;AAAA,GAAA;AA6BL,IAAM,2BAA2B,OAAO,OAAO,cAAc;;;AD5C7D,IAAM,kBAAkB,CAC7B,cACA,aACA,QACA,cACA,oBACiB;AACjB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,aAAO,YAAAC;AAAA,IACL,OAAO,IAAI,CAAC,GAAG,UAAU;AACvB,aAAO,CAAC,OAAqB;AAC3B,cAAM,eAAe,GAAG,SAAS,aAAa,GAAG;AAAA,UAC/C,GAAI,mBAAmB,CAAC;AAAA,UACxB,MAAM;AAAA,QACR,CAAC;AAED,eAAO,QAAQ,OAAO,SAAS,IAAI,aAAa,GAAG,IAAI;AAAA,MACzD;AAAA,IACF,CAAC;AAAA,EACH,EAAE,YAAY;AAChB;AAKO,IAAM,mBAAmB,CAC9B,cACA,aACA,QACA,iBACiB;AACjB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,aAAO,YAAAA;AAAA,IACL,OAAO,IAAI,CAAC,GAAG,UAAU;AACvB,aAAO,CAAC,OAAqB;AAC3B,cAAM,eAAe,GAAG,SAAS,aAAa,GAAG;AAAA,UAC/C,MAAM;AAAA,QACR,CAAC;AAED,eAAO,QAAQ,OAAO,SAAS,IAAI,aAAa,IAAI,IAAI;AAAA,MAC1D;AAAA,IACF,CAAC;AAAA,EACH,EAAE,YAAY;AAChB;",
6
+ "names": ["EqualitySymbol", "flow"]
7
+ }