@autofleet/sadot 1.6.18-beta.7 → 1.6.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.cjs +1 -11
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js +1 -10
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.cjs +1 -8
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js +1 -7
- package/dist/_virtual/rolldown_runtime.cjs +1 -43
- package/dist/_virtual/rolldown_runtime.js +1 -21
- package/dist/api/index.cjs +2 -12
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.js +2 -11
- package/dist/api/index.js.map +1 -0
- package/dist/api/v1/definition/index.cjs +2 -113
- package/dist/api/v1/definition/index.cjs.map +1 -0
- package/dist/api/v1/definition/index.js +2 -112
- package/dist/api/v1/definition/index.js.map +1 -0
- package/dist/api/v1/definition/validations.cjs +2 -128
- package/dist/api/v1/definition/validations.cjs.map +1 -0
- package/dist/api/v1/definition/validations.js +2 -125
- package/dist/api/v1/definition/validations.js.map +1 -0
- package/dist/api/v1/errors.cjs +2 -14
- package/dist/api/v1/errors.cjs.map +1 -0
- package/dist/api/v1/errors.js +2 -13
- package/dist/api/v1/errors.js.map +1 -0
- package/dist/api/v1/index.cjs +2 -16
- package/dist/api/v1/index.cjs.map +1 -0
- package/dist/api/v1/index.js +2 -15
- package/dist/api/v1/index.js.map +1 -0
- package/dist/api/v1/validator/index.cjs +2 -115
- package/dist/api/v1/validator/index.cjs.map +1 -0
- package/dist/api/v1/validator/index.js +2 -114
- package/dist/api/v1/validator/index.js.map +1 -0
- package/dist/api/v1/validator/validations.cjs +2 -40
- package/dist/api/v1/validator/validations.cjs.map +1 -0
- package/dist/api/v1/validator/validations.d.cts +2 -1
- package/dist/api/v1/validator/validations.d.ts +2 -1
- package/dist/api/v1/validator/validations.js +2 -38
- package/dist/api/v1/validator/validations.js.map +1 -0
- package/dist/errors/index.cjs +3 -62
- package/dist/errors/index.cjs.map +1 -0
- package/dist/errors/index.js +3 -55
- package/dist/errors/index.js.map +1 -0
- package/dist/events/index.cjs +2 -52
- package/dist/events/index.cjs.map +1 -0
- package/dist/events/index.js +2 -50
- package/dist/events/index.js.map +1 -0
- package/dist/hooks/enrich.cjs +2 -175
- package/dist/hooks/enrich.cjs.map +1 -0
- package/dist/hooks/enrich.js +2 -175
- package/dist/hooks/enrich.js.map +1 -0
- package/dist/hooks/find.cjs +2 -22
- package/dist/hooks/find.cjs.map +1 -0
- package/dist/hooks/find.js +2 -22
- package/dist/hooks/find.js.map +1 -0
- package/dist/hooks/hooks.cjs +2 -310
- package/dist/hooks/hooks.cjs.map +1 -0
- package/dist/hooks/hooks.js +2 -302
- package/dist/hooks/hooks.js.map +1 -0
- package/dist/hooks/index.cjs +1 -3
- package/dist/hooks/index.js +1 -5
- package/dist/hooks/utils/updateInstanceValues.cjs +2 -27
- package/dist/hooks/utils/updateInstanceValues.cjs.map +1 -0
- package/dist/hooks/utils/updateInstanceValues.js +2 -27
- package/dist/hooks/utils/updateInstanceValues.js.map +1 -0
- package/dist/index.cjs +2 -83
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -62
- package/dist/index.js.map +1 -0
- package/dist/init-state.cjs +2 -56
- package/dist/init-state.cjs.map +1 -0
- package/dist/init-state.d.cts +2 -1
- package/dist/init-state.d.ts +2 -1
- package/dist/init-state.js +2 -55
- package/dist/init-state.js.map +1 -0
- package/dist/mat-path-state.cjs +2 -10
- package/dist/mat-path-state.cjs.map +1 -0
- package/dist/mat-path-state.js +2 -9
- package/dist/mat-path-state.js.map +1 -0
- package/dist/migrations/001-create-core-tables.cjs +7 -25
- package/dist/migrations/001-create-core-tables.cjs.map +1 -0
- package/dist/migrations/001-create-core-tables.js +7 -23
- package/dist/migrations/001-create-core-tables.js.map +1 -0
- package/dist/migrations/002-create-custom-field-entries.cjs +4 -16
- package/dist/migrations/002-create-custom-field-entries.cjs.map +1 -0
- package/dist/migrations/002-create-custom-field-entries.js +4 -14
- package/dist/migrations/002-create-custom-field-entries.js.map +1 -0
- package/dist/migrations/003-create-custom-field-model-type-map.cjs +6 -20
- package/dist/migrations/003-create-custom-field-model-type-map.cjs.map +1 -0
- package/dist/migrations/003-create-custom-field-model-type-map.js +6 -18
- package/dist/migrations/003-create-custom-field-model-type-map.js.map +1 -0
- package/dist/migrations/index.cjs +2 -88
- package/dist/migrations/index.cjs.map +1 -0
- package/dist/migrations/index.js +2 -89
- package/dist/migrations/index.js.map +1 -0
- package/dist/models/CustomFieldDefinition.cjs +2 -147
- package/dist/models/CustomFieldDefinition.cjs.map +1 -0
- package/dist/models/CustomFieldDefinition.d.cts +2 -1
- package/dist/models/CustomFieldDefinition.d.ts +2 -1
- package/dist/models/CustomFieldDefinition.js +2 -146
- package/dist/models/CustomFieldDefinition.js.map +1 -0
- package/dist/models/CustomFieldEntries.cjs +2 -71
- package/dist/models/CustomFieldEntries.cjs.map +1 -0
- package/dist/models/CustomFieldEntries.d.cts +2 -1
- package/dist/models/CustomFieldEntries.d.ts +2 -1
- package/dist/models/CustomFieldEntries.js +2 -70
- package/dist/models/CustomFieldEntries.js.map +1 -0
- package/dist/models/CustomFieldModelTypeMap.cjs +2 -62
- package/dist/models/CustomFieldModelTypeMap.cjs.map +1 -0
- package/dist/models/CustomFieldModelTypeMap.d.cts +2 -1
- package/dist/models/CustomFieldModelTypeMap.d.ts +2 -1
- package/dist/models/CustomFieldModelTypeMap.js +2 -61
- package/dist/models/CustomFieldModelTypeMap.js.map +1 -0
- package/dist/models/CustomFieldValue.cjs +2 -109
- package/dist/models/CustomFieldValue.cjs.map +1 -0
- package/dist/models/CustomFieldValue.d.cts +2 -1
- package/dist/models/CustomFieldValue.d.ts +2 -1
- package/dist/models/CustomFieldValue.js +2 -108
- package/dist/models/CustomFieldValue.js.map +1 -0
- package/dist/models/CustomValidator.cjs +2 -68
- package/dist/models/CustomValidator.cjs.map +1 -0
- package/dist/models/CustomValidator.d.cts +2 -1
- package/dist/models/CustomValidator.d.ts +2 -1
- package/dist/models/CustomValidator.js +2 -67
- package/dist/models/CustomValidator.js.map +1 -0
- package/dist/models/index.cjs +2 -163
- package/dist/models/index.cjs.map +1 -0
- package/dist/models/index.d.cts +7 -0
- package/dist/models/index.d.ts +0 -4
- package/dist/models/index.js +2 -161
- package/dist/models/index.js.map +1 -0
- package/dist/models/tests/AssociatedTestModel.cjs +2 -51
- package/dist/models/tests/AssociatedTestModel.cjs.map +1 -0
- package/dist/models/tests/AssociatedTestModel.js +2 -50
- package/dist/models/tests/AssociatedTestModel.js.map +1 -0
- package/dist/models/tests/TestModel.cjs +2 -43
- package/dist/models/tests/TestModel.cjs.map +1 -0
- package/dist/models/tests/TestModel.js +2 -42
- package/dist/models/tests/TestModel.js.map +1 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +2 -35
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs.map +1 -0
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +2 -34
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js.map +1 -0
- package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +2 -33
- package/dist/models/tests/contextAwareModels/ContextTestModel.cjs.map +1 -0
- package/dist/models/tests/contextAwareModels/ContextTestModel.js +2 -32
- package/dist/models/tests/contextAwareModels/ContextTestModel.js.map +1 -0
- package/dist/repository/definition.cjs +2 -221
- package/dist/repository/definition.cjs.map +1 -0
- package/dist/repository/definition.js +2 -212
- package/dist/repository/definition.js.map +1 -0
- package/dist/repository/entries.cjs +2 -69
- package/dist/repository/entries.cjs.map +1 -0
- package/dist/repository/entries.js +2 -67
- package/dist/repository/entries.js.map +1 -0
- package/dist/repository/utils/formatValues.cjs +2 -14
- package/dist/repository/utils/formatValues.cjs.map +1 -0
- package/dist/repository/utils/formatValues.js +2 -14
- package/dist/repository/utils/formatValues.js.map +1 -0
- package/dist/repository/validator.cjs +2 -58
- package/dist/repository/validator.cjs.map +1 -0
- package/dist/repository/validator.js +2 -54
- package/dist/repository/validator.js.map +1 -0
- package/dist/repository/value.cjs +2 -77
- package/dist/repository/value.cjs.map +1 -0
- package/dist/repository/value.js +2 -76
- package/dist/repository/value.js.map +1 -0
- package/dist/scopes/filter.cjs +2 -56
- package/dist/scopes/filter.cjs.map +1 -0
- package/dist/scopes/filter.d.cts +2 -1
- package/dist/scopes/filter.d.ts +2 -1
- package/dist/scopes/filter.js +2 -54
- package/dist/scopes/filter.js.map +1 -0
- package/dist/scopes/helpers/filter.helpers.cjs +25 -131
- package/dist/scopes/helpers/filter.helpers.cjs.map +1 -0
- package/dist/scopes/helpers/filter.helpers.d.cts +2 -1
- package/dist/scopes/helpers/filter.helpers.d.ts +2 -1
- package/dist/scopes/helpers/filter.helpers.js +25 -126
- package/dist/scopes/helpers/filter.helpers.js.map +1 -0
- package/dist/scopes/index.cjs +1 -1
- package/dist/scopes/index.js +1 -3
- package/dist/types/index.d.cts +4 -2
- package/dist/types/index.d.ts +4 -2
- package/dist/utils/constants/index.cjs +2 -32
- package/dist/utils/constants/index.cjs.map +1 -0
- package/dist/utils/constants/index.d.cts +2 -1
- package/dist/utils/constants/index.d.ts +2 -1
- package/dist/utils/constants/index.js +2 -29
- package/dist/utils/constants/index.js.map +1 -0
- package/dist/utils/db/index.cjs +2 -15
- package/dist/utils/db/index.cjs.map +1 -0
- package/dist/utils/db/index.js +2 -14
- package/dist/utils/db/index.js.map +1 -0
- package/dist/utils/helpers/index.cjs +2 -23
- package/dist/utils/helpers/index.cjs.map +1 -0
- package/dist/utils/helpers/index.d.cts +2 -1
- package/dist/utils/helpers/index.d.ts +2 -1
- package/dist/utils/helpers/index.js +2 -21
- package/dist/utils/helpers/index.js.map +1 -0
- package/dist/utils/init.cjs +2 -115
- package/dist/utils/init.cjs.map +1 -0
- package/dist/utils/init.js +2 -111
- package/dist/utils/init.js.map +1 -0
- package/dist/utils/logger/index.cjs +2 -15
- package/dist/utils/logger/index.cjs.map +1 -0
- package/dist/utils/logger/index.js +2 -12
- package/dist/utils/logger/index.js.map +1 -0
- package/dist/utils/scopeAttributes.cjs +2 -12
- package/dist/utils/scopeAttributes.cjs.map +1 -0
- package/dist/utils/scopeAttributes.js +2 -11
- package/dist/utils/scopeAttributes.js.map +1 -0
- package/dist/utils/validations/index.cjs +2 -34
- package/dist/utils/validations/index.cjs.map +1 -0
- package/dist/utils/validations/index.js +2 -32
- package/dist/utils/validations/index.js.map +1 -0
- package/dist/utils/validations/schema/custom-fields.cjs +2 -9
- package/dist/utils/validations/schema/custom-fields.cjs.map +1 -0
- package/dist/utils/validations/schema/custom-fields.d.cts +2 -1
- package/dist/utils/validations/schema/custom-fields.d.ts +2 -1
- package/dist/utils/validations/schema/custom-fields.js +2 -7
- package/dist/utils/validations/schema/custom-fields.js.map +1 -0
- package/dist/utils/validations/schema/validator-schema.cjs +2 -102
- package/dist/utils/validations/schema/validator-schema.cjs.map +1 -0
- package/dist/utils/validations/schema/validator-schema.js +2 -99
- package/dist/utils/validations/schema/validator-schema.js.map +1 -0
- package/dist/utils/validations/validators/index.cjs +2 -45
- package/dist/utils/validations/validators/index.cjs.map +1 -0
- package/dist/utils/validations/validators/index.js +2 -42
- package/dist/utils/validations/validators/index.js.map +1 -0
- package/dist/utils/validations/validators/multi-select-dropdown.validator.cjs +2 -7
- package/dist/utils/validations/validators/multi-select-dropdown.validator.cjs.map +1 -0
- package/dist/utils/validations/validators/multi-select-dropdown.validator.js +2 -7
- package/dist/utils/validations/validators/multi-select-dropdown.validator.js.map +1 -0
- package/dist/utils/validations/validators/multi-select-status.validator.cjs +2 -10
- package/dist/utils/validations/validators/multi-select-status.validator.cjs.map +1 -0
- package/dist/utils/validations/validators/multi-select-status.validator.js +2 -10
- package/dist/utils/validations/validators/multi-select-status.validator.js.map +1 -0
- package/dist/utils/validations/validators/multi-select.helpers.cjs +2 -12
- package/dist/utils/validations/validators/multi-select.helpers.cjs.map +1 -0
- package/dist/utils/validations/validators/multi-select.helpers.js +2 -10
- package/dist/utils/validations/validators/multi-select.helpers.js.map +1 -0
- package/dist/utils/validations/validators/select.validator.cjs +2 -12
- package/dist/utils/validations/validators/select.validator.cjs.map +1 -0
- package/dist/utils/validations/validators/select.validator.js +2 -10
- package/dist/utils/validations/validators/select.validator.js.map +1 -0
- package/dist/utils/validations/validators/status.validator.cjs +2 -12
- package/dist/utils/validations/validators/status.validator.cjs.map +1 -0
- package/dist/utils/validations/validators/status.validator.js +2 -10
- package/dist/utils/validations/validators/status.validator.js.map +1 -0
- package/package.json +3 -3
- package/dist/api/v1/field-policies/index.cjs +0 -84
- package/dist/api/v1/field-policies/index.js +0 -83
- package/dist/migrations/004-create-field-policy-tables.cjs +0 -29
- package/dist/migrations/004-create-field-policy-tables.js +0 -27
- package/dist/models/FieldPolicy.cjs +0 -50
- package/dist/models/FieldPolicy.d.cts +0 -23
- package/dist/models/FieldPolicy.d.ts +0 -23
- package/dist/models/FieldPolicy.js +0 -49
- package/dist/models/tests/AssociatedTestModel.d.ts +0 -2
- package/dist/models/tests/TestModel.d.ts +0 -2
- package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +0 -2
- package/dist/models/tests/contextAwareModels/ContextTestModel.d.ts +0 -1
- package/dist/repository/field-policy.cjs +0 -46
- package/dist/repository/field-policy.d.cts +0 -31
- package/dist/repository/field-policy.d.ts +0 -31
- package/dist/repository/field-policy.js +0 -37
|
@@ -1,125 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//#region src/api/v1/definition/validations.ts
|
|
5
|
-
const FileValidationSchema = Joi.object({
|
|
6
|
-
name: Joi.string().required(),
|
|
7
|
-
type: Joi.string(),
|
|
8
|
-
size: Joi.string(),
|
|
9
|
-
addedBy: Joi.string().uuid()
|
|
10
|
-
});
|
|
11
|
-
const statusValidationObject = Joi.object({
|
|
12
|
-
value: Joi.string().required(),
|
|
13
|
-
color: Joi.string().required()
|
|
14
|
-
});
|
|
15
|
-
const stringOptionsSchema = Joi.array().required().items(Joi.string()).min(1).unique();
|
|
16
|
-
const statusOptionsSchema = Joi.array().required().items(statusValidationObject).min(1).unique("value");
|
|
17
|
-
/**
|
|
18
|
-
* Schema for the validation of custom field definition
|
|
19
|
-
* The only custom validation is for
|
|
20
|
-
* {@link CustomFieldDefinitionType.SELECT SELECT},
|
|
21
|
-
* {@link CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN MULTI_SELECT_DROPDOWN},
|
|
22
|
-
* {@link CustomFieldDefinitionType.STATUS STATUS},
|
|
23
|
-
* and
|
|
24
|
-
* {@link CustomFieldDefinitionType.MULTI_SELECT_STATUS MULTI_SELECT_STATUS}
|
|
25
|
-
* field types.
|
|
26
|
-
* The rest of the field types are validated by Joi
|
|
27
|
-
*/
|
|
28
|
-
const ValidationSchema = Joi.when("fieldType", {
|
|
29
|
-
switch: [
|
|
30
|
-
{
|
|
31
|
-
is: CustomFieldDefinitionType.SELECT,
|
|
32
|
-
then: stringOptionsSchema
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
36
|
-
then: stringOptionsSchema
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
is: CustomFieldDefinitionType.STATUS,
|
|
40
|
-
then: statusOptionsSchema
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
is: CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
44
|
-
then: statusOptionsSchema
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
otherwise: Joi.forbidden()
|
|
48
|
-
});
|
|
49
|
-
const multiSelectDefaultValueSchema = Joi.array().items(Joi.string()).unique().allow(null);
|
|
50
|
-
const DefaultValueSchema = Joi.when("fieldType", { switch: [
|
|
51
|
-
{
|
|
52
|
-
is: CustomFieldDefinitionType.BOOLEAN,
|
|
53
|
-
then: Joi.boolean().allow(null)
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
is: CustomFieldDefinitionType.DATE,
|
|
57
|
-
then: Joi.date().allow(null)
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
is: CustomFieldDefinitionType.DATETIME,
|
|
61
|
-
then: Joi.date().allow(null)
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
is: CustomFieldDefinitionType.FILE,
|
|
65
|
-
then: Joi.array().items(FileValidationSchema).allow(null)
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
is: CustomFieldDefinitionType.IMAGE,
|
|
69
|
-
then: Joi.array().items(Joi.string().uri()).allow(null)
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
is: CustomFieldDefinitionType.NUMBER,
|
|
73
|
-
then: Joi.number().allow(null)
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
is: CustomFieldDefinitionType.SELECT,
|
|
77
|
-
then: Joi.string().allow(null)
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
is: CustomFieldDefinitionType.STATUS,
|
|
81
|
-
then: Joi.string().allow(null)
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
is: CustomFieldDefinitionType.TEXT,
|
|
85
|
-
then: Joi.string().allow(null)
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
is: CustomFieldDefinitionType.MULTI_SELECT_STATUS,
|
|
89
|
-
then: multiSelectDefaultValueSchema
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN,
|
|
93
|
-
then: multiSelectDefaultValueSchema
|
|
94
|
-
}
|
|
95
|
-
] });
|
|
96
|
-
const CustomFieldDefinitionCreationSchema = Joi.object({
|
|
97
|
-
name: Joi.string().required(),
|
|
98
|
-
displayName: Joi.string().required(),
|
|
99
|
-
validation: ValidationSchema,
|
|
100
|
-
defaultValue: DefaultValueSchema,
|
|
101
|
-
fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)).required(),
|
|
102
|
-
entityId: Joi.string().guid().required(),
|
|
103
|
-
entityType: Joi.string().required(),
|
|
104
|
-
description: Joi.string(),
|
|
105
|
-
required: Joi.boolean(),
|
|
106
|
-
disabled: Joi.boolean(),
|
|
107
|
-
blockEditingFromUI: Joi.boolean(),
|
|
108
|
-
modelTypeIds: Joi.array().items(Joi.string().guid())
|
|
109
|
-
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
110
|
-
const CustomFieldDefinitionUpdateSchema = Joi.object({
|
|
111
|
-
displayName: Joi.string(),
|
|
112
|
-
validation: ValidationSchema,
|
|
113
|
-
defaultValue: DefaultValueSchema,
|
|
114
|
-
fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)),
|
|
115
|
-
description: Joi.string().allow(null),
|
|
116
|
-
required: Joi.boolean(),
|
|
117
|
-
disabled: Joi.boolean(),
|
|
118
|
-
blockEditingFromUI: Joi.boolean(),
|
|
119
|
-
modelTypeIds: Joi.array().items(Joi.string().guid())
|
|
120
|
-
}).oxor("required", "blockEditingFromUI", { isPresent: (value) => value === true });
|
|
121
|
-
const validateCustomFieldDefinitionCreation = (payload) => CustomFieldDefinitionCreationSchema.validateAsync(payload, { abortEarly: false });
|
|
122
|
-
const validateCustomFieldDefinitionUpdate = (payload) => CustomFieldDefinitionUpdateSchema.validateAsync(payload, { abortEarly: false });
|
|
123
|
-
|
|
124
|
-
//#endregion
|
|
125
|
-
export { validateCustomFieldDefinitionCreation, validateCustomFieldDefinitionUpdate };
|
|
1
|
+
import{CustomFieldDefinitionType as e}from"../../../utils/constants/index.js";import t from"joi";const n=t.object({name:t.string().required(),type:t.string(),size:t.string(),addedBy:t.string().uuid()}),r=t.object({value:t.string().required(),color:t.string().required()}),i=t.array().required().items(t.string()).min(1).unique(),a=t.array().required().items(r).min(1).unique(`value`),o=t.when(`fieldType`,{switch:[{is:e.SELECT,then:i},{is:e.MULTI_SELECT_DROPDOWN,then:i},{is:e.STATUS,then:a},{is:e.MULTI_SELECT_STATUS,then:a}],otherwise:t.forbidden()}),s=t.array().items(t.string()).unique().allow(null),c=t.when(`fieldType`,{switch:[{is:e.BOOLEAN,then:t.boolean().allow(null)},{is:e.DATE,then:t.date().allow(null)},{is:e.DATETIME,then:t.date().allow(null)},{is:e.FILE,then:t.array().items(n).allow(null)},{is:e.IMAGE,then:t.array().items(t.string().uri()).allow(null)},{is:e.NUMBER,then:t.number().allow(null)},{is:e.SELECT,then:t.string().allow(null)},{is:e.STATUS,then:t.string().allow(null)},{is:e.TEXT,then:t.string().allow(null)},{is:e.MULTI_SELECT_STATUS,then:s},{is:e.MULTI_SELECT_DROPDOWN,then:s}]}),l=t.object({name:t.string().required(),displayName:t.string().required(),validation:o,defaultValue:c,fieldType:t.string().valid(...Object.values(e)).required(),entityId:t.string().guid().required(),entityType:t.string().required(),description:t.string(),required:t.boolean(),disabled:t.boolean(),blockEditingFromUI:t.boolean(),modelTypeIds:t.array().items(t.string().guid())}).oxor(`required`,`blockEditingFromUI`,{isPresent:e=>e===!0}),u=t.object({displayName:t.string(),validation:o,defaultValue:c,fieldType:t.string().valid(...Object.values(e)),description:t.string().allow(null),required:t.boolean(),disabled:t.boolean(),blockEditingFromUI:t.boolean(),modelTypeIds:t.array().items(t.string().guid())}).oxor(`required`,`blockEditingFromUI`,{isPresent:e=>e===!0}),d=e=>l.validateAsync(e,{abortEarly:!1}),f=e=>u.validateAsync(e,{abortEarly:!1});export{d as validateCustomFieldDefinitionCreation,f as validateCustomFieldDefinitionUpdate};
|
|
2
|
+
//# sourceMappingURL=validations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.js","names":[],"sources":["../../../../src/api/v1/definition/validations.ts"],"sourcesContent":["import Joi from 'joi';\nimport { CustomFieldDefinitionType } from '../../../utils/constants';\nimport type { CreateCustomFieldDefinition, UpdateCustomFieldDefinition } from '../../../types/definition';\n\nconst FileValidationSchema = Joi.object({\n name: Joi.string().required(),\n type: Joi.string(),\n size: Joi.string(),\n addedBy: Joi.string().uuid(),\n});\nconst statusValidationObject = Joi.object({\n value: Joi.string().required(),\n color: Joi.string().required(),\n});\n\nconst stringOptionsSchema = Joi.array().required().items(Joi.string()).min(1)\n .unique();\nconst statusOptionsSchema = Joi.array().required().items(statusValidationObject).min(1)\n .unique('value');\n\n/**\n * Schema for the validation of custom field definition\n * The only custom validation is for\n * {@link CustomFieldDefinitionType.SELECT SELECT},\n * {@link CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN MULTI_SELECT_DROPDOWN},\n * {@link CustomFieldDefinitionType.STATUS STATUS},\n * and\n * {@link CustomFieldDefinitionType.MULTI_SELECT_STATUS MULTI_SELECT_STATUS}\n * field types.\n * The rest of the field types are validated by Joi\n */\nconst ValidationSchema = Joi.when('fieldType', {\n switch: [\n { is: CustomFieldDefinitionType.SELECT, then: stringOptionsSchema },\n { is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN, then: stringOptionsSchema },\n { is: CustomFieldDefinitionType.STATUS, then: statusOptionsSchema },\n { is: CustomFieldDefinitionType.MULTI_SELECT_STATUS, then: statusOptionsSchema },\n ],\n otherwise: Joi.forbidden(),\n});\n\nconst multiSelectDefaultValueSchema = Joi.array().items(Joi.string()).unique().allow(null);\n\nconst DefaultValueSchema = Joi.when('fieldType', {\n switch: [\n { is: CustomFieldDefinitionType.BOOLEAN, then: Joi.boolean().allow(null) },\n { is: CustomFieldDefinitionType.DATE, then: Joi.date().allow(null) },\n { is: CustomFieldDefinitionType.DATETIME, then: Joi.date().allow(null) },\n { is: CustomFieldDefinitionType.FILE, then: Joi.array().items(FileValidationSchema).allow(null) },\n { is: CustomFieldDefinitionType.IMAGE, then: Joi.array().items(Joi.string().uri()).allow(null) },\n { is: CustomFieldDefinitionType.NUMBER, then: Joi.number().allow(null) },\n { is: CustomFieldDefinitionType.SELECT, then: Joi.string().allow(null) },\n { is: CustomFieldDefinitionType.STATUS, then: Joi.string().allow(null) },\n { is: CustomFieldDefinitionType.TEXT, then: Joi.string().allow(null) },\n { is: CustomFieldDefinitionType.MULTI_SELECT_STATUS, then: multiSelectDefaultValueSchema },\n { is: CustomFieldDefinitionType.MULTI_SELECT_DROPDOWN, then: multiSelectDefaultValueSchema },\n ],\n});\n\nconst CustomFieldDefinitionCreationSchema = Joi.object({\n name: Joi.string().required(),\n displayName: Joi.string().required(),\n validation: ValidationSchema,\n defaultValue: DefaultValueSchema,\n fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)).required(),\n entityId: Joi.string().guid().required(),\n entityType: Joi.string().required(),\n description: Joi.string(),\n required: Joi.boolean(),\n disabled: Joi.boolean(),\n blockEditingFromUI: Joi.boolean(),\n modelTypeIds: Joi.array().items(Joi.string().guid()),\n}).oxor('required', 'blockEditingFromUI', { isPresent: value => value === true });\n\nconst CustomFieldDefinitionUpdateSchema = Joi.object({\n displayName: Joi.string(),\n validation: ValidationSchema,\n defaultValue: DefaultValueSchema,\n fieldType: Joi.string().valid(...Object.values(CustomFieldDefinitionType)),\n description: Joi.string().allow(null),\n required: Joi.boolean(),\n disabled: Joi.boolean(),\n blockEditingFromUI: Joi.boolean(),\n modelTypeIds: Joi.array().items(Joi.string().guid()),\n}).oxor('required', 'blockEditingFromUI', { isPresent: value => value === true });\n\nexport const validateCustomFieldDefinitionCreation = (payload: unknown): Promise<CreateCustomFieldDefinition> =>\n CustomFieldDefinitionCreationSchema.validateAsync(payload, { abortEarly: false });\n\nexport const validateCustomFieldDefinitionUpdate = (payload: unknown): Promise<UpdateCustomFieldDefinition> =>\n CustomFieldDefinitionUpdateSchema.validateAsync(payload, { abortEarly: false });\n"],"mappings":"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"}
|
package/dist/api/v1/errors.cjs
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
let joi = require("joi");
|
|
4
|
-
let _autofleet_errors = require("@autofleet/errors");
|
|
5
|
-
|
|
6
|
-
//#region src/api/v1/errors.ts
|
|
7
|
-
var errors_default = (err, res, additionalData) => {
|
|
8
|
-
let error = err;
|
|
9
|
-
if ([joi.ValidationError, sequelize.ValidationError].some((ErrClass) => err instanceof ErrClass)) error = new _autofleet_errors.BadRequest([err]);
|
|
10
|
-
return (0, _autofleet_errors.handleError)(error, res, additionalData);
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
//#endregion
|
|
14
|
-
exports.default = errors_default;
|
|
1
|
+
const e=require(`../../_virtual/rolldown_runtime.cjs`);let t=require(`sequelize`),n=require(`joi`),r=require(`@autofleet/errors`);var i=(e,i,a)=>{let o=e;return[n.ValidationError,t.ValidationError].some(t=>e instanceof t)&&(o=new r.BadRequest([e])),(0,r.handleError)(o,i,a)};exports.default=i;
|
|
2
|
+
//# sourceMappingURL=errors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.cjs","names":["InputValidationError","DatabaseValidationError","BadRequest"],"sources":["../../../src/api/v1/errors.ts"],"sourcesContent":["import type { Response } from 'express';\nimport { handleError, BadRequest, type LogPayload } from '@autofleet/errors';\nimport { ValidationError as InputValidationError } from 'joi';\nimport { ValidationError as DatabaseValidationError } from 'sequelize';\n\nexport default (err: Error, res: Response, additionalData: LogPayload): void => {\n let error = err;\n if ([InputValidationError, DatabaseValidationError].some(ErrClass => err instanceof ErrClass)) {\n error = new BadRequest([err]);\n }\n\n return handleError(error, res, additionalData);\n};\n"],"mappings":"kIAKA,IAAA,GAAgB,EAAY,EAAe,IAAqC,CAC9E,IAAI,EAAQ,EAKZ,MAJI,CAACA,EAAAA,gBAAsBC,EAAAA,gBAAwB,CAAC,KAAK,GAAY,aAAe,EAAS,GAC3F,EAAQ,IAAIC,EAAAA,WAAW,CAAC,EAAI,CAAC,GAG/B,EAAA,EAAA,aAAmB,EAAO,EAAK,EAAe"}
|
package/dist/api/v1/errors.js
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { BadRequest, handleError } from "@autofleet/errors";
|
|
4
|
-
|
|
5
|
-
//#region src/api/v1/errors.ts
|
|
6
|
-
var errors_default = (err, res, additionalData) => {
|
|
7
|
-
let error = err;
|
|
8
|
-
if ([ValidationError$1, ValidationError].some((ErrClass) => err instanceof ErrClass)) error = new BadRequest([err]);
|
|
9
|
-
return handleError(error, res, additionalData);
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { errors_default as default };
|
|
1
|
+
import{ValidationError as e}from"sequelize";import{ValidationError as t}from"joi";import{BadRequest as n,handleError as r}from"@autofleet/errors";var i=(i,a,o)=>{let s=i;return[t,e].some(e=>i instanceof e)&&(s=new n([i])),r(s,a,o)};export{i as default};
|
|
2
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","names":["InputValidationError","DatabaseValidationError"],"sources":["../../../src/api/v1/errors.ts"],"sourcesContent":["import type { Response } from 'express';\nimport { handleError, BadRequest, type LogPayload } from '@autofleet/errors';\nimport { ValidationError as InputValidationError } from 'joi';\nimport { ValidationError as DatabaseValidationError } from 'sequelize';\n\nexport default (err: Error, res: Response, additionalData: LogPayload): void => {\n let error = err;\n if ([InputValidationError, DatabaseValidationError].some(ErrClass => err instanceof ErrClass)) {\n error = new BadRequest([err]);\n }\n\n return handleError(error, res, additionalData);\n};\n"],"mappings":"kJAKA,IAAA,GAAgB,EAAY,EAAe,IAAqC,CAC9E,IAAI,EAAQ,EAKZ,MAJI,CAACA,EAAsBC,EAAwB,CAAC,KAAK,GAAY,aAAe,EAAS,GAC3F,EAAQ,IAAI,EAAW,CAAC,EAAI,CAAC,EAGxB,EAAY,EAAO,EAAK,EAAe"}
|
package/dist/api/v1/index.cjs
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const require_index$1 = require('./definition/index.cjs');
|
|
4
|
-
const require_index$2 = require('./validator/index.cjs');
|
|
5
|
-
const require_index$3 = require('./field-policies/index.cjs');
|
|
6
|
-
let _autofleet_node_common = require("@autofleet/node-common");
|
|
7
|
-
|
|
8
|
-
//#region src/api/v1/index.ts
|
|
9
|
-
const router = (0, _autofleet_node_common.Router)({ logger: require_index.default });
|
|
10
|
-
router.use("/custom-field-definitions/:modelName", require_index$1.default);
|
|
11
|
-
router.use("/custom-validators/:modelName", require_index$2.default);
|
|
12
|
-
router.use("/field-policies/:modelName", require_index$3.default);
|
|
13
|
-
var v1_default = router;
|
|
14
|
-
|
|
15
|
-
//#endregion
|
|
16
|
-
exports.default = v1_default;
|
|
1
|
+
const e=require(`../../_virtual/rolldown_runtime.cjs`),t=require(`../../utils/logger/index.cjs`),n=require(`./definition/index.cjs`),r=require(`./validator/index.cjs`);let i=require(`@autofleet/node-common`);const a=(0,i.Router)({logger:t.default});a.use(`/custom-field-definitions/:modelName`,n.default),a.use(`/custom-validators/:modelName`,r.default);var o=a;exports.default=o;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["router: ReturnType<typeof Router>","definitionRouter","validatorRouter"],"sources":["../../../src/api/v1/index.ts"],"sourcesContent":["import { Router } from '@autofleet/node-common';\nimport logger from '../../utils/logger';\nimport definitionRouter from './definition';\nimport validatorRouter from './validator';\n\nconst router: ReturnType<typeof Router> = Router({ logger });\n\nrouter.use('/custom-field-definitions/:modelName', definitionRouter);\nrouter.use('/custom-validators/:modelName', validatorRouter);\n\nexport default router;\n"],"mappings":"gNAKA,MAAMA,GAAAA,EAAAA,EAAAA,QAA2C,CAAE,OAAA,EAAA,QAAQ,CAAC,CAE5D,EAAO,IAAI,uCAAwCC,EAAAA,QAAiB,CACpE,EAAO,IAAI,gCAAiCC,EAAAA,QAAgB,CAE5D,IAAA,EAAe"}
|
package/dist/api/v1/index.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import validator_default from "./validator/index.js";
|
|
4
|
-
import field_policies_default from "./field-policies/index.js";
|
|
5
|
-
import { Router } from "@autofleet/node-common";
|
|
6
|
-
|
|
7
|
-
//#region src/api/v1/index.ts
|
|
8
|
-
const router = Router({ logger: logger_default });
|
|
9
|
-
router.use("/custom-field-definitions/:modelName", definition_default);
|
|
10
|
-
router.use("/custom-validators/:modelName", validator_default);
|
|
11
|
-
router.use("/field-policies/:modelName", field_policies_default);
|
|
12
|
-
var v1_default = router;
|
|
13
|
-
|
|
14
|
-
//#endregion
|
|
15
|
-
export { v1_default as default };
|
|
1
|
+
import e from"../../utils/logger/index.js";import t from"./definition/index.js";import n from"./validator/index.js";import{Router as r}from"@autofleet/node-common";const i=r({logger:e});i.use(`/custom-field-definitions/:modelName`,t),i.use(`/custom-validators/:modelName`,n);var a=i;export{a as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["router: ReturnType<typeof Router>","definitionRouter","validatorRouter"],"sources":["../../../src/api/v1/index.ts"],"sourcesContent":["import { Router } from '@autofleet/node-common';\nimport logger from '../../utils/logger';\nimport definitionRouter from './definition';\nimport validatorRouter from './validator';\n\nconst router: ReturnType<typeof Router> = Router({ logger });\n\nrouter.use('/custom-field-definitions/:modelName', definitionRouter);\nrouter.use('/custom-validators/:modelName', validatorRouter);\n\nexport default router;\n"],"mappings":"oKAKA,MAAMA,EAAoC,EAAO,CAAE,OAAA,EAAQ,CAAC,CAE5D,EAAO,IAAI,uCAAwCC,EAAiB,CACpE,EAAO,IAAI,gCAAiCC,EAAgB,CAE5D,IAAA,EAAe"}
|
|
@@ -1,115 +1,2 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const require_errors = require('../errors.cjs');
|
|
4
|
-
const require_mat_path_state = require('../../../mat-path-state.cjs');
|
|
5
|
-
const require_validator = require('../../../repository/validator.cjs');
|
|
6
|
-
const require_validations = require('./validations.cjs');
|
|
7
|
-
const require_validator_schema = require('../../../utils/validations/schema/validator-schema.cjs');
|
|
8
|
-
let _autofleet_errors = require("@autofleet/errors");
|
|
9
|
-
let _autofleet_node_common = require("@autofleet/node-common");
|
|
10
|
-
let http_status_codes = require("http-status-codes");
|
|
11
|
-
|
|
12
|
-
//#region src/api/v1/validator/index.ts
|
|
13
|
-
const router = (0, _autofleet_node_common.Router)({ logger: require_index.default });
|
|
14
|
-
const ENTITY = "CustomValidator";
|
|
15
|
-
/**
|
|
16
|
-
* Create
|
|
17
|
-
*/
|
|
18
|
-
router.post("/", async (req, res) => {
|
|
19
|
-
const { modelName } = req.params;
|
|
20
|
-
try {
|
|
21
|
-
const validatedPayload = await require_validations.default.create.validateAsync(req.body);
|
|
22
|
-
require_validator_schema.validateValidatorSchema(validatedPayload.schema);
|
|
23
|
-
const validator = await require_validator.create({
|
|
24
|
-
...validatedPayload,
|
|
25
|
-
modelType: modelName
|
|
26
|
-
});
|
|
27
|
-
return res.status(http_status_codes.StatusCodes.CREATED).json(validator);
|
|
28
|
-
} catch (err) {
|
|
29
|
-
return require_errors.default(err, res, {
|
|
30
|
-
logger: require_index.default,
|
|
31
|
-
message: `Error in create ${ENTITY} request`
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
/**
|
|
36
|
-
* Get all
|
|
37
|
-
*/
|
|
38
|
-
router.get("/", async (req, res) => {
|
|
39
|
-
try {
|
|
40
|
-
const { modelName } = req.params;
|
|
41
|
-
const { entityId, entityType } = req.query;
|
|
42
|
-
const applyEntityFilters = !require_mat_path_state.matPathState.isMatPathEnabled?.();
|
|
43
|
-
const where = {
|
|
44
|
-
modelType: modelName,
|
|
45
|
-
...applyEntityFilters && entityId && { entityId },
|
|
46
|
-
...applyEntityFilters && entityType && { entityType }
|
|
47
|
-
};
|
|
48
|
-
const validators = await require_validator.findAll(where);
|
|
49
|
-
return res.status(http_status_codes.StatusCodes.OK).json({ validators });
|
|
50
|
-
} catch (err) {
|
|
51
|
-
return require_errors.default(err, res, {
|
|
52
|
-
logger: require_index.default,
|
|
53
|
-
message: `Error in get all ${ENTITY} request`
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
/**
|
|
58
|
-
* Get by id
|
|
59
|
-
*/
|
|
60
|
-
router.get("/:validatorId", async (req, res) => {
|
|
61
|
-
try {
|
|
62
|
-
const { validatorId, modelName } = req.params;
|
|
63
|
-
const validators = await require_validator.findAll({
|
|
64
|
-
id: validatorId,
|
|
65
|
-
modelType: modelName
|
|
66
|
-
}, { withDisabled: true });
|
|
67
|
-
if (!validators.length) throw new _autofleet_errors.ResourceNotFoundError("Validator not found");
|
|
68
|
-
return res.status(http_status_codes.StatusCodes.OK).json(validators[0]);
|
|
69
|
-
} catch (err) {
|
|
70
|
-
return require_errors.default(err, res, {
|
|
71
|
-
logger: require_index.default,
|
|
72
|
-
message: `Error in get ${ENTITY} request`
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
/**
|
|
77
|
-
* Update
|
|
78
|
-
*/
|
|
79
|
-
router.patch("/:validatorId", async (req, res) => {
|
|
80
|
-
try {
|
|
81
|
-
const { validatorId } = req.params;
|
|
82
|
-
const validatedPayload = await require_validations.default.update.validateAsync(req.body);
|
|
83
|
-
if (validatedPayload.schema) require_validator_schema.validateValidatorSchema(validatedPayload.schema);
|
|
84
|
-
if (!(await require_validator.findAll({ id: validatorId }, { withDisabled: true })).length) throw new _autofleet_errors.ResourceNotFoundError("Validator not found");
|
|
85
|
-
const [count, validators] = await require_validator.update(validatorId, validatedPayload);
|
|
86
|
-
if (!count) throw new _autofleet_errors.ResourceNotFoundError("Validator not found");
|
|
87
|
-
return res.status(http_status_codes.StatusCodes.OK).json(validators[0]);
|
|
88
|
-
} catch (err) {
|
|
89
|
-
return require_errors.default(err, res, {
|
|
90
|
-
logger: require_index.default,
|
|
91
|
-
message: `Error in update ${ENTITY} request`
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
/**
|
|
96
|
-
* Delete (disable)
|
|
97
|
-
*/
|
|
98
|
-
router.delete("/:validatorId", async (req, res) => {
|
|
99
|
-
try {
|
|
100
|
-
const { validatorId } = req.params;
|
|
101
|
-
if (!(await require_validator.findAll({ id: validatorId }, { withDisabled: true })).length) throw new _autofleet_errors.ResourceNotFoundError("Validator not found");
|
|
102
|
-
const [count] = await require_validator.disable(validatorId);
|
|
103
|
-
if (!count) throw new _autofleet_errors.ResourceNotFoundError("Validator failed to be disabled");
|
|
104
|
-
return res.status(http_status_codes.StatusCodes.NO_CONTENT).send();
|
|
105
|
-
} catch (err) {
|
|
106
|
-
return require_errors.default(err, res, {
|
|
107
|
-
logger: require_index.default,
|
|
108
|
-
message: `Error in delete ${ENTITY} request`
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
var validator_default = router;
|
|
113
|
-
|
|
114
|
-
//#endregion
|
|
115
|
-
exports.default = validator_default;
|
|
1
|
+
const e=require(`../../../_virtual/rolldown_runtime.cjs`),t=require(`../../../utils/logger/index.cjs`),n=require(`../errors.cjs`),r=require(`../../../mat-path-state.cjs`),i=require(`../../../repository/validator.cjs`),a=require(`./validations.cjs`),o=require(`../../../utils/validations/schema/validator-schema.cjs`);let s=require(`@autofleet/errors`),c=require(`@autofleet/node-common`),l=require(`http-status-codes`);const u=(0,c.Router)({logger:t.default}),d=`CustomValidator`;u.post(`/`,async(e,r)=>{let{modelName:s}=e.params;try{let t=await a.default.create.validateAsync(e.body);o.validateValidatorSchema(t.schema);let n=await i.create({...t,modelType:s});return r.status(l.StatusCodes.CREATED).json(n)}catch(e){return n.default(e,r,{logger:t.default,message:`Error in create ${d} request`})}}),u.get(`/`,async(e,a)=>{try{let{modelName:t}=e.params,{entityId:n,entityType:o}=e.query,s=!r.matPathState.isMatPathEnabled?.(),c={modelType:t,...s&&n&&{entityId:n},...s&&o&&{entityType:o}},u=await i.findAll(c);return a.status(l.StatusCodes.OK).json({validators:u})}catch(e){return n.default(e,a,{logger:t.default,message:`Error in get all ${d} request`})}}),u.get(`/:validatorId`,async(e,r)=>{try{let{validatorId:t,modelName:n}=e.params,a=await i.findAll({id:t,modelType:n},{withDisabled:!0});if(!a.length)throw new s.ResourceNotFoundError(`Validator not found`);return r.status(l.StatusCodes.OK).json(a[0])}catch(e){return n.default(e,r,{logger:t.default,message:`Error in get ${d} request`})}}),u.patch(`/:validatorId`,async(e,r)=>{try{let{validatorId:t}=e.params,n=await a.default.update.validateAsync(e.body);if(n.schema&&o.validateValidatorSchema(n.schema),!(await i.findAll({id:t},{withDisabled:!0})).length)throw new s.ResourceNotFoundError(`Validator not found`);let[c,u]=await i.update(t,n);if(!c)throw new s.ResourceNotFoundError(`Validator not found`);return r.status(l.StatusCodes.OK).json(u[0])}catch(e){return n.default(e,r,{logger:t.default,message:`Error in update ${d} request`})}}),u.delete(`/:validatorId`,async(e,r)=>{try{let{validatorId:t}=e.params;if(!(await i.findAll({id:t},{withDisabled:!0})).length)throw new s.ResourceNotFoundError(`Validator not found`);let[n]=await i.disable(t);if(!n)throw new s.ResourceNotFoundError(`Validator failed to be disabled`);return r.status(l.StatusCodes.NO_CONTENT).send()}catch(e){return n.default(e,r,{logger:t.default,message:`Error in delete ${d} request`})}});var f=u;exports.default=f;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["router: ReturnType<typeof Router>","validations","StatusCodes","handleError","matPathState","ResourceNotFoundError"],"sources":["../../../../src/api/v1/validator/index.ts"],"sourcesContent":["import { ResourceNotFoundError } from '@autofleet/errors';\nimport { Router } from '@autofleet/node-common';\nimport { StatusCodes } from 'http-status-codes';\nimport handleError from '../errors';\nimport * as ValidatorRepo from '../../../repository/validator';\nimport validations from './validations';\nimport logger from '../../../utils/logger';\nimport { validateValidatorSchema } from '../../../utils/validations/schema/validator-schema';\nimport type { CustomValidator } from '../../../models';\nimport { matPathState } from '../../../mat-path-state';\n\nconst router: ReturnType<typeof Router> = Router({ logger });\nconst ENTITY = 'CustomValidator';\n\n/**\n * Create\n */\nrouter.post<{ modelName: string; }>('/', async (req, res) => {\n const { modelName } = req.params;\n try {\n // Validate the request body\n const validatedPayload = await validations.create.validateAsync(req.body);\n\n // Validate that the schema is a valid AJV schema\n validateValidatorSchema(validatedPayload.schema);\n\n const validator = await ValidatorRepo.create({\n ...validatedPayload,\n modelType: modelName,\n });\n\n return res.status(StatusCodes.CREATED).json(validator);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in create ${ENTITY} request` });\n }\n});\n\n/**\n * Get all\n */\nrouter.get<\n { modelName: string; },\n { validators: CustomValidator[]; },\n never,\n { entityId?: string; entityType?: string; }\n>('/', async (req, res) => {\n try {\n const { modelName } = req.params;\n const { entityId, entityType } = req.query;\n\n // When mat-path is active, drop the explicit `entityId`/`entityType` WHERE filters — RLS\n // on `custom_validators` restricts the result to the caller's visible scope (fleet +\n // ancestor partners). Keeping the filters would exclude partner-level validators whose\n // entityId differs from the requested fleet's entityId.\n const applyEntityFilters = !matPathState.isMatPathEnabled?.();\n\n const where = {\n modelType: modelName,\n ...(applyEntityFilters && entityId && { entityId }),\n ...(applyEntityFilters && entityType && { entityType }),\n };\n\n const validators = await ValidatorRepo.findAll(where);\n\n return res.status(StatusCodes.OK).json({ validators });\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in get all ${ENTITY} request` });\n }\n});\n\n/**\n * Get by id\n */\nrouter.get<{ modelName: string; validatorId: string; }, CustomValidator>('/:validatorId', async (req, res) => {\n try {\n const { validatorId, modelName } = req.params;\n // Include disabled validators when fetching by ID\n const validators = await ValidatorRepo.findAll({ id: validatorId, modelType: modelName }, { withDisabled: true });\n\n if (!validators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n return res.status(StatusCodes.OK).json(validators[0]);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in get ${ENTITY} request` });\n }\n});\n\n/**\n * Update\n */\nrouter.patch<{ modelName: string; validatorId: string; }, CustomValidator>('/:validatorId', async (req, res) => {\n try {\n const { validatorId } = req.params;\n\n // Validate the request body\n const validatedPayload = await validations.update.validateAsync(req.body);\n\n // If schema is included in the update, validate that it's a valid AJV schema\n if (validatedPayload.schema) {\n validateValidatorSchema(validatedPayload.schema);\n }\n\n // First verify the validator exists, including disabled ones\n const existingValidators = await ValidatorRepo.findAll({ id: validatorId }, { withDisabled: true });\n if (!existingValidators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n const [count, validators] = await ValidatorRepo.update(validatorId, validatedPayload as any);\n\n if (!count) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n return res.status(StatusCodes.OK).json(validators[0]);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in update ${ENTITY} request` });\n }\n});\n\n/**\n * Delete (disable)\n */\nrouter.delete<{ modelName: string; validatorId: string; }>('/:validatorId', async (req, res) => {\n try {\n const { validatorId } = req.params;\n\n // First verify the validator exists, including disabled ones\n const existingValidators = await ValidatorRepo.findAll({ id: validatorId }, { withDisabled: true });\n if (!existingValidators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n const [count] = await ValidatorRepo.disable(validatorId);\n\n if (!count) {\n throw new ResourceNotFoundError('Validator failed to be disabled');\n }\n\n return res.status(StatusCodes.NO_CONTENT).send();\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in delete ${ENTITY} request` });\n }\n});\n\nexport default router;\n"],"mappings":"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"}
|
|
@@ -1,114 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { matPathState } from "../../../mat-path-state.js";
|
|
4
|
-
import { create, disable, findAll, update } from "../../../repository/validator.js";
|
|
5
|
-
import validations_default from "./validations.js";
|
|
6
|
-
import { validateValidatorSchema } from "../../../utils/validations/schema/validator-schema.js";
|
|
7
|
-
import { ResourceNotFoundError } from "@autofleet/errors";
|
|
8
|
-
import { Router } from "@autofleet/node-common";
|
|
9
|
-
import { StatusCodes } from "http-status-codes";
|
|
10
|
-
|
|
11
|
-
//#region src/api/v1/validator/index.ts
|
|
12
|
-
const router = Router({ logger: logger_default });
|
|
13
|
-
const ENTITY = "CustomValidator";
|
|
14
|
-
/**
|
|
15
|
-
* Create
|
|
16
|
-
*/
|
|
17
|
-
router.post("/", async (req, res) => {
|
|
18
|
-
const { modelName } = req.params;
|
|
19
|
-
try {
|
|
20
|
-
const validatedPayload = await validations_default.create.validateAsync(req.body);
|
|
21
|
-
validateValidatorSchema(validatedPayload.schema);
|
|
22
|
-
const validator = await create({
|
|
23
|
-
...validatedPayload,
|
|
24
|
-
modelType: modelName
|
|
25
|
-
});
|
|
26
|
-
return res.status(StatusCodes.CREATED).json(validator);
|
|
27
|
-
} catch (err) {
|
|
28
|
-
return errors_default(err, res, {
|
|
29
|
-
logger: logger_default,
|
|
30
|
-
message: `Error in create ${ENTITY} request`
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
/**
|
|
35
|
-
* Get all
|
|
36
|
-
*/
|
|
37
|
-
router.get("/", async (req, res) => {
|
|
38
|
-
try {
|
|
39
|
-
const { modelName } = req.params;
|
|
40
|
-
const { entityId, entityType } = req.query;
|
|
41
|
-
const applyEntityFilters = !matPathState.isMatPathEnabled?.();
|
|
42
|
-
const where = {
|
|
43
|
-
modelType: modelName,
|
|
44
|
-
...applyEntityFilters && entityId && { entityId },
|
|
45
|
-
...applyEntityFilters && entityType && { entityType }
|
|
46
|
-
};
|
|
47
|
-
const validators = await findAll(where);
|
|
48
|
-
return res.status(StatusCodes.OK).json({ validators });
|
|
49
|
-
} catch (err) {
|
|
50
|
-
return errors_default(err, res, {
|
|
51
|
-
logger: logger_default,
|
|
52
|
-
message: `Error in get all ${ENTITY} request`
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
/**
|
|
57
|
-
* Get by id
|
|
58
|
-
*/
|
|
59
|
-
router.get("/:validatorId", async (req, res) => {
|
|
60
|
-
try {
|
|
61
|
-
const { validatorId, modelName } = req.params;
|
|
62
|
-
const validators = await findAll({
|
|
63
|
-
id: validatorId,
|
|
64
|
-
modelType: modelName
|
|
65
|
-
}, { withDisabled: true });
|
|
66
|
-
if (!validators.length) throw new ResourceNotFoundError("Validator not found");
|
|
67
|
-
return res.status(StatusCodes.OK).json(validators[0]);
|
|
68
|
-
} catch (err) {
|
|
69
|
-
return errors_default(err, res, {
|
|
70
|
-
logger: logger_default,
|
|
71
|
-
message: `Error in get ${ENTITY} request`
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
/**
|
|
76
|
-
* Update
|
|
77
|
-
*/
|
|
78
|
-
router.patch("/:validatorId", async (req, res) => {
|
|
79
|
-
try {
|
|
80
|
-
const { validatorId } = req.params;
|
|
81
|
-
const validatedPayload = await validations_default.update.validateAsync(req.body);
|
|
82
|
-
if (validatedPayload.schema) validateValidatorSchema(validatedPayload.schema);
|
|
83
|
-
if (!(await findAll({ id: validatorId }, { withDisabled: true })).length) throw new ResourceNotFoundError("Validator not found");
|
|
84
|
-
const [count, validators] = await update(validatorId, validatedPayload);
|
|
85
|
-
if (!count) throw new ResourceNotFoundError("Validator not found");
|
|
86
|
-
return res.status(StatusCodes.OK).json(validators[0]);
|
|
87
|
-
} catch (err) {
|
|
88
|
-
return errors_default(err, res, {
|
|
89
|
-
logger: logger_default,
|
|
90
|
-
message: `Error in update ${ENTITY} request`
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* Delete (disable)
|
|
96
|
-
*/
|
|
97
|
-
router.delete("/:validatorId", async (req, res) => {
|
|
98
|
-
try {
|
|
99
|
-
const { validatorId } = req.params;
|
|
100
|
-
if (!(await findAll({ id: validatorId }, { withDisabled: true })).length) throw new ResourceNotFoundError("Validator not found");
|
|
101
|
-
const [count] = await disable(validatorId);
|
|
102
|
-
if (!count) throw new ResourceNotFoundError("Validator failed to be disabled");
|
|
103
|
-
return res.status(StatusCodes.NO_CONTENT).send();
|
|
104
|
-
} catch (err) {
|
|
105
|
-
return errors_default(err, res, {
|
|
106
|
-
logger: logger_default,
|
|
107
|
-
message: `Error in delete ${ENTITY} request`
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
var validator_default = router;
|
|
112
|
-
|
|
113
|
-
//#endregion
|
|
114
|
-
export { validator_default as default };
|
|
1
|
+
import e from"../../../utils/logger/index.js";import t from"../errors.js";import{matPathState as n}from"../../../mat-path-state.js";import{create as r,disable as i,findAll as a,update as o}from"../../../repository/validator.js";import s from"./validations.js";import{validateValidatorSchema as c}from"../../../utils/validations/schema/validator-schema.js";import{ResourceNotFoundError as l}from"@autofleet/errors";import{Router as u}from"@autofleet/node-common";import{StatusCodes as d}from"http-status-codes";const f=u({logger:e}),p=`CustomValidator`;f.post(`/`,async(n,i)=>{let{modelName:a}=n.params;try{let e=await s.create.validateAsync(n.body);c(e.schema);let t=await r({...e,modelType:a});return i.status(d.CREATED).json(t)}catch(n){return t(n,i,{logger:e,message:`Error in create ${p} request`})}}),f.get(`/`,async(r,i)=>{try{let{modelName:e}=r.params,{entityId:t,entityType:o}=r.query,s=!n.isMatPathEnabled?.(),c=await a({modelType:e,...s&&t&&{entityId:t},...s&&o&&{entityType:o}});return i.status(d.OK).json({validators:c})}catch(n){return t(n,i,{logger:e,message:`Error in get all ${p} request`})}}),f.get(`/:validatorId`,async(n,r)=>{try{let{validatorId:e,modelName:t}=n.params,i=await a({id:e,modelType:t},{withDisabled:!0});if(!i.length)throw new l(`Validator not found`);return r.status(d.OK).json(i[0])}catch(n){return t(n,r,{logger:e,message:`Error in get ${p} request`})}}),f.patch(`/:validatorId`,async(n,r)=>{try{let{validatorId:e}=n.params,t=await s.update.validateAsync(n.body);if(t.schema&&c(t.schema),!(await a({id:e},{withDisabled:!0})).length)throw new l(`Validator not found`);let[i,u]=await o(e,t);if(!i)throw new l(`Validator not found`);return r.status(d.OK).json(u[0])}catch(n){return t(n,r,{logger:e,message:`Error in update ${p} request`})}}),f.delete(`/:validatorId`,async(n,r)=>{try{let{validatorId:e}=n.params;if(!(await a({id:e},{withDisabled:!0})).length)throw new l(`Validator not found`);let[t]=await i(e);if(!t)throw new l(`Validator failed to be disabled`);return r.status(d.NO_CONTENT).send()}catch(n){return t(n,r,{logger:e,message:`Error in delete ${p} request`})}});var m=f;export{m as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["router: ReturnType<typeof Router>","validations","ValidatorRepo.create","handleError","ValidatorRepo.findAll","ValidatorRepo.update","ValidatorRepo.disable"],"sources":["../../../../src/api/v1/validator/index.ts"],"sourcesContent":["import { ResourceNotFoundError } from '@autofleet/errors';\nimport { Router } from '@autofleet/node-common';\nimport { StatusCodes } from 'http-status-codes';\nimport handleError from '../errors';\nimport * as ValidatorRepo from '../../../repository/validator';\nimport validations from './validations';\nimport logger from '../../../utils/logger';\nimport { validateValidatorSchema } from '../../../utils/validations/schema/validator-schema';\nimport type { CustomValidator } from '../../../models';\nimport { matPathState } from '../../../mat-path-state';\n\nconst router: ReturnType<typeof Router> = Router({ logger });\nconst ENTITY = 'CustomValidator';\n\n/**\n * Create\n */\nrouter.post<{ modelName: string; }>('/', async (req, res) => {\n const { modelName } = req.params;\n try {\n // Validate the request body\n const validatedPayload = await validations.create.validateAsync(req.body);\n\n // Validate that the schema is a valid AJV schema\n validateValidatorSchema(validatedPayload.schema);\n\n const validator = await ValidatorRepo.create({\n ...validatedPayload,\n modelType: modelName,\n });\n\n return res.status(StatusCodes.CREATED).json(validator);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in create ${ENTITY} request` });\n }\n});\n\n/**\n * Get all\n */\nrouter.get<\n { modelName: string; },\n { validators: CustomValidator[]; },\n never,\n { entityId?: string; entityType?: string; }\n>('/', async (req, res) => {\n try {\n const { modelName } = req.params;\n const { entityId, entityType } = req.query;\n\n // When mat-path is active, drop the explicit `entityId`/`entityType` WHERE filters — RLS\n // on `custom_validators` restricts the result to the caller's visible scope (fleet +\n // ancestor partners). Keeping the filters would exclude partner-level validators whose\n // entityId differs from the requested fleet's entityId.\n const applyEntityFilters = !matPathState.isMatPathEnabled?.();\n\n const where = {\n modelType: modelName,\n ...(applyEntityFilters && entityId && { entityId }),\n ...(applyEntityFilters && entityType && { entityType }),\n };\n\n const validators = await ValidatorRepo.findAll(where);\n\n return res.status(StatusCodes.OK).json({ validators });\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in get all ${ENTITY} request` });\n }\n});\n\n/**\n * Get by id\n */\nrouter.get<{ modelName: string; validatorId: string; }, CustomValidator>('/:validatorId', async (req, res) => {\n try {\n const { validatorId, modelName } = req.params;\n // Include disabled validators when fetching by ID\n const validators = await ValidatorRepo.findAll({ id: validatorId, modelType: modelName }, { withDisabled: true });\n\n if (!validators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n return res.status(StatusCodes.OK).json(validators[0]);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in get ${ENTITY} request` });\n }\n});\n\n/**\n * Update\n */\nrouter.patch<{ modelName: string; validatorId: string; }, CustomValidator>('/:validatorId', async (req, res) => {\n try {\n const { validatorId } = req.params;\n\n // Validate the request body\n const validatedPayload = await validations.update.validateAsync(req.body);\n\n // If schema is included in the update, validate that it's a valid AJV schema\n if (validatedPayload.schema) {\n validateValidatorSchema(validatedPayload.schema);\n }\n\n // First verify the validator exists, including disabled ones\n const existingValidators = await ValidatorRepo.findAll({ id: validatorId }, { withDisabled: true });\n if (!existingValidators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n const [count, validators] = await ValidatorRepo.update(validatorId, validatedPayload as any);\n\n if (!count) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n return res.status(StatusCodes.OK).json(validators[0]);\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in update ${ENTITY} request` });\n }\n});\n\n/**\n * Delete (disable)\n */\nrouter.delete<{ modelName: string; validatorId: string; }>('/:validatorId', async (req, res) => {\n try {\n const { validatorId } = req.params;\n\n // First verify the validator exists, including disabled ones\n const existingValidators = await ValidatorRepo.findAll({ id: validatorId }, { withDisabled: true });\n if (!existingValidators.length) {\n throw new ResourceNotFoundError('Validator not found');\n }\n\n const [count] = await ValidatorRepo.disable(validatorId);\n\n if (!count) {\n throw new ResourceNotFoundError('Validator failed to be disabled');\n }\n\n return res.status(StatusCodes.NO_CONTENT).send();\n } catch (err) {\n return handleError(err as Error, res, { logger, message: `Error in delete ${ENTITY} request` });\n }\n});\n\nexport default router;\n"],"mappings":"8fAWA,MAAMA,EAAoC,EAAO,CAAE,OAAA,EAAQ,CAAC,CACtD,EAAS,kBAKf,EAAO,KAA6B,IAAK,MAAO,EAAK,IAAQ,CAC3D,GAAM,CAAE,aAAc,EAAI,OAC1B,GAAI,CAEF,IAAM,EAAmB,MAAMC,EAAY,OAAO,cAAc,EAAI,KAAK,CAGzE,EAAwB,EAAiB,OAAO,CAEhD,IAAM,EAAY,MAAMC,EAAqB,CAC3C,GAAG,EACH,UAAW,EACZ,CAAC,CAEF,OAAO,EAAI,OAAO,EAAY,QAAQ,CAAC,KAAK,EAAU,OAC/C,EAAK,CACZ,OAAOC,EAAY,EAAc,EAAK,CAAE,OAAA,EAAQ,QAAS,mBAAmB,EAAO,UAAW,CAAC,GAEjG,CAKF,EAAO,IAKL,IAAK,MAAO,EAAK,IAAQ,CACzB,GAAI,CACF,GAAM,CAAE,aAAc,EAAI,OACpB,CAAE,WAAU,cAAe,EAAI,MAM/B,EAAqB,CAAC,EAAa,oBAAoB,CAQvD,EAAa,MAAMC,EANX,CACZ,UAAW,EACX,GAAI,GAAsB,GAAY,CAAE,WAAU,CAClD,GAAI,GAAsB,GAAc,CAAE,aAAY,CACvD,CAEoD,CAErD,OAAO,EAAI,OAAO,EAAY,GAAG,CAAC,KAAK,CAAE,aAAY,CAAC,OAC/C,EAAK,CACZ,OAAOD,EAAY,EAAc,EAAK,CAAE,OAAA,EAAQ,QAAS,oBAAoB,EAAO,UAAW,CAAC,GAElG,CAKF,EAAO,IAAkE,gBAAiB,MAAO,EAAK,IAAQ,CAC5G,GAAI,CACF,GAAM,CAAE,cAAa,aAAc,EAAI,OAEjC,EAAa,MAAMC,EAAsB,CAAE,GAAI,EAAa,UAAW,EAAW,CAAE,CAAE,aAAc,GAAM,CAAC,CAEjH,GAAI,CAAC,EAAW,OACd,MAAM,IAAI,EAAsB,sBAAsB,CAGxD,OAAO,EAAI,OAAO,EAAY,GAAG,CAAC,KAAK,EAAW,GAAG,OAC9C,EAAK,CACZ,OAAOD,EAAY,EAAc,EAAK,CAAE,OAAA,EAAQ,QAAS,gBAAgB,EAAO,UAAW,CAAC,GAE9F,CAKF,EAAO,MAAoE,gBAAiB,MAAO,EAAK,IAAQ,CAC9G,GAAI,CACF,GAAM,CAAE,eAAgB,EAAI,OAGtB,EAAmB,MAAMF,EAAY,OAAO,cAAc,EAAI,KAAK,CASzE,GANI,EAAiB,QACnB,EAAwB,EAAiB,OAAO,CAK9C,EADuB,MAAMG,EAAsB,CAAE,GAAI,EAAa,CAAE,CAAE,aAAc,GAAM,CAAC,EAC3E,OACtB,MAAM,IAAI,EAAsB,sBAAsB,CAGxD,GAAM,CAAC,EAAO,GAAc,MAAMC,EAAqB,EAAa,EAAwB,CAE5F,GAAI,CAAC,EACH,MAAM,IAAI,EAAsB,sBAAsB,CAGxD,OAAO,EAAI,OAAO,EAAY,GAAG,CAAC,KAAK,EAAW,GAAG,OAC9C,EAAK,CACZ,OAAOF,EAAY,EAAc,EAAK,CAAE,OAAA,EAAQ,QAAS,mBAAmB,EAAO,UAAW,CAAC,GAEjG,CAKF,EAAO,OAAoD,gBAAiB,MAAO,EAAK,IAAQ,CAC9F,GAAI,CACF,GAAM,CAAE,eAAgB,EAAI,OAI5B,GAAI,EADuB,MAAMC,EAAsB,CAAE,GAAI,EAAa,CAAE,CAAE,aAAc,GAAM,CAAC,EAC3E,OACtB,MAAM,IAAI,EAAsB,sBAAsB,CAGxD,GAAM,CAAC,GAAS,MAAME,EAAsB,EAAY,CAExD,GAAI,CAAC,EACH,MAAM,IAAI,EAAsB,kCAAkC,CAGpE,OAAO,EAAI,OAAO,EAAY,WAAW,CAAC,MAAM,OACzC,EAAK,CACZ,OAAOH,EAAY,EAAc,EAAK,CAAE,OAAA,EAAQ,QAAS,mBAAmB,EAAO,UAAW,CAAC,GAEjG,CAEF,IAAA,EAAe"}
|
|
@@ -1,40 +1,2 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
joi = require_rolldown_runtime.__toESM(joi);
|
|
4
|
-
|
|
5
|
-
//#region src/api/v1/validator/validations.ts
|
|
6
|
-
const jsonSchemaValidation = joi.default.object().unknown(true);
|
|
7
|
-
const schemaObject = joi.default.object({
|
|
8
|
-
type: joi.default.string().valid("object"),
|
|
9
|
-
properties: joi.default.object({
|
|
10
|
-
before: jsonSchemaValidation,
|
|
11
|
-
after: jsonSchemaValidation
|
|
12
|
-
}).required(),
|
|
13
|
-
required: joi.default.array().items(joi.default.string()),
|
|
14
|
-
allOf: joi.default.array().items(joi.default.object()),
|
|
15
|
-
anyOf: joi.default.array().items(joi.default.object()),
|
|
16
|
-
oneOf: joi.default.array().items(joi.default.object()),
|
|
17
|
-
additionalProperties: joi.default.alternatives().try(joi.default.boolean(), joi.default.object()),
|
|
18
|
-
$id: joi.default.string(),
|
|
19
|
-
$schema: joi.default.string(),
|
|
20
|
-
if: joi.default.object(),
|
|
21
|
-
then: joi.default.object(),
|
|
22
|
-
else: joi.default.object()
|
|
23
|
-
});
|
|
24
|
-
const validationSchemas = {
|
|
25
|
-
create: joi.default.object({
|
|
26
|
-
entityId: joi.default.string().uuid().required(),
|
|
27
|
-
entityType: joi.default.string().required(),
|
|
28
|
-
schema: schemaObject.required()
|
|
29
|
-
}),
|
|
30
|
-
update: joi.default.object({
|
|
31
|
-
entityId: joi.default.string().uuid(),
|
|
32
|
-
entityType: joi.default.string(),
|
|
33
|
-
schema: schemaObject,
|
|
34
|
-
disabled: joi.default.boolean()
|
|
35
|
-
}).min(1)
|
|
36
|
-
};
|
|
37
|
-
var validations_default = validationSchemas;
|
|
38
|
-
|
|
39
|
-
//#endregion
|
|
40
|
-
exports.default = validations_default;
|
|
1
|
+
const e=require(`../../../_virtual/rolldown_runtime.cjs`);let t=require(`joi`);t=e.__toESM(t);const n=t.default.object().unknown(!0),r=t.default.object({type:t.default.string().valid(`object`),properties:t.default.object({before:n,after:n}).required(),required:t.default.array().items(t.default.string()),allOf:t.default.array().items(t.default.object()),anyOf:t.default.array().items(t.default.object()),oneOf:t.default.array().items(t.default.object()),additionalProperties:t.default.alternatives().try(t.default.boolean(),t.default.object()),$id:t.default.string(),$schema:t.default.string(),if:t.default.object(),then:t.default.object(),else:t.default.object()}),i={create:t.default.object({entityId:t.default.string().uuid().required(),entityType:t.default.string().required(),schema:r.required()}),update:t.default.object({entityId:t.default.string().uuid(),entityType:t.default.string(),schema:r,disabled:t.default.boolean()}).min(1)};var a=i;exports.default=a;
|
|
2
|
+
//# sourceMappingURL=validations.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.cjs","names":["Joi","validationSchemas: ValidationSchemas"],"sources":["../../../../src/api/v1/validator/validations.ts"],"sourcesContent":["import Joi from 'joi';\n\nconst jsonSchemaValidation = Joi.object().unknown(true);\n\nexport interface SchemaObject {\n type: 'object';\n properties?: {\n before?: object;\n after?: object;\n };\n required?: string[];\n allOf?: object[];\n anyOf?: object[];\n oneOf?: object[];\n additionalProperties?: boolean | object;\n $id?: string;\n $schema?: string;\n if?: object;\n then?: object;\n else?: object;\n}\n\nconst schemaObject = Joi.object<SchemaObject>({\n type: Joi.string().valid('object'),\n properties: Joi.object({\n before: jsonSchemaValidation,\n after: jsonSchemaValidation,\n }).required(),\n required: Joi.array().items(Joi.string()),\n allOf: Joi.array().items(Joi.object()),\n anyOf: Joi.array().items(Joi.object()),\n oneOf: Joi.array().items(Joi.object()),\n additionalProperties: Joi.alternatives().try(Joi.boolean(), Joi.object()),\n $id: Joi.string(),\n $schema: Joi.string(),\n if: Joi.object(),\n then: Joi.object(),\n else: Joi.object(),\n});\n\nexport interface CreateValidatorPayload {\n entityId: string;\n entityType: string;\n schema: SchemaObject;\n}\n\nexport interface UpdateValidatorPayload extends Partial<CreateValidatorPayload> {\n disabled?: boolean;\n}\n\ninterface ValidationSchemas {\n create: Joi.ObjectSchema<CreateValidatorPayload>;\n update: Joi.ObjectSchema<UpdateValidatorPayload>;\n}\n\nconst validationSchemas: ValidationSchemas = {\n create: Joi.object<CreateValidatorPayload>({\n entityId: Joi.string().uuid().required(),\n entityType: Joi.string().required(),\n schema: schemaObject.required(),\n }),\n\n update: Joi.object<UpdateValidatorPayload>({\n entityId: Joi.string().uuid(),\n entityType: Joi.string(),\n schema: schemaObject,\n disabled: Joi.boolean(),\n }).min(1),\n};\n\nexport default validationSchemas;\n"],"mappings":"8FAEA,MAAM,EAAuBA,EAAAA,QAAI,QAAQ,CAAC,QAAQ,GAAK,CAoBjD,EAAeA,EAAAA,QAAI,OAAqB,CAC5C,KAAMA,EAAAA,QAAI,QAAQ,CAAC,MAAM,SAAS,CAClC,WAAYA,EAAAA,QAAI,OAAO,CACrB,OAAQ,EACR,MAAO,EACR,CAAC,CAAC,UAAU,CACb,SAAUA,EAAAA,QAAI,OAAO,CAAC,MAAMA,EAAAA,QAAI,QAAQ,CAAC,CACzC,MAAOA,EAAAA,QAAI,OAAO,CAAC,MAAMA,EAAAA,QAAI,QAAQ,CAAC,CACtC,MAAOA,EAAAA,QAAI,OAAO,CAAC,MAAMA,EAAAA,QAAI,QAAQ,CAAC,CACtC,MAAOA,EAAAA,QAAI,OAAO,CAAC,MAAMA,EAAAA,QAAI,QAAQ,CAAC,CACtC,qBAAsBA,EAAAA,QAAI,cAAc,CAAC,IAAIA,EAAAA,QAAI,SAAS,CAAEA,EAAAA,QAAI,QAAQ,CAAC,CACzE,IAAKA,EAAAA,QAAI,QAAQ,CACjB,QAASA,EAAAA,QAAI,QAAQ,CACrB,GAAIA,EAAAA,QAAI,QAAQ,CAChB,KAAMA,EAAAA,QAAI,QAAQ,CAClB,KAAMA,EAAAA,QAAI,QAAQ,CACnB,CAAC,CAiBIC,EAAuC,CAC3C,OAAQD,EAAAA,QAAI,OAA+B,CACzC,SAAUA,EAAAA,QAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CACxC,WAAYA,EAAAA,QAAI,QAAQ,CAAC,UAAU,CACnC,OAAQ,EAAa,UAAU,CAChC,CAAC,CAEF,OAAQA,EAAAA,QAAI,OAA+B,CACzC,SAAUA,EAAAA,QAAI,QAAQ,CAAC,MAAM,CAC7B,WAAYA,EAAAA,QAAI,QAAQ,CACxB,OAAQ,EACR,SAAUA,EAAAA,QAAI,SAAS,CACxB,CAAC,CAAC,IAAI,EAAE,CACV,CAED,IAAA,EAAe"}
|
|
@@ -1,38 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/api/v1/validator/validations.ts
|
|
4
|
-
const jsonSchemaValidation = Joi.object().unknown(true);
|
|
5
|
-
const schemaObject = Joi.object({
|
|
6
|
-
type: Joi.string().valid("object"),
|
|
7
|
-
properties: Joi.object({
|
|
8
|
-
before: jsonSchemaValidation,
|
|
9
|
-
after: jsonSchemaValidation
|
|
10
|
-
}).required(),
|
|
11
|
-
required: Joi.array().items(Joi.string()),
|
|
12
|
-
allOf: Joi.array().items(Joi.object()),
|
|
13
|
-
anyOf: Joi.array().items(Joi.object()),
|
|
14
|
-
oneOf: Joi.array().items(Joi.object()),
|
|
15
|
-
additionalProperties: Joi.alternatives().try(Joi.boolean(), Joi.object()),
|
|
16
|
-
$id: Joi.string(),
|
|
17
|
-
$schema: Joi.string(),
|
|
18
|
-
if: Joi.object(),
|
|
19
|
-
then: Joi.object(),
|
|
20
|
-
else: Joi.object()
|
|
21
|
-
});
|
|
22
|
-
const validationSchemas = {
|
|
23
|
-
create: Joi.object({
|
|
24
|
-
entityId: Joi.string().uuid().required(),
|
|
25
|
-
entityType: Joi.string().required(),
|
|
26
|
-
schema: schemaObject.required()
|
|
27
|
-
}),
|
|
28
|
-
update: Joi.object({
|
|
29
|
-
entityId: Joi.string().uuid(),
|
|
30
|
-
entityType: Joi.string(),
|
|
31
|
-
schema: schemaObject,
|
|
32
|
-
disabled: Joi.boolean()
|
|
33
|
-
}).min(1)
|
|
34
|
-
};
|
|
35
|
-
var validations_default = validationSchemas;
|
|
36
|
-
|
|
37
|
-
//#endregion
|
|
38
|
-
export { validations_default as default };
|
|
1
|
+
import e from"joi";const t=e.object().unknown(!0),n=e.object({type:e.string().valid(`object`),properties:e.object({before:t,after:t}).required(),required:e.array().items(e.string()),allOf:e.array().items(e.object()),anyOf:e.array().items(e.object()),oneOf:e.array().items(e.object()),additionalProperties:e.alternatives().try(e.boolean(),e.object()),$id:e.string(),$schema:e.string(),if:e.object(),then:e.object(),else:e.object()});var r={create:e.object({entityId:e.string().uuid().required(),entityType:e.string().required(),schema:n.required()}),update:e.object({entityId:e.string().uuid(),entityType:e.string(),schema:n,disabled:e.boolean()}).min(1)};export{r as default};
|
|
2
|
+
//# sourceMappingURL=validations.js.map
|