@autofleet/sadot 1.0.6 → 1.0.7

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 (255) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.cjs +1 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.js +1 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.cjs +1 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.js +1 -0
  5. package/dist/_virtual/rolldown_runtime.cjs +1 -0
  6. package/dist/api/index.cjs +2 -0
  7. package/dist/api/index.cjs.map +1 -0
  8. package/dist/api/index.js +1 -12
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/v1/definition/index.cjs +2 -0
  11. package/dist/api/v1/definition/index.cjs.map +1 -0
  12. package/dist/api/v1/definition/index.js +1 -116
  13. package/dist/api/v1/definition/index.js.map +1 -1
  14. package/dist/api/v1/definition/validations.cjs +2 -0
  15. package/dist/api/v1/definition/validations.cjs.map +1 -0
  16. package/dist/api/v1/definition/validations.js +1 -77
  17. package/dist/api/v1/definition/validations.js.map +1 -1
  18. package/dist/api/v1/errors.cjs +2 -0
  19. package/dist/api/v1/errors.cjs.map +1 -0
  20. package/dist/api/v1/errors.js +1 -12
  21. package/dist/api/v1/errors.js.map +1 -1
  22. package/dist/api/v1/index.cjs +2 -0
  23. package/dist/api/v1/index.cjs.map +1 -0
  24. package/dist/api/v1/index.js +1 -13
  25. package/dist/api/v1/index.js.map +1 -1
  26. package/dist/api/v1/validator/index.cjs +2 -0
  27. package/dist/api/v1/validator/index.cjs.map +1 -0
  28. package/dist/api/v1/validator/index.js +1 -143
  29. package/dist/api/v1/validator/index.js.map +1 -1
  30. package/dist/api/v1/validator/validations.cjs +2 -0
  31. package/dist/api/v1/validator/validations.cjs.map +1 -0
  32. package/dist/api/v1/validator/validations.js +1 -38
  33. package/dist/api/v1/validator/validations.js.map +1 -1
  34. package/dist/errors/index.cjs +3 -0
  35. package/dist/errors/index.cjs.map +1 -0
  36. package/dist/errors/index.js +2 -66
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/events/index.cjs +2 -0
  39. package/dist/events/index.cjs.map +1 -0
  40. package/dist/events/index.js +1 -54
  41. package/dist/events/index.js.map +1 -1
  42. package/dist/hooks/enrich.cjs +2 -0
  43. package/dist/hooks/enrich.cjs.map +1 -0
  44. package/dist/hooks/enrich.js +1 -197
  45. package/dist/hooks/enrich.js.map +1 -1
  46. package/dist/hooks/find.cjs +2 -0
  47. package/dist/hooks/find.cjs.map +1 -0
  48. package/dist/hooks/find.js +1 -29
  49. package/dist/hooks/find.js.map +1 -1
  50. package/dist/hooks/hooks.cjs +2 -0
  51. package/dist/hooks/hooks.cjs.map +1 -0
  52. package/dist/hooks/hooks.js +1 -387
  53. package/dist/hooks/hooks.js.map +1 -1
  54. package/dist/hooks/index.cjs +1 -0
  55. package/dist/hooks/index.js +1 -18
  56. package/dist/hooks/utils/updateInstanceValues.cjs +2 -0
  57. package/dist/hooks/utils/updateInstanceValues.cjs.map +1 -0
  58. package/dist/hooks/utils/updateInstanceValues.js +1 -50
  59. package/dist/hooks/utils/updateInstanceValues.js.map +1 -1
  60. package/dist/index.cjs +2 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.cts +19 -0
  63. package/dist/index.d.ts +18 -12
  64. package/dist/index.js +1 -67
  65. package/dist/index.js.map +1 -1
  66. package/dist/models/CustomFieldDefinition.cjs +2 -0
  67. package/dist/models/CustomFieldDefinition.cjs.map +1 -0
  68. package/dist/models/CustomFieldDefinition.js +1 -201
  69. package/dist/models/CustomFieldDefinition.js.map +1 -1
  70. package/dist/models/CustomFieldEntries.cjs +2 -0
  71. package/dist/models/CustomFieldEntries.cjs.map +1 -0
  72. package/dist/models/CustomFieldEntries.js +1 -129
  73. package/dist/models/CustomFieldEntries.js.map +1 -1
  74. package/dist/models/CustomFieldValue.cjs +2 -0
  75. package/dist/models/CustomFieldValue.cjs.map +1 -0
  76. package/dist/models/CustomFieldValue.js +1 -160
  77. package/dist/models/CustomFieldValue.js.map +1 -1
  78. package/dist/models/CustomValidator.cjs +2 -0
  79. package/dist/models/CustomValidator.cjs.map +1 -0
  80. package/dist/models/CustomValidator.js +1 -104
  81. package/dist/models/CustomValidator.js.map +1 -1
  82. package/dist/models/index.cjs +2 -0
  83. package/dist/models/index.cjs.map +1 -0
  84. package/dist/models/index.js +1 -131
  85. package/dist/models/index.js.map +1 -1
  86. package/dist/models/tests/AssociatedTestModel.cjs +2 -0
  87. package/dist/models/tests/AssociatedTestModel.cjs.map +1 -0
  88. package/dist/models/tests/AssociatedTestModel.js +1 -73
  89. package/dist/models/tests/AssociatedTestModel.js.map +1 -1
  90. package/dist/models/tests/TestModel.cjs +2 -0
  91. package/dist/models/tests/TestModel.cjs.map +1 -0
  92. package/dist/models/tests/TestModel.js +1 -71
  93. package/dist/models/tests/TestModel.js.map +1 -1
  94. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +2 -0
  95. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs.map +1 -0
  96. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +1 -53
  97. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js.map +1 -1
  98. package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +2 -0
  99. package/dist/models/tests/contextAwareModels/ContextTestModel.cjs.map +1 -0
  100. package/dist/models/tests/contextAwareModels/ContextTestModel.js +1 -47
  101. package/dist/models/tests/contextAwareModels/ContextTestModel.js.map +1 -1
  102. package/dist/repository/definition.cjs +2 -0
  103. package/dist/repository/definition.cjs.map +1 -0
  104. package/dist/repository/definition.js +1 -123
  105. package/dist/repository/definition.js.map +1 -1
  106. package/dist/repository/entries.cjs +2 -0
  107. package/dist/repository/entries.cjs.map +1 -0
  108. package/dist/repository/entries.js +1 -92
  109. package/dist/repository/entries.js.map +1 -1
  110. package/dist/repository/utils/formatValues.cjs +2 -0
  111. package/dist/repository/utils/formatValues.cjs.map +1 -0
  112. package/dist/repository/utils/formatValues.js +1 -16
  113. package/dist/repository/utils/formatValues.js.map +1 -1
  114. package/dist/repository/validator.cjs +2 -0
  115. package/dist/repository/validator.cjs.map +1 -0
  116. package/dist/repository/validator.js +1 -69
  117. package/dist/repository/validator.js.map +1 -1
  118. package/dist/repository/value.cjs +2 -0
  119. package/dist/repository/value.cjs.map +1 -0
  120. package/dist/repository/value.js +1 -124
  121. package/dist/repository/value.js.map +1 -1
  122. package/dist/scopes/filter.cjs +2 -0
  123. package/dist/scopes/filter.cjs.map +1 -0
  124. package/dist/scopes/filter.d.cts +23 -0
  125. package/dist/scopes/filter.d.ts +22 -29
  126. package/dist/scopes/filter.js +1 -75
  127. package/dist/scopes/filter.js.map +1 -1
  128. package/dist/scopes/helpers/filter.helpers.cjs +46 -0
  129. package/dist/scopes/helpers/filter.helpers.cjs.map +1 -0
  130. package/dist/scopes/helpers/filter.helpers.d.cts +17 -0
  131. package/dist/scopes/helpers/filter.helpers.d.ts +15 -40
  132. package/dist/scopes/helpers/filter.helpers.js +24 -183
  133. package/dist/scopes/helpers/filter.helpers.js.map +1 -1
  134. package/dist/scopes/index.cjs +1 -0
  135. package/dist/scopes/index.js +1 -7
  136. package/dist/types/index.d.cts +44 -0
  137. package/dist/types/index.d.ts +41 -44
  138. package/dist/utils/constants/index.cjs +2 -0
  139. package/dist/utils/constants/index.cjs.map +1 -0
  140. package/dist/utils/constants/index.d.cts +22 -0
  141. package/dist/utils/constants/index.d.ts +20 -17
  142. package/dist/utils/constants/index.js +1 -22
  143. package/dist/utils/constants/index.js.map +1 -1
  144. package/dist/utils/db/index.cjs +2 -0
  145. package/dist/utils/db/index.cjs.map +1 -0
  146. package/dist/utils/db/index.js +1 -24
  147. package/dist/utils/db/index.js.map +1 -1
  148. package/dist/utils/helpers/index.cjs +2 -0
  149. package/dist/utils/helpers/index.cjs.map +1 -0
  150. package/dist/utils/helpers/index.d.cts +31 -0
  151. package/dist/utils/helpers/index.d.ts +28 -23
  152. package/dist/utils/helpers/index.js +1 -40
  153. package/dist/utils/helpers/index.js.map +1 -1
  154. package/dist/utils/init.cjs +2 -0
  155. package/dist/utils/init.cjs.map +1 -0
  156. package/dist/utils/init.js +1 -112
  157. package/dist/utils/init.js.map +1 -1
  158. package/dist/utils/logger/index.cjs +2 -0
  159. package/dist/utils/logger/index.cjs.map +1 -0
  160. package/dist/utils/logger/index.js +1 -42
  161. package/dist/utils/logger/index.js.map +1 -1
  162. package/dist/utils/scopeAttributes.cjs +2 -0
  163. package/dist/utils/scopeAttributes.cjs.map +1 -0
  164. package/dist/utils/scopeAttributes.js +1 -11
  165. package/dist/utils/scopeAttributes.js.map +1 -1
  166. package/dist/utils/validations/index.cjs +2 -0
  167. package/dist/utils/validations/index.cjs.map +1 -0
  168. package/dist/utils/validations/index.js +1 -41
  169. package/dist/utils/validations/index.js.map +1 -1
  170. package/dist/utils/validations/schema/custom-fields.cjs +2 -0
  171. package/dist/utils/validations/schema/custom-fields.cjs.map +1 -0
  172. package/dist/utils/validations/schema/custom-fields.d.cts +7 -0
  173. package/dist/utils/validations/schema/custom-fields.d.ts +6 -2
  174. package/dist/utils/validations/schema/custom-fields.js +1 -9
  175. package/dist/utils/validations/schema/custom-fields.js.map +1 -1
  176. package/dist/utils/validations/schema/validator-schema.cjs +2 -0
  177. package/dist/utils/validations/schema/validator-schema.cjs.map +1 -0
  178. package/dist/utils/validations/schema/validator-schema.js +1 -95
  179. package/dist/utils/validations/schema/validator-schema.js.map +1 -1
  180. package/dist/utils/validations/validators/index.cjs +2 -0
  181. package/dist/utils/validations/validators/index.cjs.map +1 -0
  182. package/dist/utils/validations/validators/index.js +1 -40
  183. package/dist/utils/validations/validators/index.js.map +1 -1
  184. package/dist/utils/validations/validators/select.validator.cjs +2 -0
  185. package/dist/utils/validations/validators/select.validator.cjs.map +1 -0
  186. package/dist/utils/validations/validators/select.validator.js +1 -12
  187. package/dist/utils/validations/validators/select.validator.js.map +1 -1
  188. package/dist/utils/validations/validators/status.validator.cjs +2 -0
  189. package/dist/utils/validations/validators/status.validator.cjs.map +1 -0
  190. package/dist/utils/validations/validators/status.validator.js +1 -15
  191. package/dist/utils/validations/validators/status.validator.js.map +1 -1
  192. package/package.json +7 -3
  193. package/dist/api/index.d.ts +0 -3
  194. package/dist/api/v1/definition/index.d.ts +0 -3
  195. package/dist/api/v1/definition/validations.d.ts +0 -2
  196. package/dist/api/v1/errors.d.ts +0 -4
  197. package/dist/api/v1/index.d.ts +0 -3
  198. package/dist/api/v1/validator/index.d.ts +0 -3
  199. package/dist/api/v1/validator/validations.d.ts +0 -6
  200. package/dist/errors/index.d.ts +0 -24
  201. package/dist/events/index.d.ts +0 -5
  202. package/dist/hooks/create.d.ts +0 -10
  203. package/dist/hooks/create.js +0 -96
  204. package/dist/hooks/create.js.map +0 -1
  205. package/dist/hooks/enrich.d.ts +0 -25
  206. package/dist/hooks/find.d.ts +0 -1
  207. package/dist/hooks/hooks.d.ts +0 -17
  208. package/dist/hooks/index.d.ts +0 -5
  209. package/dist/hooks/index.js.map +0 -1
  210. package/dist/hooks/update.d.ts +0 -10
  211. package/dist/hooks/update.js +0 -50
  212. package/dist/hooks/update.js.map +0 -1
  213. package/dist/hooks/utils/updateInstanceValues.d.ts +0 -15
  214. package/dist/hooks/workaround.d.ts +0 -10
  215. package/dist/hooks/workaround.js +0 -38
  216. package/dist/hooks/workaround.js.map +0 -1
  217. package/dist/models/CustomFieldDefinition.d.ts +0 -25
  218. package/dist/models/CustomFieldEntries.d.ts +0 -15
  219. package/dist/models/CustomFieldValue.d.ts +0 -16
  220. package/dist/models/CustomValidator.d.ts +0 -17
  221. package/dist/models/index.d.ts +0 -18
  222. package/dist/models/tests/AssociatedTestModel.d.ts +0 -12
  223. package/dist/models/tests/TestModel.d.ts +0 -12
  224. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +0 -10
  225. package/dist/models/tests/contextAwareModels/ContextTestModel.d.ts +0 -13
  226. package/dist/repository/definition.d.ts +0 -37
  227. package/dist/repository/entries.d.ts +0 -13
  228. package/dist/repository/utils/formatValues.d.ts +0 -3
  229. package/dist/repository/validator.d.ts +0 -28
  230. package/dist/repository/value.d.ts +0 -28
  231. package/dist/scopes/index.d.ts +0 -2
  232. package/dist/scopes/index.js.map +0 -1
  233. package/dist/types/definition/index.d.ts +0 -25
  234. package/dist/types/definition/index.js +0 -3
  235. package/dist/types/definition/index.js.map +0 -1
  236. package/dist/types/entries/index.d.ts +0 -25
  237. package/dist/types/entries/index.js +0 -3
  238. package/dist/types/entries/index.js.map +0 -1
  239. package/dist/types/index.js +0 -3
  240. package/dist/types/index.js.map +0 -1
  241. package/dist/types/value/index.d.ts +0 -15
  242. package/dist/types/value/index.js +0 -3
  243. package/dist/types/value/index.js.map +0 -1
  244. package/dist/utils/db/index.d.ts +0 -4
  245. package/dist/utils/init.d.ts +0 -7
  246. package/dist/utils/logger/index.d.ts +0 -3
  247. package/dist/utils/scopeAttributes.d.ts +0 -2
  248. package/dist/utils/validations/index.d.ts +0 -8
  249. package/dist/utils/validations/schema/validator-schema.d.ts +0 -9
  250. package/dist/utils/validations/type.d.ts +0 -15
  251. package/dist/utils/validations/type.js +0 -3
  252. package/dist/utils/validations/type.js.map +0 -1
  253. package/dist/utils/validations/validators/index.d.ts +0 -14
  254. package/dist/utils/validations/validators/select.validator.d.ts +0 -5
  255. package/dist/utils/validations/validators/status.validator.d.ts +0 -12
package/dist/index.d.ts CHANGED
@@ -1,13 +1,19 @@
1
- import type { Application } from 'express';
2
- import type { Sequelize } from 'sequelize-typescript';
3
- import type { CustomFieldOptions, ModelFetcher, Models } from './types';
4
- export * from './utils/validations/schema/custom-fields';
5
- export * from './utils/constants';
6
- export * from './utils/helpers';
1
+ import { CUSTOM_FIELDS_FILTER_SCOPE, CustomFieldDefinitionType, supportedEntities } from "./utils/constants/index.js";
2
+ import { CustomFieldOptions, ModelFetcher, Models } from "./types/index.js";
3
+ import { CustomFieldsSchema } from "./utils/validations/schema/custom-fields.js";
4
+ import { generateCustomFieldSearchQueryPayload, generateRandomString } from "./utils/helpers/index.js";
5
+ import { customFieldsSortScope } from "./scopes/filter.js";
6
+ import { Sequelize } from "sequelize-typescript";
7
+ import { Application } from "express";
8
+
9
+ //#region src/index.d.ts
10
+
7
11
  /**
8
- * Adding custom fields enrichment to the models inside the MODELS_FILE_NAME json file
9
- * @see {@link 'custom-fields/config'} for configurations
10
- */
11
- declare const useCustomFields: (app: Pick<Application, 'use'> | null, getModel: ModelFetcher, options: CustomFieldOptions) => Promise<Sequelize>;
12
- export default useCustomFields;
13
- export declare const disableCustomFields: (models: Models[], getModel: ModelFetcher) => void;
12
+ * Adding custom fields enrichment to the models inside the MODELS_FILE_NAME json file
13
+ * @see {@link 'custom-fields/config'} for configurations
14
+ */
15
+ declare const useCustomFields: (app: Pick<Application, "use"> | null, getModel: ModelFetcher, options: CustomFieldOptions) => Promise<Sequelize>;
16
+ declare const disableCustomFields: (models: Models[], getModel: ModelFetcher) => void;
17
+ //#endregion
18
+ export { CUSTOM_FIELDS_FILTER_SCOPE, CustomFieldDefinitionType, CustomFieldsSchema, customFieldsSortScope, useCustomFields as default, disableCustomFields, generateCustomFieldSearchQueryPayload, generateRandomString, supportedEntities };
19
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,68 +1,2 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.disableCustomFields = void 0;
33
- const models_1 = require("./models");
34
- const api_1 = __importDefault(require("./api"));
35
- const db_1 = __importDefault(require("./utils/db"));
36
- const logger_1 = __importStar(require("./utils/logger"));
37
- const init_1 = require("./utils/init");
38
- __exportStar(require("./utils/validations/schema/custom-fields"), exports);
39
- __exportStar(require("./utils/constants"), exports);
40
- __exportStar(require("./utils/helpers"), exports);
41
- /**
42
- * Adding custom fields enrichment to the models inside the MODELS_FILE_NAME json file
43
- * @see {@link 'custom-fields/config'} for configurations
44
- */
45
- const useCustomFields = async (app, getModel, options) => {
46
- (0, logger_1.tryAddingTraceIdMiddleware)().catch(() => null);
47
- const { models, useCustomFieldsEntries } = options;
48
- if (app) {
49
- app.use('/api', api_1.default);
50
- }
51
- const sequelize = options.sequelize ?? (0, db_1.default)(options.databaseConfig);
52
- if (process.env.NODE_ENV === 'test') {
53
- await (0, models_1.initTestModels)(sequelize);
54
- }
55
- // The order is important
56
- (0, init_1.addHooks)(models, getModel, { useCustomFieldsEntries });
57
- await (0, models_1.initTables)(sequelize, options.getUser, { useCustomFieldsEntries });
58
- (0, init_1.addScopes)(models, getModel, { useCustomFieldsEntries });
59
- (0, init_1.applyCustomAssociation)(models);
60
- logger_1.default.debug('sadot - custom fields finished initializing with models', models);
61
- return sequelize;
62
- };
63
- exports.default = useCustomFields;
64
- const disableCustomFields = (models, getModel) => {
65
- (0, init_1.removeHooks)(models, getModel);
66
- };
67
- exports.disableCustomFields = disableCustomFields;
1
+ import e,{tryAddingTraceIdMiddleware as t}from"./utils/logger/index.js";import{CUSTOM_FIELDS_FILTER_SCOPE as n,CustomFieldDefinitionType as r,supportedEntities as i}from"./utils/constants/index.js";import{initTables as a,initTestModels as o}from"./models/index.js";import s from"./api/index.js";import c from"./utils/db/index.js";import{generateCustomFieldSearchQueryPayload as l,generateRandomString as u}from"./utils/helpers/index.js";import{customFieldsSortScope as d}from"./scopes/filter.js";import{addHooks as f,addScopes as p,applyCustomAssociation as m,removeHooks as h}from"./utils/init.js";import{CustomFieldsSchema as g}from"./utils/validations/schema/custom-fields.js";var _=async(n,r,i)=>{t().catch(()=>null);let{models:l,useCustomFieldsEntries:u}=i;n&&n.use(`/api`,s);let d=i.sequelize??c(i.databaseConfig);return process.env.NODE_ENV===`test`&&await o(d),f(l,r,{useCustomFieldsEntries:u}),await a(d,i.getUser,{useCustomFieldsEntries:u}),p(l,r,{useCustomFieldsEntries:u}),m(l),e.debug(`sadot - custom fields finished initializing with models`,l),d};const v=(e,t)=>{h(e,t)};export{n as CUSTOM_FIELDS_FILTER_SCOPE,r as CustomFieldDefinitionType,g as CustomFieldsSchema,d as customFieldsSortScope,_ as default,v as disableCustomFields,l as generateCustomFieldSearchQueryPayload,u as generateRandomString,i as supportedEntities};
68
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAEkB;AAClB,gDAAwB;AACxB,oDAAgC;AAChC,yDAAoE;AAEpE,uCAEsB;AAEtB,2EAAyD;AAEzD,oDAAkC;AAElC,kDAAgC;AAEhC;;;GAGG;AACH,MAAM,eAAe,GAAG,KAAK,EAC3B,GAAoC,EACpC,QAAsB,EACtB,OAA2B,EACP,EAAE;IACtB,IAAA,mCAA0B,GAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;IACnD,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,aAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,YAAM,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,yBAAyB;IACzB,IAAA,eAAQ,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvD,MAAM,IAAA,mBAAU,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACzE,IAAA,gBAAS,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACxD,IAAA,6BAAsB,EAAC,MAAM,CAAC,CAAC;IAE/B,gBAAM,CAAC,KAAK,CAAC,yDAAyD,EAAE,MAAM,CAAC,CAAC;IAChF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC;AAExB,MAAM,mBAAmB,GAAG,CAAC,MAAgB,EAAE,QAAsB,EAAQ,EAAE;IACpF,IAAA,kBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B"}
1
+ {"version":3,"file":"index.js","names":["api","initDB"],"sources":["../src/index.ts"],"sourcesContent":["import type { Application } from 'express';\nimport type { Sequelize } from 'sequelize-typescript';\nimport {\n initTables, initTestModels,\n} from './models';\nimport api from './api';\nimport initDB from './utils/db';\nimport logger, { tryAddingTraceIdMiddleware } from './utils/logger';\nimport type { CustomFieldOptions, ModelFetcher, Models } from './types';\nimport {\n addHooks, addScopes, applyCustomAssociation, removeHooks,\n} from './utils/init';\n\nexport * from './utils/validations/schema/custom-fields';\n\nexport * from './utils/constants';\n\nexport * from './utils/helpers';\n\nexport { customFieldsSortScope } from './scopes/filter';\n\n/**\n * Adding custom fields enrichment to the models inside the MODELS_FILE_NAME json file\n * @see {@link 'custom-fields/config'} for configurations\n */\nconst useCustomFields = async (\n app: Pick<Application, 'use'> | null,\n getModel: ModelFetcher,\n options: CustomFieldOptions,\n): Promise<Sequelize> => {\n tryAddingTraceIdMiddleware().catch(() => null);\n const { models, useCustomFieldsEntries } = options;\n if (app) {\n app.use('/api', api);\n }\n const sequelize = options.sequelize ?? initDB(options.databaseConfig);\n if (process.env.NODE_ENV === 'test') {\n await initTestModels(sequelize);\n }\n // The order is important\n addHooks(models, getModel, { useCustomFieldsEntries });\n await initTables(sequelize, options.getUser, { useCustomFieldsEntries });\n addScopes(models, getModel, { useCustomFieldsEntries });\n applyCustomAssociation(models);\n\n logger.debug('sadot - custom fields finished initializing with models', models);\n return sequelize;\n};\n\nexport default useCustomFields;\n\nexport const disableCustomFields = (models: Models[], getModel: ModelFetcher): void => {\n removeHooks(models, getModel);\n};\n"],"mappings":"wqBAiDA,IAAA,EAxBwB,MACtB,EACA,EACA,IACuB,CACvB,GAA4B,CAAC,UAAY,KAAK,CAC9C,GAAM,CAAE,SAAQ,0BAA2B,EACvC,GACF,EAAI,IAAI,OAAQA,EAAI,CAEtB,IAAM,EAAY,EAAQ,WAAaC,EAAO,EAAQ,eAAe,CAWrE,OAVI,QAAQ,IAAI,WAAa,QAC3B,MAAM,EAAe,EAAU,CAGjC,EAAS,EAAQ,EAAU,CAAE,yBAAwB,CAAC,CACtD,MAAM,EAAW,EAAW,EAAQ,QAAS,CAAE,yBAAwB,CAAC,CACxE,EAAU,EAAQ,EAAU,CAAE,yBAAwB,CAAC,CACvD,EAAuB,EAAO,CAE9B,EAAO,MAAM,0DAA2D,EAAO,CACxE,GAKT,MAAa,GAAuB,EAAkB,IAAiC,CACrF,EAAY,EAAQ,EAAS"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/logger/index.cjs`),n=require(`../utils/constants/index.cjs`),r=require(`../utils/validations/validators/index.cjs`),i=require(`../events/index.cjs`),a=require(`../errors/index.cjs`),o=require(`../utils/validations/index.cjs`),s=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.cjs`),c=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.cjs`),l=require(`./CustomFieldValue.cjs`);require(`./index.cjs`);let u=require(`sequelize-typescript`);u=e.__toESM(u);var d,f,p,m,h,g;let _=class extends u.Model{static displayNameDefaultValue(e){if(e?.displayName||(e.displayName=e.name),![null,void 0].includes(e.defaultValue)){let t=o.validateValue(e.defaultValue,e.fieldType,e.validation);if(t.error)throw new a.InvalidValueError(e.defaultValue,e.name,t.error)}}static afterSaveHandler(e,t){t.transaction?t.transaction.afterCommit(()=>i.sendDimEvent(e)):i.sendDimEvent(e)}};c.__decorate([u.PrimaryKey,(0,u.Column)({type:u.DataType.UUID,defaultValue:u.DataType.UUIDV4,allowNull:!1}),s.__decorateMetadata(`design:type`,String)],_.prototype,`id`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.STRING,allowNull:!1}),s.__decorateMetadata(`design:type`,String)],_.prototype,`name`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.STRING}),s.__decorateMetadata(`design:type`,String)],_.prototype,`displayName`,void 0),c.__decorate([(0,u.Is)(`SupportedType`,e=>{if(!Object.values(n.CustomFieldDefinitionType).includes(e))throw new a.UnsupportedCustomFieldTypeError(`"${e}" is not a supported type.`)}),(0,u.Column)({type:u.DataType.STRING,allowNull:!1}),s.__decorateMetadata(`design:type`,typeof(d=n.CustomFieldDefinitionType!==void 0&&n.CustomFieldDefinitionType)==`function`?d:Object)],_.prototype,`fieldType`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.JSONB}),s.__decorateMetadata(`design:type`,Object)],_.prototype,`validation`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.UUID,allowNull:!1}),s.__decorateMetadata(`design:type`,String)],_.prototype,`entityId`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.STRING,allowNull:!1}),s.__decorateMetadata(`design:type`,String)],_.prototype,`entityType`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.STRING,allowNull:!1}),s.__decorateMetadata(`design:type`,String)],_.prototype,`modelType`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.TEXT}),s.__decorateMetadata(`design:type`,String)],_.prototype,`description`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.BOOLEAN,defaultValue:!1}),s.__decorateMetadata(`design:type`,Boolean)],_.prototype,`required`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.BOOLEAN,defaultValue:!1}),s.__decorateMetadata(`design:type`,Boolean)],_.prototype,`disabled`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.JSONB,allowNull:!0}),s.__decorateMetadata(`design:type`,Object)],_.prototype,`defaultValue`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.DATE,allowNull:!1}),s.__decorateMetadata(`design:type`,typeof(f=typeof Date<`u`&&Date)==`function`?f:Object)],_.prototype,`createdAt`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.DATE,allowNull:!0}),s.__decorateMetadata(`design:type`,typeof(p=typeof Date<`u`&&Date)==`function`?p:Object)],_.prototype,`updatedAt`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.DATE,allowNull:!0}),s.__decorateMetadata(`design:type`,typeof(m=typeof Date<`u`&&Date)==`function`?m:Object)],_.prototype,`deletedAt`,void 0),c.__decorate([(0,u.Column)({type:u.DataType.BOOLEAN,defaultValue:!1,allowNull:!1}),s.__decorateMetadata(`design:type`,Boolean)],_.prototype,`blockEditingFromUI`,void 0),c.__decorate([(0,u.HasMany)(()=>l.default),s.__decorateMetadata(`design:type`,Array)],_.prototype,`values`,void 0),c.__decorate([u.BeforeCreate,s.__decorateMetadata(`design:type`,Function),s.__decorateMetadata(`design:paramtypes`,[typeof(h=_!==void 0&&_)==`function`?h:Object]),s.__decorateMetadata(`design:returntype`,void 0)],_,`displayNameDefaultValue`,null),c.__decorate([u.AfterSave,s.__decorateMetadata(`design:type`,Function),s.__decorateMetadata(`design:paramtypes`,[typeof(g=_!==void 0&&_)==`function`?g:Object,Object]),s.__decorateMetadata(`design:returntype`,void 0)],_,`afterSaveHandler`,null),_=c.__decorate([(0,u.DefaultScope)(()=>({where:{disabled:!1}})),(0,u.Table)({indexes:[{name:`unique_name_model_type`,fields:[`model_type`,`entity_id`,`name`],unique:!0}],timestamps:!0,validate:{validationByType(){if(!this.validation&&r.CustomValidationTypes[this.fieldType])throw t.default.error(`No custom validation for custom field type ${this.fieldType} found`),new a.UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`)}}})],_);var v=_;exports.default=v;
2
+ //# sourceMappingURL=CustomFieldDefinition.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldDefinition.cjs","names":["CustomFieldDefinition","Model","validateValue","InvalidValueError","sendDimEvent","PrimaryKey","DataType","CustomFieldDefinitionType","UnsupportedCustomFieldTypeError","CustomFieldValue","BeforeCreate","AfterSave","CustomValidationTypes","UnsupportedCustomValidationError"],"sources":["../../src/models/CustomFieldDefinition.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n DataType,\n HasMany,\n PrimaryKey,\n BeforeCreate,\n DefaultScope,\n AfterSave,\n Is,\n} from 'sequelize-typescript';\nimport type { CreateOptions } from 'sequelize';\nimport { CustomFieldDefinitionType } from '../utils/constants';\nimport { CustomValidationTypes } from '../utils/validations/validators';\nimport { CustomFieldValue } from '.';\nimport { sendDimEvent } from '../events';\nimport { InvalidValueError, UnsupportedCustomFieldTypeError, UnsupportedCustomValidationError } from '../errors';\nimport logger from '../utils/logger';\nimport { validateValue } from '../utils/validations';\n\n@DefaultScope(() => ({ where: { disabled: false } }))\n@Table({\n indexes: [\n {\n name: 'unique_name_model_type',\n fields: ['model_type', 'entity_id', 'name'],\n unique: true,\n },\n ],\n timestamps: true,\n validate: {\n validationByType(this: CustomFieldDefinition) {\n // Verify the validation is provided if needed\n if (!this.validation && CustomValidationTypes[this.fieldType]) {\n // TODO: enforce the validation-object schema based on the fieldType\n logger.error(`No custom validation for custom field type ${this.fieldType} found`);\n throw new UnsupportedCustomValidationError(`Validation provided for \"${this.fieldType}\" is not supported`);\n }\n },\n },\n})\nclass CustomFieldDefinition extends Model {\n @PrimaryKey\n @Column({\n type: DataType.UUID,\n defaultValue: DataType.UUIDV4,\n allowNull: false,\n })\n declare id: string;\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n name!: string;\n\n @Column({\n type: DataType.STRING,\n })\n displayName?: string; // Defaulted to name with beforeCreate hook\n\n @Is('SupportedType', (value) => {\n if (!Object.values(CustomFieldDefinitionType).includes(value as CustomFieldDefinitionType)) {\n throw new UnsupportedCustomFieldTypeError(`\"${value}\" is not a supported type.`);\n }\n })\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n fieldType!: CustomFieldDefinitionType;\n\n @Column({\n type: DataType.JSONB,\n })\n validation?: any;\n\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n entityId!: string; /** Client association entity id */\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n entityType!: string; /** Client association entity type (demand source / fleet / etc.) */\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n modelType!: string; /** Model type. e.g. Vehicle / StopPoint / etc. */\n\n @Column({\n type: DataType.TEXT,\n })\n description?: string;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n })\n required?: boolean;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n })\n disabled?: boolean;\n\n @Column({\n type: DataType.JSONB,\n allowNull: true,\n })\n defaultValue?: any;\n\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare createdAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare updatedAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare deletedAt?: Date;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n allowNull: false,\n })\n blockEditingFromUI!: boolean;\n\n @HasMany(() => CustomFieldValue)\n values: CustomFieldValue[];\n\n @BeforeCreate\n static displayNameDefaultValue(instance: CustomFieldDefinition): void {\n if (!instance?.displayName) {\n // eslint-disable-next-line no-param-reassign\n instance.displayName = instance.name;\n }\n if (![null, undefined].includes(instance.defaultValue)) {\n const isValid = validateValue(instance.defaultValue, instance.fieldType, instance.validation);\n if (isValid.error) {\n throw new InvalidValueError(instance.defaultValue, instance.name, isValid.error);\n }\n }\n }\n\n @AfterSave\n static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void {\n if (options.transaction) {\n options.transaction.afterCommit(() => sendDimEvent(instance));\n } else {\n sendDimEvent(instance);\n }\n }\n}\n\nexport default CustomFieldDefinition;\n"],"mappings":"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"}
@@ -1,202 +1,2 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const sequelize_typescript_1 = require("sequelize-typescript");
16
- const constants_1 = require("../utils/constants");
17
- const validators_1 = require("../utils/validations/validators");
18
- const _1 = require(".");
19
- const events_1 = require("../events");
20
- const errors_1 = require("../errors");
21
- const logger_1 = __importDefault(require("../utils/logger"));
22
- const validations_1 = require("../utils/validations");
23
- let CustomFieldDefinition = class CustomFieldDefinition extends sequelize_typescript_1.Model {
24
- static displayNameDefaultValue(instance) {
25
- if (!instance?.displayName) {
26
- // eslint-disable-next-line no-param-reassign
27
- instance.displayName = instance.name;
28
- }
29
- if (![null, undefined].includes(instance.defaultValue)) {
30
- const isValid = (0, validations_1.validateValue)(instance.defaultValue, instance.fieldType, instance.validation);
31
- if (isValid.error) {
32
- throw new errors_1.InvalidValueError(instance.defaultValue, instance.name, isValid.error);
33
- }
34
- }
35
- }
36
- static afterSaveHandler(instance, options) {
37
- if (options.transaction) {
38
- options.transaction.afterCommit(() => (0, events_1.sendDimEvent)(instance));
39
- }
40
- else {
41
- (0, events_1.sendDimEvent)(instance);
42
- }
43
- }
44
- };
45
- __decorate([
46
- sequelize_typescript_1.PrimaryKey,
47
- (0, sequelize_typescript_1.Column)({
48
- type: sequelize_typescript_1.DataType.UUID,
49
- defaultValue: sequelize_typescript_1.DataType.UUIDV4,
50
- allowNull: false,
51
- }),
52
- __metadata("design:type", String)
53
- ], CustomFieldDefinition.prototype, "id", void 0);
54
- __decorate([
55
- (0, sequelize_typescript_1.Column)({
56
- type: sequelize_typescript_1.DataType.STRING,
57
- allowNull: false,
58
- }),
59
- __metadata("design:type", String)
60
- ], CustomFieldDefinition.prototype, "name", void 0);
61
- __decorate([
62
- (0, sequelize_typescript_1.Column)({
63
- type: sequelize_typescript_1.DataType.STRING,
64
- }),
65
- __metadata("design:type", String)
66
- ], CustomFieldDefinition.prototype, "displayName", void 0);
67
- __decorate([
68
- (0, sequelize_typescript_1.Is)('SupportedType', (value) => {
69
- if (!Object.values(constants_1.CustomFieldDefinitionType).includes(value)) {
70
- throw new errors_1.UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
71
- }
72
- }),
73
- (0, sequelize_typescript_1.Column)({
74
- type: sequelize_typescript_1.DataType.STRING,
75
- allowNull: false,
76
- }),
77
- __metadata("design:type", String)
78
- ], CustomFieldDefinition.prototype, "fieldType", void 0);
79
- __decorate([
80
- (0, sequelize_typescript_1.Column)({
81
- type: sequelize_typescript_1.DataType.JSONB,
82
- }),
83
- __metadata("design:type", Object)
84
- ], CustomFieldDefinition.prototype, "validation", void 0);
85
- __decorate([
86
- (0, sequelize_typescript_1.Column)({
87
- type: sequelize_typescript_1.DataType.UUID,
88
- allowNull: false,
89
- }),
90
- __metadata("design:type", String)
91
- ], CustomFieldDefinition.prototype, "entityId", void 0);
92
- __decorate([
93
- (0, sequelize_typescript_1.Column)({
94
- type: sequelize_typescript_1.DataType.STRING,
95
- allowNull: false,
96
- }),
97
- __metadata("design:type", String)
98
- ], CustomFieldDefinition.prototype, "entityType", void 0);
99
- __decorate([
100
- (0, sequelize_typescript_1.Column)({
101
- type: sequelize_typescript_1.DataType.STRING,
102
- allowNull: false,
103
- }),
104
- __metadata("design:type", String)
105
- ], CustomFieldDefinition.prototype, "modelType", void 0);
106
- __decorate([
107
- (0, sequelize_typescript_1.Column)({
108
- type: sequelize_typescript_1.DataType.TEXT,
109
- }),
110
- __metadata("design:type", String)
111
- ], CustomFieldDefinition.prototype, "description", void 0);
112
- __decorate([
113
- (0, sequelize_typescript_1.Column)({
114
- type: sequelize_typescript_1.DataType.BOOLEAN,
115
- defaultValue: false,
116
- }),
117
- __metadata("design:type", Boolean)
118
- ], CustomFieldDefinition.prototype, "required", void 0);
119
- __decorate([
120
- (0, sequelize_typescript_1.Column)({
121
- type: sequelize_typescript_1.DataType.BOOLEAN,
122
- defaultValue: false,
123
- }),
124
- __metadata("design:type", Boolean)
125
- ], CustomFieldDefinition.prototype, "disabled", void 0);
126
- __decorate([
127
- (0, sequelize_typescript_1.Column)({
128
- type: sequelize_typescript_1.DataType.JSONB,
129
- allowNull: true,
130
- }),
131
- __metadata("design:type", Object)
132
- ], CustomFieldDefinition.prototype, "defaultValue", void 0);
133
- __decorate([
134
- (0, sequelize_typescript_1.Column)({
135
- type: sequelize_typescript_1.DataType.DATE,
136
- allowNull: false,
137
- }),
138
- __metadata("design:type", Date)
139
- ], CustomFieldDefinition.prototype, "createdAt", void 0);
140
- __decorate([
141
- (0, sequelize_typescript_1.Column)({
142
- type: sequelize_typescript_1.DataType.DATE,
143
- allowNull: true,
144
- }),
145
- __metadata("design:type", Date)
146
- ], CustomFieldDefinition.prototype, "updatedAt", void 0);
147
- __decorate([
148
- (0, sequelize_typescript_1.Column)({
149
- type: sequelize_typescript_1.DataType.DATE,
150
- allowNull: true,
151
- }),
152
- __metadata("design:type", Date)
153
- ], CustomFieldDefinition.prototype, "deletedAt", void 0);
154
- __decorate([
155
- (0, sequelize_typescript_1.Column)({
156
- type: sequelize_typescript_1.DataType.BOOLEAN,
157
- defaultValue: false,
158
- allowNull: false,
159
- }),
160
- __metadata("design:type", Boolean)
161
- ], CustomFieldDefinition.prototype, "blockEditingFromUI", void 0);
162
- __decorate([
163
- (0, sequelize_typescript_1.HasMany)(() => _1.CustomFieldValue),
164
- __metadata("design:type", Array)
165
- ], CustomFieldDefinition.prototype, "values", void 0);
166
- __decorate([
167
- sequelize_typescript_1.BeforeCreate,
168
- __metadata("design:type", Function),
169
- __metadata("design:paramtypes", [CustomFieldDefinition]),
170
- __metadata("design:returntype", void 0)
171
- ], CustomFieldDefinition, "displayNameDefaultValue", null);
172
- __decorate([
173
- sequelize_typescript_1.AfterSave,
174
- __metadata("design:type", Function),
175
- __metadata("design:paramtypes", [CustomFieldDefinition, Object]),
176
- __metadata("design:returntype", void 0)
177
- ], CustomFieldDefinition, "afterSaveHandler", null);
178
- CustomFieldDefinition = __decorate([
179
- (0, sequelize_typescript_1.DefaultScope)(() => ({ where: { disabled: false } })),
180
- (0, sequelize_typescript_1.Table)({
181
- indexes: [
182
- {
183
- name: 'unique_name_model_type',
184
- fields: ['model_type', 'entity_id', 'name'],
185
- unique: true,
186
- },
187
- ],
188
- timestamps: true,
189
- validate: {
190
- validationByType() {
191
- // Verify the validation is provided if needed
192
- if (!this.validation && validators_1.CustomValidationTypes[this.fieldType]) {
193
- // TODO: enforce the validation-object schema based on the fieldType
194
- logger_1.default.error(`No custom validation for custom field type ${this.fieldType} found`);
195
- throw new errors_1.UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
196
- }
197
- },
198
- },
199
- })
200
- ], CustomFieldDefinition);
201
- exports.default = CustomFieldDefinition;
1
+ import e from"../utils/logger/index.js";import{CustomFieldDefinitionType as t}from"../utils/constants/index.js";import{CustomValidationTypes as n}from"../utils/validations/validators/index.js";import{sendDimEvent as r}from"../events/index.js";import{InvalidValueError as i,UnsupportedCustomFieldTypeError as a,UnsupportedCustomValidationError as o}from"../errors/index.js";import{validateValue as s}from"../utils/validations/index.js";import{__decorateMetadata as c}from"../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.js";import{__decorate as l}from"../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.js";import u from"./CustomFieldValue.js";import"./index.js";import{AfterSave as d,BeforeCreate as f,Column as p,DataType as m,DefaultScope as h,HasMany as g,Is as _,Model as v,PrimaryKey as y,Table as b}from"sequelize-typescript";var x,S,C,w,T,E;let D=class extends v{static displayNameDefaultValue(e){if(e?.displayName||(e.displayName=e.name),![null,void 0].includes(e.defaultValue)){let t=s(e.defaultValue,e.fieldType,e.validation);if(t.error)throw new i(e.defaultValue,e.name,t.error)}}static afterSaveHandler(e,t){t.transaction?t.transaction.afterCommit(()=>r(e)):r(e)}};l([y,p({type:m.UUID,defaultValue:m.UUIDV4,allowNull:!1}),c(`design:type`,String)],D.prototype,`id`,void 0),l([p({type:m.STRING,allowNull:!1}),c(`design:type`,String)],D.prototype,`name`,void 0),l([p({type:m.STRING}),c(`design:type`,String)],D.prototype,`displayName`,void 0),l([_(`SupportedType`,e=>{if(!Object.values(t).includes(e))throw new a(`"${e}" is not a supported type.`)}),p({type:m.STRING,allowNull:!1}),c(`design:type`,typeof(x=t!==void 0&&t)==`function`?x:Object)],D.prototype,`fieldType`,void 0),l([p({type:m.JSONB}),c(`design:type`,Object)],D.prototype,`validation`,void 0),l([p({type:m.UUID,allowNull:!1}),c(`design:type`,String)],D.prototype,`entityId`,void 0),l([p({type:m.STRING,allowNull:!1}),c(`design:type`,String)],D.prototype,`entityType`,void 0),l([p({type:m.STRING,allowNull:!1}),c(`design:type`,String)],D.prototype,`modelType`,void 0),l([p({type:m.TEXT}),c(`design:type`,String)],D.prototype,`description`,void 0),l([p({type:m.BOOLEAN,defaultValue:!1}),c(`design:type`,Boolean)],D.prototype,`required`,void 0),l([p({type:m.BOOLEAN,defaultValue:!1}),c(`design:type`,Boolean)],D.prototype,`disabled`,void 0),l([p({type:m.JSONB,allowNull:!0}),c(`design:type`,Object)],D.prototype,`defaultValue`,void 0),l([p({type:m.DATE,allowNull:!1}),c(`design:type`,typeof(S=typeof Date<`u`&&Date)==`function`?S:Object)],D.prototype,`createdAt`,void 0),l([p({type:m.DATE,allowNull:!0}),c(`design:type`,typeof(C=typeof Date<`u`&&Date)==`function`?C:Object)],D.prototype,`updatedAt`,void 0),l([p({type:m.DATE,allowNull:!0}),c(`design:type`,typeof(w=typeof Date<`u`&&Date)==`function`?w:Object)],D.prototype,`deletedAt`,void 0),l([p({type:m.BOOLEAN,defaultValue:!1,allowNull:!1}),c(`design:type`,Boolean)],D.prototype,`blockEditingFromUI`,void 0),l([g(()=>u),c(`design:type`,Array)],D.prototype,`values`,void 0),l([f,c(`design:type`,Function),c(`design:paramtypes`,[typeof(T=D!==void 0&&D)==`function`?T:Object]),c(`design:returntype`,void 0)],D,`displayNameDefaultValue`,null),l([d,c(`design:type`,Function),c(`design:paramtypes`,[typeof(E=D!==void 0&&D)==`function`?E:Object,Object]),c(`design:returntype`,void 0)],D,`afterSaveHandler`,null),D=l([h(()=>({where:{disabled:!1}})),b({indexes:[{name:`unique_name_model_type`,fields:[`model_type`,`entity_id`,`name`],unique:!0}],timestamps:!0,validate:{validationByType(){if(!this.validation&&n[this.fieldType])throw e.error(`No custom validation for custom field type ${this.fieldType} found`),new o(`Validation provided for "${this.fieldType}" is not supported`)}}})],D);var O=D;export{O as default};
202
2
  //# sourceMappingURL=CustomFieldDefinition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFieldDefinition.js","sourceRoot":"","sources":["../../src/models/CustomFieldDefinition.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAW8B;AAC9B,kDAA+D;AAC/D,gEAAwE;AACxE,wBAAqC;AACrC,sCAAyC;AACzC,sCAAiH;AACjH,6DAAqC;AACrC,sDAAqD;AAuBrD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,4BAAK;IA0GhC,AAAP,MAAM,CAAC,uBAAuB,CAAC,QAA+B;QAC5D,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,IAAA,2BAAa,EAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9F,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,0BAAiB,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAGM,AAAP,MAAM,CAAC,gBAAgB,CAAC,QAA+B,EAAE,OAAO;QAC9D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAA;AAxHS;IANP,iCAAU;IACV,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,SAAS,EAAE,KAAK;KACjB,CAAC;;iDACiB;AAMjB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;mDACc;AAKd;IAHD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;KACtB,CAAC;;0DACqB;AAWrB;IATD,IAAA,yBAAE,EAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qCAAyB,CAAC,CAAC,QAAQ,CAAC,KAAkC,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,wCAA+B,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IACD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;wDACsC;AAKtC;IAHD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,KAAK;KACrB,CAAC;;yDACiB;AAMjB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;uDACkB;AAMlB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;yDACoB;AAMpB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;wDACmB;AAKnB;IAHD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;KACpB,CAAC;;0DACqB;AAMrB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KACpB,CAAC;;uDACmB;AAMnB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KACpB,CAAC;;uDACmB;AAMnB;IAJD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI;KAChB,CAAC;;2DACmB;AAMb;IAJP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;8BACkB,IAAI;wDAAC;AAMjB;IAJP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;8BACkB,IAAI;wDAAC;AAMjB;IAJP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;8BACkB,IAAI;wDAAC;AAOrB;IALD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;iEAC6B;AAG/B;IADD,IAAA,8BAAO,EAAC,GAAG,EAAE,CAAC,mBAAgB,CAAC;;qDACH;AAGtB;IADN,mCAAY;;qCAC4B,qBAAqB;;0DAW7D;AAGM;IADN,gCAAS;;qCACwB,qBAAqB;;mDAMtD;AA9HG,qBAAqB;IArB1B,IAAA,mCAAY,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,IAAA,4BAAK,EAAC;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC;gBAC3C,MAAM,EAAE,IAAI;aACb;SACF;QACD,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,gBAAgB;gBACd,8CAA8C;gBAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,kCAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9D,oEAAoE;oBACpE,gBAAM,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC;oBACnF,MAAM,IAAI,yCAAgC,CAAC,4BAA4B,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;SACF;KACF,CAAC;GACI,qBAAqB,CA+H1B;AAED,kBAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"CustomFieldDefinition.js","names":["CustomFieldDefinition","CustomFieldValue"],"sources":["../../src/models/CustomFieldDefinition.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n DataType,\n HasMany,\n PrimaryKey,\n BeforeCreate,\n DefaultScope,\n AfterSave,\n Is,\n} from 'sequelize-typescript';\nimport type { CreateOptions } from 'sequelize';\nimport { CustomFieldDefinitionType } from '../utils/constants';\nimport { CustomValidationTypes } from '../utils/validations/validators';\nimport { CustomFieldValue } from '.';\nimport { sendDimEvent } from '../events';\nimport { InvalidValueError, UnsupportedCustomFieldTypeError, UnsupportedCustomValidationError } from '../errors';\nimport logger from '../utils/logger';\nimport { validateValue } from '../utils/validations';\n\n@DefaultScope(() => ({ where: { disabled: false } }))\n@Table({\n indexes: [\n {\n name: 'unique_name_model_type',\n fields: ['model_type', 'entity_id', 'name'],\n unique: true,\n },\n ],\n timestamps: true,\n validate: {\n validationByType(this: CustomFieldDefinition) {\n // Verify the validation is provided if needed\n if (!this.validation && CustomValidationTypes[this.fieldType]) {\n // TODO: enforce the validation-object schema based on the fieldType\n logger.error(`No custom validation for custom field type ${this.fieldType} found`);\n throw new UnsupportedCustomValidationError(`Validation provided for \"${this.fieldType}\" is not supported`);\n }\n },\n },\n})\nclass CustomFieldDefinition extends Model {\n @PrimaryKey\n @Column({\n type: DataType.UUID,\n defaultValue: DataType.UUIDV4,\n allowNull: false,\n })\n declare id: string;\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n name!: string;\n\n @Column({\n type: DataType.STRING,\n })\n displayName?: string; // Defaulted to name with beforeCreate hook\n\n @Is('SupportedType', (value) => {\n if (!Object.values(CustomFieldDefinitionType).includes(value as CustomFieldDefinitionType)) {\n throw new UnsupportedCustomFieldTypeError(`\"${value}\" is not a supported type.`);\n }\n })\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n fieldType!: CustomFieldDefinitionType;\n\n @Column({\n type: DataType.JSONB,\n })\n validation?: any;\n\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n entityId!: string; /** Client association entity id */\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n entityType!: string; /** Client association entity type (demand source / fleet / etc.) */\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n modelType!: string; /** Model type. e.g. Vehicle / StopPoint / etc. */\n\n @Column({\n type: DataType.TEXT,\n })\n description?: string;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n })\n required?: boolean;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n })\n disabled?: boolean;\n\n @Column({\n type: DataType.JSONB,\n allowNull: true,\n })\n defaultValue?: any;\n\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare createdAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare updatedAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare deletedAt?: Date;\n\n @Column({\n type: DataType.BOOLEAN,\n defaultValue: false,\n allowNull: false,\n })\n blockEditingFromUI!: boolean;\n\n @HasMany(() => CustomFieldValue)\n values: CustomFieldValue[];\n\n @BeforeCreate\n static displayNameDefaultValue(instance: CustomFieldDefinition): void {\n if (!instance?.displayName) {\n // eslint-disable-next-line no-param-reassign\n instance.displayName = instance.name;\n }\n if (![null, undefined].includes(instance.defaultValue)) {\n const isValid = validateValue(instance.defaultValue, instance.fieldType, instance.validation);\n if (isValid.error) {\n throw new InvalidValueError(instance.defaultValue, instance.name, isValid.error);\n }\n }\n }\n\n @AfterSave\n static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void {\n if (options.transaction) {\n options.transaction.afterCommit(() => sendDimEvent(instance));\n } else {\n sendDimEvent(instance);\n }\n }\n}\n\nexport default CustomFieldDefinition;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../events/index.cjs`),n=require(`../utils/validations/index.cjs`),r=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.cjs`),i=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.cjs`),a=require(`../repository/definition.cjs`);let o=require(`sequelize-typescript`);o=e.__toESM(o);var s,c,l,u;let d=class extends o.Model{static afterSaveHandler(e,n){n.transaction?n.transaction.afterCommit(()=>t.sendDimEvent(e[0])):t.sendDimEvent(e[0])}};i.__decorate([o.PrimaryKey,(0,o.Column)({type:o.DataType.UUID,allowNull:!1}),r.__decorateMetadata(`design:type`,String)],d.prototype,`modelId`,void 0),i.__decorate([(0,o.Column)({type:o.DataType.UUID,allowNull:!1}),r.__decorateMetadata(`design:type`,String)],d.prototype,`entityId`,void 0),i.__decorate([(0,o.Column)({type:o.DataType.JSONB,allowNull:!1,defaultValue:{}}),r.__decorateMetadata(`design:type`,typeof(s=typeof Record<`u`&&Record)==`function`?s:Object)],d.prototype,`customFields`,void 0),i.__decorate([(0,o.Column)({type:o.DataType.STRING,allowNull:!1}),r.__decorateMetadata(`design:type`,String)],d.prototype,`modelType`,void 0),i.__decorate([(0,o.Column)({type:o.DataType.DATE,allowNull:!1}),r.__decorateMetadata(`design:type`,typeof(c=typeof Date<`u`&&Date)==`function`?c:Object)],d.prototype,`createdAt`,void 0),i.__decorate([(0,o.Column)({type:o.DataType.DATE,allowNull:!0}),r.__decorateMetadata(`design:type`,typeof(l=typeof Date<`u`&&Date)==`function`?l:Object)],d.prototype,`updatedAt`,void 0),i.__decorate([o.AfterUpsert,r.__decorateMetadata(`design:type`,Function),r.__decorateMetadata(`design:paramtypes`,[typeof(u=d!==void 0&&d)==`function`?u:Object,Object]),r.__decorateMetadata(`design:returntype`,void 0)],d,`afterSaveHandler`,null),d=i.__decorate([(0,o.Table)({timestamps:!0,indexes:[{name:`idx_cfe_custom_fields`,using:`gin`,operator:`jsonb_path_ops`,fields:[`custom_fields`]}],validate:{async validationByType(){if(!Object.keys(this.customFields??{}).length)return;let e=await a.getCustomFieldDefinitionsDictionary([this]);n.validateInstanceCustomFieldEntries(this,e)}}})],d);var f=d;exports.default=f;
2
+ //# sourceMappingURL=CustomFieldEntries.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldEntries.cjs","names":["CustomFieldEntries","Model","sendDimEvent","PrimaryKey","DataType","AfterUpsert"],"sources":["../../src/models/CustomFieldEntries.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n PrimaryKey,\n DataType,\n AfterUpsert,\n} from 'sequelize-typescript';\nimport type { CreateOptions } from 'sequelize';\nimport { sendDimEvent } from '../events';\nimport * as CustomFieldDefinitionRepo from '../repository/definition';\nimport { validateInstanceCustomFieldEntries } from '../utils/validations';\n\n@Table({\n timestamps: true,\n indexes: [\n {\n name: 'idx_cfe_custom_fields',\n using: 'gin',\n operator: 'jsonb_path_ops',\n fields: ['custom_fields'],\n },\n ],\n validate: {\n async validationByType(this: CustomFieldEntries) {\n if (!Object.keys(this.customFields ?? {}).length) {\n return;\n }\n\n const definitionsByName = await CustomFieldDefinitionRepo.getCustomFieldDefinitionsDictionary([this]);\n validateInstanceCustomFieldEntries(this, definitionsByName);\n },\n },\n})\nclass CustomFieldEntries extends Model {\n @PrimaryKey\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n /** The ID of the model of which this row hold the custom field entries of, e.g. vehicleId / stopPointId / etc. */\n modelId!: string;\n\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n /** The ID of the entity of which this row hold the custom field entries of, e.g. fleetId / etc. */\n entityId!: string;\n\n @Column({\n type: DataType.JSONB,\n allowNull: false,\n defaultValue: {},\n })\n /** A dictionary of customFields and values with the following structure: `{ customFieldName: 'CustomFieldValue' }` */\n customFields!: Record<string, any>;\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n /** The type of model which this custom field entry represents. e.g. Vehicle / StopPoint / etc. */\n modelType!: string;\n\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare createdAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare updatedAt?: Date;\n\n @AfterUpsert\n static afterSaveHandler(instance: CustomFieldEntries, options: CreateOptions): void {\n if (options.transaction) {\n options.transaction.afterCommit(() => sendDimEvent(instance[0]));\n } else {\n sendDimEvent(instance[0]);\n }\n }\n}\n\nexport default CustomFieldEntries;\n"],"mappings":"0YAaA,IAAA,EAAA,cAqBiCC,EAAAA,KAAM,CA2CrC,OACO,iBAAiB,EAA8B,EAA8B,CAC9E,EAAQ,YACV,EAAQ,YAAY,gBAAkBC,EAAAA,aAAa,EAAS,GAAG,CAAC,CAEhE,EAAA,aAAa,EAAS,GAAG,iBA/C5BC,EAAAA,wBACO,CACN,KAAMC,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,sGAIM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,CAAA,CAAA,EAAA,UAAA,WAAA,IAAA,GAAA,4BAIM,CACN,KAAMA,EAAAA,SAAS,MACf,UAAW,GACX,aAAc,EAAE,CACjB,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,OAAA,KAAA,SAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,eAAA,IAAA,GAAA,4BAIM,CACN,KAAMA,EAAAA,SAAS,OACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,4BAIM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,4BAGM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,eAGDC,EAAAA,kQAhEI,CACL,WAAY,GACZ,QAAS,CACP,CACE,KAAM,wBACN,MAAO,MACP,SAAU,iBACV,OAAQ,CAAC,gBAAgB,CAC1B,CACF,CACD,SAAU,CACR,MAAM,kBAA2C,CAC/C,GAAI,CAAC,OAAO,KAAK,KAAK,cAAgB,EAAE,CAAC,CAAC,OACxC,OAGF,IAAM,EAAoB,MAAA,EAAA,oCAAoE,CAAC,KAAK,CAAC,CACrG,EAAA,mCAAmC,KAAM,EAAkB,EAE9D,CACF,CAAC,CAAA,CAAA,EAAA,CAsDF,IAAA,EAAe"}
@@ -1,130 +1,2 @@
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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __metadata = (this && this.__metadata) || function (k, v) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- const sequelize_typescript_1 = require("sequelize-typescript");
36
- const events_1 = require("../events");
37
- const CustomFieldDefinitionRepo = __importStar(require("../repository/definition"));
38
- const validations_1 = require("../utils/validations");
39
- let CustomFieldEntries = class CustomFieldEntries extends sequelize_typescript_1.Model {
40
- static afterSaveHandler(instance, options) {
41
- if (options.transaction) {
42
- options.transaction.afterCommit(() => (0, events_1.sendDimEvent)(instance[0]));
43
- }
44
- else {
45
- (0, events_1.sendDimEvent)(instance[0]);
46
- }
47
- }
48
- };
49
- __decorate([
50
- sequelize_typescript_1.PrimaryKey,
51
- (0, sequelize_typescript_1.Column)({
52
- type: sequelize_typescript_1.DataType.UUID,
53
- allowNull: false,
54
- })
55
- /** The ID of the model of which this row hold the custom field entries of, e.g. vehicleId / stopPointId / etc. */
56
- ,
57
- __metadata("design:type", String)
58
- ], CustomFieldEntries.prototype, "modelId", void 0);
59
- __decorate([
60
- (0, sequelize_typescript_1.Column)({
61
- type: sequelize_typescript_1.DataType.UUID,
62
- allowNull: false,
63
- })
64
- /** The ID of the entity of which this row hold the custom field entries of, e.g. fleetId / etc. */
65
- ,
66
- __metadata("design:type", String)
67
- ], CustomFieldEntries.prototype, "entityId", void 0);
68
- __decorate([
69
- (0, sequelize_typescript_1.Column)({
70
- type: sequelize_typescript_1.DataType.JSONB,
71
- allowNull: false,
72
- defaultValue: {},
73
- })
74
- /** A dictionary of customFields and values with the following structure: `{ customFieldName: 'CustomFieldValue' }` */
75
- ,
76
- __metadata("design:type", Object)
77
- ], CustomFieldEntries.prototype, "customFields", void 0);
78
- __decorate([
79
- (0, sequelize_typescript_1.Column)({
80
- type: sequelize_typescript_1.DataType.STRING,
81
- allowNull: false,
82
- })
83
- /** The type of model which this custom field entry represents. e.g. Vehicle / StopPoint / etc. */
84
- ,
85
- __metadata("design:type", String)
86
- ], CustomFieldEntries.prototype, "modelType", void 0);
87
- __decorate([
88
- (0, sequelize_typescript_1.Column)({
89
- type: sequelize_typescript_1.DataType.DATE,
90
- allowNull: false,
91
- }),
92
- __metadata("design:type", Date)
93
- ], CustomFieldEntries.prototype, "createdAt", void 0);
94
- __decorate([
95
- (0, sequelize_typescript_1.Column)({
96
- type: sequelize_typescript_1.DataType.DATE,
97
- allowNull: true,
98
- }),
99
- __metadata("design:type", Date)
100
- ], CustomFieldEntries.prototype, "updatedAt", void 0);
101
- __decorate([
102
- sequelize_typescript_1.AfterUpsert,
103
- __metadata("design:type", Function),
104
- __metadata("design:paramtypes", [CustomFieldEntries, Object]),
105
- __metadata("design:returntype", void 0)
106
- ], CustomFieldEntries, "afterSaveHandler", null);
107
- CustomFieldEntries = __decorate([
108
- (0, sequelize_typescript_1.Table)({
109
- timestamps: true,
110
- indexes: [
111
- {
112
- name: 'idx_cfe_custom_fields',
113
- using: 'gin',
114
- operator: 'jsonb_path_ops',
115
- fields: ['custom_fields'],
116
- },
117
- ],
118
- validate: {
119
- async validationByType() {
120
- if (!Object.keys(this.customFields ?? {}).length) {
121
- return;
122
- }
123
- const definitionsByName = await CustomFieldDefinitionRepo.getCustomFieldDefinitionsDictionary([this]);
124
- (0, validations_1.validateInstanceCustomFieldEntries)(this, definitionsByName);
125
- },
126
- },
127
- })
128
- ], CustomFieldEntries);
129
- exports.default = CustomFieldEntries;
1
+ import{sendDimEvent as e}from"../events/index.js";import{validateInstanceCustomFieldEntries as t}from"../utils/validations/index.js";import{__decorateMetadata as n}from"../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.js";import{__decorate as r}from"../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.js";import{getCustomFieldDefinitionsDictionary as i}from"../repository/definition.js";import{AfterUpsert as a,Column as o,DataType as s,Model as c,PrimaryKey as l,Table as u}from"sequelize-typescript";var d,f,p,m;let h=class extends c{static afterSaveHandler(t,n){n.transaction?n.transaction.afterCommit(()=>e(t[0])):e(t[0])}};r([l,o({type:s.UUID,allowNull:!1}),n(`design:type`,String)],h.prototype,`modelId`,void 0),r([o({type:s.UUID,allowNull:!1}),n(`design:type`,String)],h.prototype,`entityId`,void 0),r([o({type:s.JSONB,allowNull:!1,defaultValue:{}}),n(`design:type`,typeof(d=typeof Record<`u`&&Record)==`function`?d:Object)],h.prototype,`customFields`,void 0),r([o({type:s.STRING,allowNull:!1}),n(`design:type`,String)],h.prototype,`modelType`,void 0),r([o({type:s.DATE,allowNull:!1}),n(`design:type`,typeof(f=typeof Date<`u`&&Date)==`function`?f:Object)],h.prototype,`createdAt`,void 0),r([o({type:s.DATE,allowNull:!0}),n(`design:type`,typeof(p=typeof Date<`u`&&Date)==`function`?p:Object)],h.prototype,`updatedAt`,void 0),r([a,n(`design:type`,Function),n(`design:paramtypes`,[typeof(m=h!==void 0&&h)==`function`?m:Object,Object]),n(`design:returntype`,void 0)],h,`afterSaveHandler`,null),h=r([u({timestamps:!0,indexes:[{name:`idx_cfe_custom_fields`,using:`gin`,operator:`jsonb_path_ops`,fields:[`custom_fields`]}],validate:{async validationByType(){if(!Object.keys(this.customFields??{}).length)return;let e=await i([this]);t(this,e)}}})],h);var g=h;export{g as default};
130
2
  //# sourceMappingURL=CustomFieldEntries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFieldEntries.js","sourceRoot":"","sources":["../../src/models/CustomFieldEntries.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAO8B;AAC9B,sCAAyC;AACzC,oFAAsE;AACtE,sDAA0E;AAuB1E,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,4BAAK;IA4C7B,AAAP,MAAM,CAAC,gBAAgB,CAAC,QAA4B,EAAE,OAAO;QAC3D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AA5CG;IAND,iCAAU;IACV,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;IACA,mHAAmH;;;mDAClG;AAOjB;IALD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;IACA,oGAAoG;;;oDAClF;AAQlB;IAND,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,KAAK;QACpB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE;KACjB,CAAC;IACA,sHAAsH;;;wDACnF;AAOnC;IALD,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;IACA,kGAAkG;;;qDAC/E;AAMb;IAJP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;8BACkB,IAAI;qDAAC;AAMjB;IAJP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;8BACkB,IAAI;qDAAC;AAGlB;IADN,kCAAW;;qCACsB,kBAAkB;;gDAMnD;AAlDG,kBAAkB;IArBvB,IAAA,4BAAK,EAAC;QACL,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,gBAAgB;gBAC1B,MAAM,EAAE,CAAC,eAAe,CAAC;aAC1B;SACF;QACD,QAAQ,EAAE;YACR,KAAK,CAAC,gBAAgB;gBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;oBACjD,OAAO;gBACT,CAAC;gBAED,MAAM,iBAAiB,GAAG,MAAM,yBAAyB,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtG,IAAA,gDAAkC,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC9D,CAAC;SACF;KACF,CAAC;GACI,kBAAkB,CAmDvB;AAED,kBAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"CustomFieldEntries.js","names":["CustomFieldEntries","CustomFieldDefinitionRepo.getCustomFieldDefinitionsDictionary"],"sources":["../../src/models/CustomFieldEntries.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n PrimaryKey,\n DataType,\n AfterUpsert,\n} from 'sequelize-typescript';\nimport type { CreateOptions } from 'sequelize';\nimport { sendDimEvent } from '../events';\nimport * as CustomFieldDefinitionRepo from '../repository/definition';\nimport { validateInstanceCustomFieldEntries } from '../utils/validations';\n\n@Table({\n timestamps: true,\n indexes: [\n {\n name: 'idx_cfe_custom_fields',\n using: 'gin',\n operator: 'jsonb_path_ops',\n fields: ['custom_fields'],\n },\n ],\n validate: {\n async validationByType(this: CustomFieldEntries) {\n if (!Object.keys(this.customFields ?? {}).length) {\n return;\n }\n\n const definitionsByName = await CustomFieldDefinitionRepo.getCustomFieldDefinitionsDictionary([this]);\n validateInstanceCustomFieldEntries(this, definitionsByName);\n },\n },\n})\nclass CustomFieldEntries extends Model {\n @PrimaryKey\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n /** The ID of the model of which this row hold the custom field entries of, e.g. vehicleId / stopPointId / etc. */\n modelId!: string;\n\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n /** The ID of the entity of which this row hold the custom field entries of, e.g. fleetId / etc. */\n entityId!: string;\n\n @Column({\n type: DataType.JSONB,\n allowNull: false,\n defaultValue: {},\n })\n /** A dictionary of customFields and values with the following structure: `{ customFieldName: 'CustomFieldValue' }` */\n customFields!: Record<string, any>;\n\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n /** The type of model which this custom field entry represents. e.g. Vehicle / StopPoint / etc. */\n modelType!: string;\n\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare createdAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare updatedAt?: Date;\n\n @AfterUpsert\n static afterSaveHandler(instance: CustomFieldEntries, options: CreateOptions): void {\n if (options.transaction) {\n options.transaction.afterCommit(() => sendDimEvent(instance[0]));\n } else {\n sendDimEvent(instance[0]);\n }\n }\n}\n\nexport default CustomFieldEntries;\n"],"mappings":"0hBAaA,IAAA,EAAA,cAqBiC,CAAM,CA2CrC,OACO,iBAAiB,EAA8B,EAA8B,CAC9E,EAAQ,YACV,EAAQ,YAAY,gBAAkB,EAAa,EAAS,GAAG,CAAC,CAEhE,EAAa,EAAS,GAAG,MA/C5B,EACA,EAAO,CACN,KAAM,EAAS,KACf,UAAW,GACZ,CAAC,2DAID,EAAO,CACN,KAAM,EAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,cAAA,OAAA,CAAA,CAAA,EAAA,UAAA,WAAA,IAAA,GAAA,IAID,EAAO,CACN,KAAM,EAAS,MACf,UAAW,GACX,aAAc,EAAE,CACjB,CAAC,CAAA,EAAA,cAAA,OAAA,EAAA,OAAA,OAAA,KAAA,SAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,eAAA,IAAA,GAAA,IAID,EAAO,CACN,KAAM,EAAS,OACf,UAAW,GACZ,CAAC,CAAA,EAAA,cAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,IAID,EAAO,CACN,KAAM,EAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,IAGD,EAAO,CACN,KAAM,EAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,IAGD,wKAhEF,EAAM,CACL,WAAY,GACZ,QAAS,CACP,CACE,KAAM,wBACN,MAAO,MACP,SAAU,iBACV,OAAQ,CAAC,gBAAgB,CAC1B,CACF,CACD,SAAU,CACR,MAAM,kBAA2C,CAC/C,GAAI,CAAC,OAAO,KAAK,KAAK,cAAgB,EAAE,CAAC,CAAC,OACxC,OAGF,IAAM,EAAoB,MAAMC,EAA8D,CAAC,KAAK,CAAC,CACrG,EAAmC,KAAM,EAAkB,EAE9D,CACF,CAAC,CAAA,CAAA,EAAA,CAsDF,IAAA,EAAe"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../events/index.cjs`),n=require(`../errors/index.cjs`),r=require(`../utils/validations/index.cjs`),i=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.cjs`),a=require(`../_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.cjs`),o=require(`./CustomFieldDefinition.cjs`),s=require(`../repository/definition.cjs`);require(`./index.cjs`);let c=require(`sequelize-typescript`);c=e.__toESM(c);var l,u,d,f,p,m;let h=class extends c.Model{static validateValueAgainstDefinition(e,t){let{validation:i,fieldType:a,name:o}=t;if(!r.validateFieldType(a))throw new n.InvalidFieldTypeError(a);if(e.value===null)return;let s=r.validateValue(e.value,a,i);if(s.error)throw new n.InvalidValueError(e.value,o,s.error)}static async validateCustomFieldValues(e){let t=e.map(e=>e.customFieldDefinitionId),n=[...new Set(t)],r=await s.findByIds(n,{withDisabled:!0});if(!r||r.length!==n.length)throw Error(`Definitions not found`);e.forEach(e=>{let t=r.find(t=>t.id===e.customFieldDefinitionId);t&&this.validateValueAgainstDefinition(e,t)})}static async validateCustomFieldValue(e){let{customFieldDefinitionId:t}=e,n=await s.findById(t,{withDisabled:!0});this.validateValueAgainstDefinition(e,n)}static afterSaveHandler(e,n){n.transaction?n.transaction.afterCommit(()=>t.sendDimEvent(e[0])):t.sendDimEvent(e[0])}};a.__decorate([c.PrimaryKey,(0,c.Column)({type:c.DataType.UUID,allowNull:!1}),i.__decorateMetadata(`design:type`,String)],h.prototype,`modelId`,void 0),a.__decorate([c.PrimaryKey,(0,c.ForeignKey)(()=>o.default),(0,c.Column)({type:c.DataType.UUID,allowNull:!1}),i.__decorateMetadata(`design:type`,String)],h.prototype,`customFieldDefinitionId`,void 0),a.__decorate([(0,c.Column)({type:c.DataType.JSONB,allowNull:!0}),i.__decorateMetadata(`design:type`,Object)],h.prototype,`value`,void 0),a.__decorate([(0,c.Column)({type:c.DataType.DATE,allowNull:!1}),i.__decorateMetadata(`design:type`,typeof(l=typeof Date<`u`&&Date)==`function`?l:Object)],h.prototype,`createdAt`,void 0),a.__decorate([(0,c.Column)({type:c.DataType.DATE,allowNull:!0}),i.__decorateMetadata(`design:type`,typeof(u=typeof Date<`u`&&Date)==`function`?u:Object)],h.prototype,`updatedAt`,void 0),a.__decorate([(0,c.Column)({type:c.DataType.DATE,allowNull:!0}),i.__decorateMetadata(`design:type`,typeof(d=typeof Date<`u`&&Date)==`function`?d:Object)],h.prototype,`deletedAt`,void 0),a.__decorate([(0,c.BelongsTo)(()=>o.default,{scope:{disabled:!1}}),i.__decorateMetadata(`design:type`,typeof(f=o.default!==void 0&&o.default)==`function`?f:Object)],h.prototype,`customFieldDefinition`,void 0),a.__decorate([c.BeforeBulkCreate,c.BeforeBulkUpdate,i.__decorateMetadata(`design:type`,Function),i.__decorateMetadata(`design:paramtypes`,[Array]),i.__decorateMetadata(`design:returntype`,Promise)],h,`validateCustomFieldValues`,null),a.__decorate([c.BeforeUpdate,c.BeforeCreate,c.BeforeUpsert,i.__decorateMetadata(`design:type`,Function),i.__decorateMetadata(`design:paramtypes`,[typeof(p=h!==void 0&&h)==`function`?p:Object]),i.__decorateMetadata(`design:returntype`,Promise)],h,`validateCustomFieldValue`,null),a.__decorate([c.AfterUpsert,i.__decorateMetadata(`design:type`,Function),i.__decorateMetadata(`design:paramtypes`,[typeof(m=h!==void 0&&h)==`function`?m:Object,Object]),i.__decorateMetadata(`design:returntype`,void 0)],h,`afterSaveHandler`,null),h=a.__decorate([(0,c.Table)({timestamps:!0})],h);var g=h;exports.default=g;
2
+ //# sourceMappingURL=CustomFieldValue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldValue.cjs","names":["CustomFieldValue","Model","validateFieldType","InvalidFieldTypeError","validateValue","InvalidValueError","sendDimEvent","PrimaryKey","DataType","CustomFieldDefinition","BeforeBulkCreate","BeforeBulkUpdate","BeforeUpdate","BeforeCreate","BeforeUpsert","AfterUpsert"],"sources":["../../src/models/CustomFieldValue.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n PrimaryKey,\n DataType,\n BelongsTo,\n ForeignKey,\n BeforeCreate,\n BeforeUpsert,\n AfterUpsert,\n BeforeUpdate,\n BeforeBulkCreate,\n BeforeBulkUpdate,\n} from 'sequelize-typescript';\nimport type { CreateOptions } from 'sequelize';\nimport { sendDimEvent } from '../events';\nimport { CustomFieldDefinition } from '.';\nimport { validateFieldType, validateValue } from '../utils/validations';\nimport * as CustomFieldDefinitionRepo from '../repository/definition';\nimport { InvalidFieldTypeError, InvalidValueError } from '../errors';\n\n@Table({\n timestamps: true,\n})\nclass CustomFieldValue extends Model {\n @PrimaryKey\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n modelId!: string;\n\n @PrimaryKey\n @ForeignKey(() => CustomFieldDefinition)\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n customFieldDefinitionId!: string;\n\n @Column({\n type: DataType.JSONB,\n allowNull: true,\n })\n value!: any;\n\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare createdAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare updatedAt?: Date;\n\n @Column({\n type: DataType.DATE,\n allowNull: true,\n })\n declare deletedAt?: Date;\n\n @BelongsTo(() => CustomFieldDefinition, { scope: { disabled: false } })\n customFieldDefinition: CustomFieldDefinition;\n\n private static validateValueAgainstDefinition(\n instance: CustomFieldValue,\n definition: CustomFieldDefinition,\n ): void {\n const { validation, fieldType, name } = definition;\n const isValidFieldType = validateFieldType(fieldType);\n if (!isValidFieldType) {\n throw new InvalidFieldTypeError(fieldType);\n }\n // Always allow null values\n if (instance.value === null) return;\n const validateValueResponse = validateValue(instance.value, fieldType, validation);\n if (validateValueResponse.error) {\n throw new InvalidValueError(instance.value, name, validateValueResponse.error);\n }\n }\n\n @BeforeBulkCreate\n @BeforeBulkUpdate\n static async validateCustomFieldValues(instances: CustomFieldValue[]): Promise<void> {\n const ids = instances.map((instance) => instance.customFieldDefinitionId);\n const uniqueIds = [...new Set(ids)];\n const definitions = await CustomFieldDefinitionRepo.findByIds(\n uniqueIds,\n { withDisabled: true },\n );\n\n if (!definitions || definitions.length !== uniqueIds.length) {\n throw new Error('Definitions not found');\n }\n\n instances.forEach((instance) => {\n const definition = definitions.find((d) => d.id === instance.customFieldDefinitionId);\n if (definition) {\n this.validateValueAgainstDefinition(instance, definition);\n }\n });\n }\n\n @BeforeUpdate\n @BeforeCreate\n @BeforeUpsert\n static async validateCustomFieldValue(instance: CustomFieldValue): Promise<void> {\n const { customFieldDefinitionId } = instance;\n // eslint-disable-next-line max-len\n const cfd = await CustomFieldDefinitionRepo.findById(customFieldDefinitionId, { withDisabled: true });\n this.validateValueAgainstDefinition(instance, cfd);\n }\n\n @AfterUpsert\n static afterSaveHandler(instance: CustomFieldValue, options: CreateOptions): void {\n if (options.transaction) {\n options.transaction.afterCommit(() => sendDimEvent(instance[0]));\n } else {\n sendDimEvent(instance[0]);\n }\n }\n}\n\nexport default CustomFieldValue;\n"],"mappings":"+eAsBA,IAAA,EAAA,cAG+BC,EAAAA,KAAM,CA2CnC,OAAe,+BACb,EACA,EACM,CACN,GAAM,CAAE,aAAY,YAAW,QAAS,EAExC,GAAI,CADqBC,EAAAA,kBAAkB,EAAU,CAEnD,MAAM,IAAIC,EAAAA,sBAAsB,EAAU,CAG5C,GAAI,EAAS,QAAU,KAAM,OAC7B,IAAM,EAAwBC,EAAAA,cAAc,EAAS,MAAO,EAAW,EAAW,CAClF,GAAI,EAAsB,MACxB,MAAM,IAAIC,EAAAA,kBAAkB,EAAS,MAAO,EAAM,EAAsB,MAAM,CAIlF,aAEa,0BAA0B,EAA8C,CACnF,IAAM,EAAM,EAAU,IAAK,GAAa,EAAS,wBAAwB,CACnE,EAAY,CAAC,GAAG,IAAI,IAAI,EAAI,CAAC,CAC7B,EAAc,MAAA,EAAA,UAClB,EACA,CAAE,aAAc,GAAM,CACvB,CAED,GAAI,CAAC,GAAe,EAAY,SAAW,EAAU,OACnD,MAAU,MAAM,wBAAwB,CAG1C,EAAU,QAAS,GAAa,CAC9B,IAAM,EAAa,EAAY,KAAM,GAAM,EAAE,KAAO,EAAS,wBAAwB,CACjF,GACF,KAAK,+BAA+B,EAAU,EAAW,EAE3D,CAGJ,aAGa,yBAAyB,EAA2C,CAC/E,GAAM,CAAE,2BAA4B,EAE9B,EAAM,MAAA,EAAA,SAAyC,EAAyB,CAAE,aAAc,GAAM,CAAC,CACrG,KAAK,+BAA+B,EAAU,EAAI,CAGpD,OACO,iBAAiB,EAA4B,EAA8B,CAC5E,EAAQ,YACV,EAAQ,YAAY,gBAAkBC,EAAAA,aAAa,EAAS,GAAG,CAAC,CAEhE,EAAA,aAAa,EAAS,GAAG,iBAhG5BC,EAAAA,wBACO,CACN,KAAMC,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,yFAGDD,EAAAA,gCACiBE,EAAAA,QAAsB,cAChC,CACN,KAAMD,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,sHAGM,CACN,KAAMA,EAAAA,SAAS,MACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,CAAA,CAAA,EAAA,UAAA,QAAA,IAAA,GAAA,4BAGM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,4BAGM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,4BAGM,CACN,KAAMA,EAAAA,SAAS,KACf,UAAW,GACZ,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,YAAA,IAAA,GAAA,mCAGeC,EAAAA,QAAuB,CAAE,MAAO,CAAE,SAAU,GAAO,CAAE,CAAC,CAAA,EAAA,mBAAA,cAAA,OAAA,EAAA,EAAA,UAAA,QAAA,EAAA,UAAA,WAAA,EAAA,OAAA,CAAA,CAAA,EAAA,UAAA,wBAAA,IAAA,GAAA,eAoBtEC,EAAAA,iBACAC,EAAAA,qNAqBAC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,uPAQAC,EAAAA,kQA/FI,CACL,WAAY,GACb,CAAC,CAAA,CAAA,EAAA,CAuGF,IAAA,EAAe"}