@autofleet/sadot 1.6.18-beta.2 → 1.6.18-beta.21

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 (162) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs +11 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js +10 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs +8 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js +7 -0
  5. package/dist/_virtual/rolldown_runtime.cjs +43 -0
  6. package/dist/{chunk-DJulfCLt.js → _virtual/rolldown_runtime.js} +1 -2
  7. package/dist/api/index.cjs +12 -0
  8. package/dist/api/index.js +11 -0
  9. package/dist/api/v1/definition/index.cjs +113 -0
  10. package/dist/api/v1/definition/index.js +112 -0
  11. package/dist/api/v1/definition/validations.cjs +128 -0
  12. package/dist/api/v1/definition/validations.js +125 -0
  13. package/dist/api/v1/errors.cjs +14 -0
  14. package/dist/api/v1/errors.js +13 -0
  15. package/dist/api/v1/field-policies/index.cjs +104 -0
  16. package/dist/api/v1/field-policies/index.js +103 -0
  17. package/dist/api/v1/index.cjs +16 -0
  18. package/dist/api/v1/index.js +15 -0
  19. package/dist/api/v1/validator/index.cjs +132 -0
  20. package/dist/api/v1/validator/index.js +131 -0
  21. package/dist/api/v1/validator/validations.cjs +40 -0
  22. package/dist/api/v1/validator/validations.d.cts +22 -0
  23. package/dist/api/v1/validator/validations.d.ts +22 -0
  24. package/dist/api/v1/validator/validations.js +38 -0
  25. package/dist/errors/index.cjs +62 -0
  26. package/dist/errors/index.js +55 -0
  27. package/dist/events/index.cjs +52 -0
  28. package/dist/events/index.js +50 -0
  29. package/dist/hooks/enrich.cjs +175 -0
  30. package/dist/hooks/enrich.js +175 -0
  31. package/dist/hooks/find.cjs +22 -0
  32. package/dist/hooks/find.js +22 -0
  33. package/dist/hooks/hooks.cjs +310 -0
  34. package/dist/hooks/hooks.js +302 -0
  35. package/dist/hooks/index.cjs +3 -0
  36. package/dist/hooks/index.js +5 -0
  37. package/dist/hooks/utils/updateInstanceValues.cjs +27 -0
  38. package/dist/hooks/utils/updateInstanceValues.js +27 -0
  39. package/dist/index.cjs +48 -33508
  40. package/dist/index.d.cts +13 -396
  41. package/dist/index.d.ts +14 -394
  42. package/dist/index.js +21 -33435
  43. package/dist/init-state.cjs +56 -0
  44. package/dist/init-state.d.cts +35 -0
  45. package/dist/init-state.d.ts +35 -0
  46. package/dist/init-state.js +55 -0
  47. package/dist/mat-path-state.cjs +10 -0
  48. package/dist/mat-path-state.js +9 -0
  49. package/dist/migrations/001-create-core-tables.cjs +70 -0
  50. package/dist/migrations/001-create-core-tables.js +68 -0
  51. package/dist/migrations/002-create-custom-field-entries.cjs +27 -0
  52. package/dist/migrations/002-create-custom-field-entries.js +25 -0
  53. package/dist/migrations/003-create-custom-field-model-type-map.cjs +35 -0
  54. package/dist/migrations/003-create-custom-field-model-type-map.js +33 -0
  55. package/dist/migrations/004-create-field-policy-tables.cjs +29 -0
  56. package/dist/migrations/004-create-field-policy-tables.js +27 -0
  57. package/dist/migrations/005-add-entity-type-to-field-policies.cjs +20 -0
  58. package/dist/migrations/005-add-entity-type-to-field-policies.js +18 -0
  59. package/dist/migrations/index.cjs +94 -0
  60. package/dist/migrations/index.js +95 -0
  61. package/dist/models/CustomFieldDefinition.cjs +147 -0
  62. package/dist/models/CustomFieldDefinition.d.cts +40 -0
  63. package/dist/models/CustomFieldDefinition.d.ts +40 -0
  64. package/dist/models/CustomFieldDefinition.js +146 -0
  65. package/dist/models/CustomFieldEntries.cjs +71 -0
  66. package/dist/models/CustomFieldEntries.d.cts +15 -0
  67. package/dist/models/CustomFieldEntries.d.ts +15 -0
  68. package/dist/models/CustomFieldEntries.js +70 -0
  69. package/dist/models/CustomFieldModelTypeMap.cjs +62 -0
  70. package/dist/models/CustomFieldModelTypeMap.d.cts +14 -0
  71. package/dist/models/CustomFieldModelTypeMap.d.ts +14 -0
  72. package/dist/models/CustomFieldModelTypeMap.js +61 -0
  73. package/dist/models/CustomFieldValue.cjs +109 -0
  74. package/dist/models/CustomFieldValue.d.cts +20 -0
  75. package/dist/models/CustomFieldValue.d.ts +20 -0
  76. package/dist/models/CustomFieldValue.js +108 -0
  77. package/dist/models/CustomValidator.cjs +68 -0
  78. package/dist/models/CustomValidator.d.cts +18 -0
  79. package/dist/models/CustomValidator.d.ts +18 -0
  80. package/dist/models/CustomValidator.js +67 -0
  81. package/dist/models/FieldPolicy.cjs +54 -0
  82. package/dist/models/FieldPolicy.d.cts +25 -0
  83. package/dist/models/FieldPolicy.d.ts +25 -0
  84. package/dist/models/FieldPolicy.js +53 -0
  85. package/dist/models/index.cjs +163 -0
  86. package/dist/models/index.d.ts +11 -0
  87. package/dist/models/index.js +161 -0
  88. package/dist/models/tests/AssociatedTestModel.cjs +51 -0
  89. package/dist/models/tests/AssociatedTestModel.d.ts +2 -0
  90. package/dist/models/tests/AssociatedTestModel.js +50 -0
  91. package/dist/models/tests/TestModel.cjs +43 -0
  92. package/dist/models/tests/TestModel.d.ts +2 -0
  93. package/dist/models/tests/TestModel.js +42 -0
  94. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +35 -0
  95. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +2 -0
  96. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +34 -0
  97. package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +33 -0
  98. package/dist/models/tests/contextAwareModels/ContextTestModel.d.ts +1 -0
  99. package/dist/models/tests/contextAwareModels/ContextTestModel.js +32 -0
  100. package/dist/repository/definition.cjs +221 -0
  101. package/dist/repository/definition.js +212 -0
  102. package/dist/repository/entries.cjs +69 -0
  103. package/dist/repository/entries.js +67 -0
  104. package/dist/repository/field-policy.cjs +69 -0
  105. package/dist/repository/field-policy.d.cts +35 -0
  106. package/dist/repository/field-policy.d.ts +35 -0
  107. package/dist/repository/field-policy.js +59 -0
  108. package/dist/repository/utils/formatValues.cjs +14 -0
  109. package/dist/repository/utils/formatValues.js +14 -0
  110. package/dist/repository/validator.cjs +85 -0
  111. package/dist/repository/validator.js +78 -0
  112. package/dist/repository/value.cjs +77 -0
  113. package/dist/repository/value.js +76 -0
  114. package/dist/scopes/filter.cjs +56 -0
  115. package/dist/scopes/filter.d.cts +22 -0
  116. package/dist/scopes/filter.d.ts +22 -0
  117. package/dist/scopes/filter.js +54 -0
  118. package/dist/scopes/helpers/filter.helpers.cjs +152 -0
  119. package/dist/scopes/helpers/filter.helpers.d.cts +16 -0
  120. package/dist/scopes/helpers/filter.helpers.d.ts +16 -0
  121. package/dist/scopes/helpers/filter.helpers.js +147 -0
  122. package/dist/scopes/index.cjs +1 -0
  123. package/dist/scopes/index.js +3 -0
  124. package/dist/types/index.d.cts +75 -0
  125. package/dist/types/index.d.ts +76 -0
  126. package/dist/utils/constants/index.cjs +32 -0
  127. package/dist/utils/constants/index.d.cts +23 -0
  128. package/dist/utils/constants/index.d.ts +23 -0
  129. package/dist/utils/constants/index.js +29 -0
  130. package/dist/utils/db/index.cjs +15 -0
  131. package/dist/utils/db/index.js +14 -0
  132. package/dist/utils/helpers/index.cjs +23 -0
  133. package/dist/utils/helpers/index.d.cts +30 -0
  134. package/dist/utils/helpers/index.d.ts +30 -0
  135. package/dist/utils/helpers/index.js +21 -0
  136. package/dist/utils/init.cjs +115 -0
  137. package/dist/utils/init.js +111 -0
  138. package/dist/utils/logger/index.cjs +15 -0
  139. package/dist/utils/logger/index.js +12 -0
  140. package/dist/utils/scopeAttributes.cjs +12 -0
  141. package/dist/utils/scopeAttributes.js +11 -0
  142. package/dist/utils/validations/index.cjs +34 -0
  143. package/dist/utils/validations/index.js +32 -0
  144. package/dist/utils/validations/schema/custom-fields.cjs +9 -0
  145. package/dist/utils/validations/schema/custom-fields.d.cts +6 -0
  146. package/dist/utils/validations/schema/custom-fields.d.ts +6 -0
  147. package/dist/utils/validations/schema/custom-fields.js +7 -0
  148. package/dist/utils/validations/schema/validator-schema.cjs +102 -0
  149. package/dist/utils/validations/schema/validator-schema.js +99 -0
  150. package/dist/utils/validations/validators/index.cjs +45 -0
  151. package/dist/utils/validations/validators/index.js +42 -0
  152. package/dist/utils/validations/validators/multi-select-dropdown.validator.cjs +7 -0
  153. package/dist/utils/validations/validators/multi-select-dropdown.validator.js +7 -0
  154. package/dist/utils/validations/validators/multi-select-status.validator.cjs +10 -0
  155. package/dist/utils/validations/validators/multi-select-status.validator.js +10 -0
  156. package/dist/utils/validations/validators/multi-select.helpers.cjs +12 -0
  157. package/dist/utils/validations/validators/multi-select.helpers.js +10 -0
  158. package/dist/utils/validations/validators/select.validator.cjs +12 -0
  159. package/dist/utils/validations/validators/select.validator.js +10 -0
  160. package/dist/utils/validations/validators/status.validator.cjs +12 -0
  161. package/dist/utils/validations/validators/status.validator.js +10 -0
  162. package/package.json +4 -4
@@ -0,0 +1,95 @@
1
+ import { __require } from "../_virtual/rolldown_runtime.js";
2
+ import logger_default from "../utils/logger/index.js";
3
+ import { down, up } from "./001-create-core-tables.js";
4
+ import { down as down$1, up as up$1 } from "./002-create-custom-field-entries.js";
5
+ import { down as down$2, up as up$2 } from "./003-create-custom-field-model-type-map.js";
6
+ import { down as down$3, up as up$3 } from "./004-create-field-policy-tables.js";
7
+ import { down as down$4, up as up$4 } from "./005-add-entity-type-to-field-policies.js";
8
+
9
+ //#region src/migrations/index.ts
10
+ const { Umzug, SequelizeStorage } = __require("umzug");
11
+ const buildMigrationList = (options) => {
12
+ const { useCustomFieldsEntries = false, useModelTypeMapping = false } = options;
13
+ return [
14
+ {
15
+ name: "001-create-core-tables",
16
+ up,
17
+ down
18
+ },
19
+ ...useCustomFieldsEntries ? [{
20
+ name: "002-create-custom-field-entries",
21
+ up: up$1,
22
+ down: down$1
23
+ }] : [],
24
+ ...useModelTypeMapping ? [{
25
+ name: "003-create-custom-field-model-type-map",
26
+ up: up$2,
27
+ down: down$2
28
+ }] : [],
29
+ {
30
+ name: "004-create-field-policy-tables",
31
+ up: up$3,
32
+ down: down$3
33
+ },
34
+ {
35
+ name: "005-add-entity-type-to-field-policies",
36
+ up: up$4,
37
+ down: down$4
38
+ }
39
+ ];
40
+ };
41
+ const SADOT_MIGRATION_LOCK_ID = 839274628;
42
+ /**
43
+ * Runs sadot migrations via umzug. All migrations use IF NOT EXISTS / IF EXISTS,
44
+ * so they are fully idempotent — safe to run against both fresh and existing
45
+ * databases (including DBs previously managed by the legacy sync() path).
46
+ *
47
+ * A PostgreSQL advisory lock is acquired before running migrations so that when
48
+ * multiple pods start concurrently only one of them executes the migrations.
49
+ * The remaining pods block until the lock is released, then proceed — Umzug will
50
+ * see the migrations have already been applied and skip them.
51
+ */
52
+ const runSadotMigrations = async (sequelize, options = {}) => {
53
+ const queryInterface = sequelize.getQueryInterface();
54
+ const storage = new SequelizeStorage({
55
+ sequelize,
56
+ tableName: "sadot_migrations"
57
+ });
58
+ const migrator = new Umzug({
59
+ migrations: buildMigrationList(options),
60
+ context: queryInterface,
61
+ storage,
62
+ logger: {
63
+ info: (msg) => logger_default.info(`[sadot] ${JSON.stringify(msg)}`),
64
+ warn: (msg) => logger_default.warn(`[sadot] ${JSON.stringify(msg)}`),
65
+ error: (msg) => logger_default.error(`[sadot] ${JSON.stringify(msg)}`),
66
+ debug: (msg) => logger_default.debug(`[sadot] ${JSON.stringify(msg)}`)
67
+ }
68
+ });
69
+ const pending = await migrator.pending();
70
+ if (pending.length === 0) {
71
+ logger_default.info("[sadot] no pending migrations, skipping");
72
+ return;
73
+ }
74
+ logger_default.info("[sadot] pending migrations detected", { pending: pending.map((m) => m.name) });
75
+ if ((sequelize.options?.pool?.max ?? 5) < 2) {
76
+ logger_default.info("[sadot] connection pool too small for advisory lock, running migrations directly");
77
+ await migrator.up();
78
+ return;
79
+ }
80
+ logger_default.info("[sadot] acquiring advisory lock");
81
+ const transaction = await sequelize.transaction();
82
+ try {
83
+ await sequelize.query(`SELECT pg_advisory_lock(${SADOT_MIGRATION_LOCK_ID})`, { transaction });
84
+ logger_default.info("[sadot] advisory lock acquired");
85
+ if ((await migrator.pending()).length > 0) await migrator.up();
86
+ else logger_default.info("[sadot] migrations already applied by another instance, skipping");
87
+ } finally {
88
+ await sequelize.query(`SELECT pg_advisory_unlock(${SADOT_MIGRATION_LOCK_ID})`, { transaction });
89
+ await transaction.commit();
90
+ logger_default.info("[sadot] advisory lock released");
91
+ }
92
+ };
93
+
94
+ //#endregion
95
+ export { runSadotMigrations };
@@ -0,0 +1,147 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_index = require('../utils/logger/index.cjs');
3
+ const require_index$1 = require('../utils/constants/index.cjs');
4
+ const require_index$2 = require('../utils/validations/validators/index.cjs');
5
+ const require_index$3 = require('../events/index.cjs');
6
+ const require_index$4 = require('../errors/index.cjs');
7
+ const require_index$5 = require('../utils/validations/index.cjs');
8
+ const require_decorateMetadata = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs');
9
+ const require_decorate = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs');
10
+ const require_CustomFieldValue = require('./CustomFieldValue.cjs');
11
+ let sequelize_typescript = require("sequelize-typescript");
12
+
13
+ //#region src/models/CustomFieldDefinition.ts
14
+ var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
15
+ let CustomFieldDefinition = class CustomFieldDefinition$1 extends sequelize_typescript.Model {
16
+ get modelTypeIds() {
17
+ return this._modelTypeIds;
18
+ }
19
+ set modelTypeIds(value) {
20
+ this._modelTypeIds = value;
21
+ this.setDataValue("modelTypeIds", value);
22
+ }
23
+ static displayNameDefaultValue(instance) {
24
+ if (!instance?.displayName) instance.displayName = instance.name;
25
+ if (![null, void 0].includes(instance.defaultValue)) {
26
+ const isValid = require_index$5.validateValue(instance.defaultValue, instance.fieldType, instance.validation);
27
+ if (isValid.error) throw new require_index$4.InvalidValueError(instance.defaultValue, instance.name, isValid.error);
28
+ }
29
+ }
30
+ static afterSaveHandler(instance, options) {
31
+ if (options.transaction) options.transaction.afterCommit(() => require_index$3.sendDimEvent(instance));
32
+ else require_index$3.sendDimEvent(instance);
33
+ }
34
+ /**
35
+ * Override toJSON to exclude internal associations from API responses
36
+ * The modelTypeMappings association is used internally to optimize queries
37
+ * but should not be exposed in the API response (use modelTypeIds instead)
38
+ */
39
+ toJSON() {
40
+ const { modelTypeMappings: _modelTypeMappings, ...values } = this.get();
41
+ return values;
42
+ }
43
+ };
44
+ require_decorate.__decorate([
45
+ sequelize_typescript.PrimaryKey,
46
+ (0, sequelize_typescript.Column)({
47
+ type: sequelize_typescript.DataType.UUID,
48
+ defaultValue: sequelize_typescript.DataType.UUIDV4,
49
+ allowNull: false
50
+ }),
51
+ require_decorateMetadata.__decorateMetadata("design:type", String)
52
+ ], CustomFieldDefinition.prototype, "id", void 0);
53
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
54
+ type: sequelize_typescript.DataType.STRING,
55
+ allowNull: false
56
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "name", void 0);
57
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.STRING }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "displayName", void 0);
58
+ require_decorate.__decorate([
59
+ (0, sequelize_typescript.Is)("SupportedType", (value) => {
60
+ if (!Object.values(require_index$1.CustomFieldDefinitionType).includes(value)) throw new require_index$4.UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
61
+ }),
62
+ (0, sequelize_typescript.Column)({
63
+ type: sequelize_typescript.DataType.STRING,
64
+ allowNull: false
65
+ }),
66
+ require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref = typeof require_index$1.CustomFieldDefinitionType !== "undefined" && require_index$1.CustomFieldDefinitionType) === "function" ? _ref : Object)
67
+ ], CustomFieldDefinition.prototype, "fieldType", void 0);
68
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.JSONB }), require_decorateMetadata.__decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "validation", void 0);
69
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
70
+ type: sequelize_typescript.DataType.UUID,
71
+ allowNull: false
72
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityId", void 0);
73
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
74
+ type: sequelize_typescript.DataType.STRING,
75
+ allowNull: false
76
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityType", void 0);
77
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
78
+ type: sequelize_typescript.DataType.STRING,
79
+ allowNull: false
80
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "modelType", void 0);
81
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({ type: sequelize_typescript.DataType.TEXT }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "description", void 0);
82
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
83
+ type: sequelize_typescript.DataType.BOOLEAN,
84
+ defaultValue: false
85
+ }), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "required", void 0);
86
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
87
+ type: sequelize_typescript.DataType.BOOLEAN,
88
+ defaultValue: false
89
+ }), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "disabled", void 0);
90
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
91
+ type: sequelize_typescript.DataType.JSONB,
92
+ allowNull: true
93
+ }), require_decorateMetadata.__decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "defaultValue", void 0);
94
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
95
+ type: sequelize_typescript.DataType.DATE,
96
+ allowNull: false
97
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldDefinition.prototype, "createdAt", void 0);
98
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
99
+ type: sequelize_typescript.DataType.DATE,
100
+ allowNull: true
101
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldDefinition.prototype, "updatedAt", void 0);
102
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
103
+ type: sequelize_typescript.DataType.DATE,
104
+ allowNull: true
105
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref4 = typeof Date !== "undefined" && Date) === "function" ? _ref4 : Object)], CustomFieldDefinition.prototype, "deletedAt", void 0);
106
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
107
+ type: sequelize_typescript.DataType.BOOLEAN,
108
+ defaultValue: false,
109
+ allowNull: false
110
+ }), require_decorateMetadata.__decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "blockEditingFromUI", void 0);
111
+ require_decorate.__decorate([(0, sequelize_typescript.HasMany)(() => require_CustomFieldValue.default), require_decorateMetadata.__decorateMetadata("design:type", Array)], CustomFieldDefinition.prototype, "values", void 0);
112
+ require_decorate.__decorate([
113
+ sequelize_typescript.BeforeCreate,
114
+ require_decorateMetadata.__decorateMetadata("design:type", Function),
115
+ require_decorateMetadata.__decorateMetadata("design:paramtypes", [typeof (_ref5 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref5 : Object]),
116
+ require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
117
+ ], CustomFieldDefinition, "displayNameDefaultValue", null);
118
+ require_decorate.__decorate([
119
+ sequelize_typescript.AfterSave,
120
+ require_decorateMetadata.__decorateMetadata("design:type", Function),
121
+ require_decorateMetadata.__decorateMetadata("design:paramtypes", [typeof (_ref6 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref6 : Object, Object]),
122
+ require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
123
+ ], CustomFieldDefinition, "afterSaveHandler", null);
124
+ CustomFieldDefinition = require_decorate.__decorate([(0, sequelize_typescript.DefaultScope)(() => ({ where: { disabled: false } })), (0, sequelize_typescript.Table)({
125
+ tableName: "custom_field_definitions",
126
+ modelName: "CustomFieldDefinition",
127
+ indexes: [{
128
+ name: "unique_name_model_type",
129
+ fields: [
130
+ "model_type",
131
+ "entity_id",
132
+ "name"
133
+ ],
134
+ unique: true
135
+ }],
136
+ timestamps: true,
137
+ validate: { validationByType() {
138
+ if (!this.validation && require_index$2.CustomValidationTypes[this.fieldType]) {
139
+ require_index.default.error(`No custom validation for custom field type ${this.fieldType} found`);
140
+ throw new require_index$4.UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
141
+ }
142
+ } }
143
+ })], CustomFieldDefinition);
144
+ var CustomFieldDefinition_default = CustomFieldDefinition;
145
+
146
+ //#endregion
147
+ exports.default = CustomFieldDefinition_default;
@@ -0,0 +1,40 @@
1
+ import { CustomFieldDefinitionType } from "../utils/constants/index.cjs";
2
+ import { CustomFieldValue } from "./CustomFieldValue.cjs";
3
+ import { CustomFieldModelTypeMap } from "./CustomFieldModelTypeMap.cjs";
4
+ import { Model } from "sequelize-typescript";
5
+ import { CreateOptions } from "sequelize";
6
+
7
+ //#region src/models/CustomFieldDefinition.d.ts
8
+ declare class CustomFieldDefinition extends Model {
9
+ id: string;
10
+ name: string;
11
+ displayName?: string;
12
+ fieldType: CustomFieldDefinitionType;
13
+ validation?: any;
14
+ entityId: string;
15
+ entityType: string;
16
+ modelType: string;
17
+ description?: string;
18
+ required?: boolean;
19
+ disabled?: boolean;
20
+ defaultValue?: any;
21
+ createdAt?: Date;
22
+ updatedAt?: Date;
23
+ deletedAt?: Date;
24
+ blockEditingFromUI: boolean;
25
+ values: CustomFieldValue[];
26
+ modelTypeMappings?: CustomFieldModelTypeMap[];
27
+ private _modelTypeIds?;
28
+ get modelTypeIds(): string[] | undefined;
29
+ set modelTypeIds(value: string[] | undefined);
30
+ static displayNameDefaultValue(instance: CustomFieldDefinition): void;
31
+ static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void;
32
+ /**
33
+ * Override toJSON to exclude internal associations from API responses
34
+ * The modelTypeMappings association is used internally to optimize queries
35
+ * but should not be exposed in the API response (use modelTypeIds instead)
36
+ */
37
+ toJSON(): object;
38
+ }
39
+ //#endregion
40
+ export { CustomFieldDefinition };
@@ -0,0 +1,40 @@
1
+ import { CustomFieldDefinitionType } from "../utils/constants/index.js";
2
+ import { CustomFieldValue } from "./CustomFieldValue.js";
3
+ import { CustomFieldModelTypeMap } from "./CustomFieldModelTypeMap.js";
4
+ import { CreateOptions } from "sequelize";
5
+ import { Model } from "sequelize-typescript";
6
+
7
+ //#region src/models/CustomFieldDefinition.d.ts
8
+ declare class CustomFieldDefinition extends Model {
9
+ id: string;
10
+ name: string;
11
+ displayName?: string;
12
+ fieldType: CustomFieldDefinitionType;
13
+ validation?: any;
14
+ entityId: string;
15
+ entityType: string;
16
+ modelType: string;
17
+ description?: string;
18
+ required?: boolean;
19
+ disabled?: boolean;
20
+ defaultValue?: any;
21
+ createdAt?: Date;
22
+ updatedAt?: Date;
23
+ deletedAt?: Date;
24
+ blockEditingFromUI: boolean;
25
+ values: CustomFieldValue[];
26
+ modelTypeMappings?: CustomFieldModelTypeMap[];
27
+ private _modelTypeIds?;
28
+ get modelTypeIds(): string[] | undefined;
29
+ set modelTypeIds(value: string[] | undefined);
30
+ static displayNameDefaultValue(instance: CustomFieldDefinition): void;
31
+ static afterSaveHandler(instance: CustomFieldDefinition, options: CreateOptions): void;
32
+ /**
33
+ * Override toJSON to exclude internal associations from API responses
34
+ * The modelTypeMappings association is used internally to optimize queries
35
+ * but should not be exposed in the API response (use modelTypeIds instead)
36
+ */
37
+ toJSON(): object;
38
+ }
39
+ //#endregion
40
+ export { CustomFieldDefinition };
@@ -0,0 +1,146 @@
1
+ import logger_default from "../utils/logger/index.js";
2
+ import { CustomFieldDefinitionType } from "../utils/constants/index.js";
3
+ import { CustomValidationTypes } from "../utils/validations/validators/index.js";
4
+ import { sendDimEvent } from "../events/index.js";
5
+ import { InvalidValueError, UnsupportedCustomFieldTypeError, UnsupportedCustomValidationError } from "../errors/index.js";
6
+ import { validateValue } from "../utils/validations/index.js";
7
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js";
8
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js";
9
+ import CustomFieldValue_default from "./CustomFieldValue.js";
10
+ import { AfterSave, BeforeCreate, Column, DataType, DefaultScope, HasMany, Is, Model, PrimaryKey, Table } from "sequelize-typescript";
11
+
12
+ //#region src/models/CustomFieldDefinition.ts
13
+ var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
14
+ let CustomFieldDefinition = class CustomFieldDefinition$1 extends Model {
15
+ get modelTypeIds() {
16
+ return this._modelTypeIds;
17
+ }
18
+ set modelTypeIds(value) {
19
+ this._modelTypeIds = value;
20
+ this.setDataValue("modelTypeIds", value);
21
+ }
22
+ static displayNameDefaultValue(instance) {
23
+ if (!instance?.displayName) instance.displayName = instance.name;
24
+ if (![null, void 0].includes(instance.defaultValue)) {
25
+ const isValid = validateValue(instance.defaultValue, instance.fieldType, instance.validation);
26
+ if (isValid.error) throw new InvalidValueError(instance.defaultValue, instance.name, isValid.error);
27
+ }
28
+ }
29
+ static afterSaveHandler(instance, options) {
30
+ if (options.transaction) options.transaction.afterCommit(() => sendDimEvent(instance));
31
+ else sendDimEvent(instance);
32
+ }
33
+ /**
34
+ * Override toJSON to exclude internal associations from API responses
35
+ * The modelTypeMappings association is used internally to optimize queries
36
+ * but should not be exposed in the API response (use modelTypeIds instead)
37
+ */
38
+ toJSON() {
39
+ const { modelTypeMappings: _modelTypeMappings, ...values } = this.get();
40
+ return values;
41
+ }
42
+ };
43
+ __decorate([
44
+ PrimaryKey,
45
+ Column({
46
+ type: DataType.UUID,
47
+ defaultValue: DataType.UUIDV4,
48
+ allowNull: false
49
+ }),
50
+ __decorateMetadata("design:type", String)
51
+ ], CustomFieldDefinition.prototype, "id", void 0);
52
+ __decorate([Column({
53
+ type: DataType.STRING,
54
+ allowNull: false
55
+ }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "name", void 0);
56
+ __decorate([Column({ type: DataType.STRING }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "displayName", void 0);
57
+ __decorate([
58
+ Is("SupportedType", (value) => {
59
+ if (!Object.values(CustomFieldDefinitionType).includes(value)) throw new UnsupportedCustomFieldTypeError(`"${value}" is not a supported type.`);
60
+ }),
61
+ Column({
62
+ type: DataType.STRING,
63
+ allowNull: false
64
+ }),
65
+ __decorateMetadata("design:type", typeof (_ref = typeof CustomFieldDefinitionType !== "undefined" && CustomFieldDefinitionType) === "function" ? _ref : Object)
66
+ ], CustomFieldDefinition.prototype, "fieldType", void 0);
67
+ __decorate([Column({ type: DataType.JSONB }), __decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "validation", void 0);
68
+ __decorate([Column({
69
+ type: DataType.UUID,
70
+ allowNull: false
71
+ }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityId", void 0);
72
+ __decorate([Column({
73
+ type: DataType.STRING,
74
+ allowNull: false
75
+ }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "entityType", void 0);
76
+ __decorate([Column({
77
+ type: DataType.STRING,
78
+ allowNull: false
79
+ }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "modelType", void 0);
80
+ __decorate([Column({ type: DataType.TEXT }), __decorateMetadata("design:type", String)], CustomFieldDefinition.prototype, "description", void 0);
81
+ __decorate([Column({
82
+ type: DataType.BOOLEAN,
83
+ defaultValue: false
84
+ }), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "required", void 0);
85
+ __decorate([Column({
86
+ type: DataType.BOOLEAN,
87
+ defaultValue: false
88
+ }), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "disabled", void 0);
89
+ __decorate([Column({
90
+ type: DataType.JSONB,
91
+ allowNull: true
92
+ }), __decorateMetadata("design:type", Object)], CustomFieldDefinition.prototype, "defaultValue", void 0);
93
+ __decorate([Column({
94
+ type: DataType.DATE,
95
+ allowNull: false
96
+ }), __decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldDefinition.prototype, "createdAt", void 0);
97
+ __decorate([Column({
98
+ type: DataType.DATE,
99
+ allowNull: true
100
+ }), __decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldDefinition.prototype, "updatedAt", void 0);
101
+ __decorate([Column({
102
+ type: DataType.DATE,
103
+ allowNull: true
104
+ }), __decorateMetadata("design:type", typeof (_ref4 = typeof Date !== "undefined" && Date) === "function" ? _ref4 : Object)], CustomFieldDefinition.prototype, "deletedAt", void 0);
105
+ __decorate([Column({
106
+ type: DataType.BOOLEAN,
107
+ defaultValue: false,
108
+ allowNull: false
109
+ }), __decorateMetadata("design:type", Boolean)], CustomFieldDefinition.prototype, "blockEditingFromUI", void 0);
110
+ __decorate([HasMany(() => CustomFieldValue_default), __decorateMetadata("design:type", Array)], CustomFieldDefinition.prototype, "values", void 0);
111
+ __decorate([
112
+ BeforeCreate,
113
+ __decorateMetadata("design:type", Function),
114
+ __decorateMetadata("design:paramtypes", [typeof (_ref5 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref5 : Object]),
115
+ __decorateMetadata("design:returntype", void 0)
116
+ ], CustomFieldDefinition, "displayNameDefaultValue", null);
117
+ __decorate([
118
+ AfterSave,
119
+ __decorateMetadata("design:type", Function),
120
+ __decorateMetadata("design:paramtypes", [typeof (_ref6 = typeof CustomFieldDefinition !== "undefined" && CustomFieldDefinition) === "function" ? _ref6 : Object, Object]),
121
+ __decorateMetadata("design:returntype", void 0)
122
+ ], CustomFieldDefinition, "afterSaveHandler", null);
123
+ CustomFieldDefinition = __decorate([DefaultScope(() => ({ where: { disabled: false } })), Table({
124
+ tableName: "custom_field_definitions",
125
+ modelName: "CustomFieldDefinition",
126
+ indexes: [{
127
+ name: "unique_name_model_type",
128
+ fields: [
129
+ "model_type",
130
+ "entity_id",
131
+ "name"
132
+ ],
133
+ unique: true
134
+ }],
135
+ timestamps: true,
136
+ validate: { validationByType() {
137
+ if (!this.validation && CustomValidationTypes[this.fieldType]) {
138
+ logger_default.error(`No custom validation for custom field type ${this.fieldType} found`);
139
+ throw new UnsupportedCustomValidationError(`Validation provided for "${this.fieldType}" is not supported`);
140
+ }
141
+ } }
142
+ })], CustomFieldDefinition);
143
+ var CustomFieldDefinition_default = CustomFieldDefinition;
144
+
145
+ //#endregion
146
+ export { CustomFieldDefinition_default as default };
@@ -0,0 +1,71 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_index = require('../events/index.cjs');
3
+ const require_index$1 = require('../utils/validations/index.cjs');
4
+ const require_definition = require('../repository/definition.cjs');
5
+ const require_decorateMetadata = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs');
6
+ const require_decorate = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs');
7
+ let sequelize_typescript = require("sequelize-typescript");
8
+
9
+ //#region src/models/CustomFieldEntries.ts
10
+ var _ref, _ref2, _ref3;
11
+ let CustomFieldEntries = class CustomFieldEntries$1 extends sequelize_typescript.Model {
12
+ static afterSaveHandler(instance, options) {
13
+ if (options.transaction) options.transaction.afterCommit(() => require_index.sendDimEvent(instance[0]));
14
+ else require_index.sendDimEvent(instance[0]);
15
+ }
16
+ };
17
+ require_decorate.__decorate([
18
+ sequelize_typescript.PrimaryKey,
19
+ (0, sequelize_typescript.Column)({
20
+ type: sequelize_typescript.DataType.UUID,
21
+ allowNull: false
22
+ }),
23
+ require_decorateMetadata.__decorateMetadata("design:type", String)
24
+ ], CustomFieldEntries.prototype, "modelId", void 0);
25
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
26
+ type: sequelize_typescript.DataType.UUID,
27
+ allowNull: false
28
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "entityId", void 0);
29
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
30
+ type: sequelize_typescript.DataType.JSONB,
31
+ allowNull: false,
32
+ defaultValue: {}
33
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref = typeof Record !== "undefined" && Record) === "function" ? _ref : Object)], CustomFieldEntries.prototype, "customFields", void 0);
34
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
35
+ type: sequelize_typescript.DataType.STRING,
36
+ allowNull: false
37
+ }), require_decorateMetadata.__decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "modelType", void 0);
38
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
39
+ type: sequelize_typescript.DataType.DATE,
40
+ allowNull: false
41
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldEntries.prototype, "createdAt", void 0);
42
+ require_decorate.__decorate([(0, sequelize_typescript.Column)({
43
+ type: sequelize_typescript.DataType.DATE,
44
+ allowNull: true
45
+ }), require_decorateMetadata.__decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldEntries.prototype, "updatedAt", void 0);
46
+ require_decorate.__decorate([
47
+ sequelize_typescript.AfterUpsert,
48
+ require_decorateMetadata.__decorateMetadata("design:type", Function),
49
+ require_decorateMetadata.__decorateMetadata("design:paramtypes", [Array, Object]),
50
+ require_decorateMetadata.__decorateMetadata("design:returntype", void 0)
51
+ ], CustomFieldEntries, "afterSaveHandler", null);
52
+ CustomFieldEntries = require_decorate.__decorate([(0, sequelize_typescript.Table)({
53
+ tableName: "custom_field_entries",
54
+ modelName: "CustomFieldEntries",
55
+ timestamps: true,
56
+ indexes: [{
57
+ name: "idx_cfe_custom_fields",
58
+ using: "gin",
59
+ operator: "jsonb_path_ops",
60
+ fields: ["custom_fields"]
61
+ }],
62
+ validate: { async validationByType() {
63
+ if (!Object.keys(this.customFields ?? {}).length) return;
64
+ const definitionsByName = await require_definition.getCustomFieldDefinitionsDictionary([this]);
65
+ require_index$1.validateInstanceCustomFieldEntries(this, definitionsByName);
66
+ } }
67
+ })], CustomFieldEntries);
68
+ var CustomFieldEntries_default = CustomFieldEntries;
69
+
70
+ //#endregion
71
+ exports.default = CustomFieldEntries_default;
@@ -0,0 +1,15 @@
1
+ import { Model } from "sequelize-typescript";
2
+ import { CreateOptions } from "sequelize";
3
+
4
+ //#region src/models/CustomFieldEntries.d.ts
5
+ declare class CustomFieldEntries extends Model {
6
+ modelId: string;
7
+ entityId: string;
8
+ customFields: Record<string, any>;
9
+ modelType: string;
10
+ createdAt?: Date;
11
+ updatedAt?: Date;
12
+ static afterSaveHandler(instance: CustomFieldEntries[], options: CreateOptions): void;
13
+ }
14
+ //#endregion
15
+ export { CustomFieldEntries };
@@ -0,0 +1,15 @@
1
+ import { CreateOptions } from "sequelize";
2
+ import { Model } from "sequelize-typescript";
3
+
4
+ //#region src/models/CustomFieldEntries.d.ts
5
+ declare class CustomFieldEntries extends Model {
6
+ modelId: string;
7
+ entityId: string;
8
+ customFields: Record<string, any>;
9
+ modelType: string;
10
+ createdAt?: Date;
11
+ updatedAt?: Date;
12
+ static afterSaveHandler(instance: CustomFieldEntries[], options: CreateOptions): void;
13
+ }
14
+ //#endregion
15
+ export { CustomFieldEntries };
@@ -0,0 +1,70 @@
1
+ import { sendDimEvent } from "../events/index.js";
2
+ import { validateInstanceCustomFieldEntries } from "../utils/validations/index.js";
3
+ import { getCustomFieldDefinitionsDictionary } from "../repository/definition.js";
4
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js";
5
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js";
6
+ import { AfterUpsert, Column, DataType, Model, PrimaryKey, Table } from "sequelize-typescript";
7
+
8
+ //#region src/models/CustomFieldEntries.ts
9
+ var _ref, _ref2, _ref3;
10
+ let CustomFieldEntries = class CustomFieldEntries$1 extends Model {
11
+ static afterSaveHandler(instance, options) {
12
+ if (options.transaction) options.transaction.afterCommit(() => sendDimEvent(instance[0]));
13
+ else sendDimEvent(instance[0]);
14
+ }
15
+ };
16
+ __decorate([
17
+ PrimaryKey,
18
+ Column({
19
+ type: DataType.UUID,
20
+ allowNull: false
21
+ }),
22
+ __decorateMetadata("design:type", String)
23
+ ], CustomFieldEntries.prototype, "modelId", void 0);
24
+ __decorate([Column({
25
+ type: DataType.UUID,
26
+ allowNull: false
27
+ }), __decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "entityId", void 0);
28
+ __decorate([Column({
29
+ type: DataType.JSONB,
30
+ allowNull: false,
31
+ defaultValue: {}
32
+ }), __decorateMetadata("design:type", typeof (_ref = typeof Record !== "undefined" && Record) === "function" ? _ref : Object)], CustomFieldEntries.prototype, "customFields", void 0);
33
+ __decorate([Column({
34
+ type: DataType.STRING,
35
+ allowNull: false
36
+ }), __decorateMetadata("design:type", String)], CustomFieldEntries.prototype, "modelType", void 0);
37
+ __decorate([Column({
38
+ type: DataType.DATE,
39
+ allowNull: false
40
+ }), __decorateMetadata("design:type", typeof (_ref2 = typeof Date !== "undefined" && Date) === "function" ? _ref2 : Object)], CustomFieldEntries.prototype, "createdAt", void 0);
41
+ __decorate([Column({
42
+ type: DataType.DATE,
43
+ allowNull: true
44
+ }), __decorateMetadata("design:type", typeof (_ref3 = typeof Date !== "undefined" && Date) === "function" ? _ref3 : Object)], CustomFieldEntries.prototype, "updatedAt", void 0);
45
+ __decorate([
46
+ AfterUpsert,
47
+ __decorateMetadata("design:type", Function),
48
+ __decorateMetadata("design:paramtypes", [Array, Object]),
49
+ __decorateMetadata("design:returntype", void 0)
50
+ ], CustomFieldEntries, "afterSaveHandler", null);
51
+ CustomFieldEntries = __decorate([Table({
52
+ tableName: "custom_field_entries",
53
+ modelName: "CustomFieldEntries",
54
+ timestamps: true,
55
+ indexes: [{
56
+ name: "idx_cfe_custom_fields",
57
+ using: "gin",
58
+ operator: "jsonb_path_ops",
59
+ fields: ["custom_fields"]
60
+ }],
61
+ validate: { async validationByType() {
62
+ if (!Object.keys(this.customFields ?? {}).length) return;
63
+ const definitionsByName = await getCustomFieldDefinitionsDictionary([this]);
64
+ validateInstanceCustomFieldEntries(this, definitionsByName);
65
+ } }
66
+ })], CustomFieldEntries);
67
+ var CustomFieldEntries_default = CustomFieldEntries;
68
+
69
+ //#endregion
70
+ export { CustomFieldEntries_default as default };