@autofleet/sadot 0.0.1-beta → 0.0.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{src/api → api}/index.js +1 -0
- package/dist/api/index.js.map +1 -0
- package/dist/{src/api → api}/v1/definition/index.js +28 -25
- package/dist/api/v1/definition/index.js.map +1 -0
- package/dist/api/v1/definition/validations.js +36 -0
- package/dist/api/v1/definition/validations.js.map +1 -0
- package/dist/{src/api → api}/v1/errors.js +1 -0
- package/dist/api/v1/errors.js.map +1 -0
- package/dist/{src/api → api}/v1/index.js +2 -1
- package/dist/api/v1/index.js.map +1 -0
- package/dist/{src/events → events}/index.js +2 -21
- package/dist/events/index.js.map +1 -0
- package/dist/{src/hooks → hooks}/create.js +18 -15
- package/dist/hooks/create.js.map +1 -0
- package/dist/{src/hooks/enrich.js → hooks/find.js} +29 -52
- package/dist/hooks/find.js.map +1 -0
- package/dist/{src/hooks → hooks}/index.js +4 -5
- package/dist/hooks/index.js.map +1 -0
- package/dist/{src/hooks → hooks}/update.js +23 -8
- package/dist/hooks/update.js.map +1 -0
- package/dist/{src/hooks → hooks}/workaround.js +15 -5
- package/dist/hooks/workaround.js.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/models → models}/CustomFieldDefinition.js +17 -22
- package/dist/models/CustomFieldDefinition.js.map +1 -0
- package/dist/{src/models → models}/CustomFieldValue.js +39 -24
- package/dist/models/CustomFieldValue.js.map +1 -0
- package/dist/models/index.js +50 -0
- package/dist/models/index.js.map +1 -0
- package/dist/{src/models → models}/tests/AssociatedTestModel.js +1 -0
- package/dist/models/tests/AssociatedTestModel.js.map +1 -0
- package/dist/{src/models → models}/tests/TestModel.js +1 -0
- package/dist/models/tests/TestModel.js.map +1 -0
- package/dist/repository/definition.js +107 -0
- package/dist/repository/definition.js.map +1 -0
- package/dist/{src/repository → repository}/value.js +36 -27
- package/dist/repository/value.js.map +1 -0
- package/dist/{src/tests → tests}/api/test-api.js +22 -12
- package/dist/tests/api/test-api.js.map +1 -0
- package/dist/tests/helpers/index.js +28 -0
- package/dist/tests/helpers/index.js.map +1 -0
- package/dist/tests/mocks/index.js +60 -0
- package/dist/tests/mocks/index.js.map +1 -0
- package/dist/{src/tests → tests}/mocks/testModel.js +18 -10
- package/dist/tests/mocks/testModel.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/{src/types → types}/definition/index.js +1 -0
- package/dist/types/definition/index.js.map +1 -0
- package/dist/{src/types → types}/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/{src/types → types}/value/index.js +1 -0
- package/dist/types/value/index.js.map +1 -0
- package/dist/{src/utils → utils}/db/index.js +1 -8
- package/dist/utils/db/index.js.map +1 -0
- package/dist/{src/utils → utils}/logger/index.js +2 -2
- package/dist/utils/logger/index.js.map +1 -0
- package/dist/{src/utils → utils}/validations/custom-fields.js +1 -0
- package/dist/utils/validations/custom-fields.js.map +1 -0
- package/dist/utils/validations/custom.js +58 -0
- package/dist/utils/validations/custom.js.map +1 -0
- package/dist/{src/utils → utils}/validations/index.js +1 -0
- package/dist/utils/validations/index.js.map +1 -0
- package/dist/utils/validations/type.js +32 -0
- package/dist/utils/validations/type.js.map +1 -0
- package/package.json +5 -12
- package/src/api/v1/definition/index.ts +13 -20
- package/src/api/v1/definition/validations.ts +27 -13
- package/src/api/v1/index.ts +1 -1
- package/src/events/index.ts +1 -23
- package/src/hooks/create.ts +6 -12
- package/src/hooks/find.ts +82 -23
- package/src/hooks/index.ts +2 -4
- package/src/hooks/update.ts +11 -5
- package/src/hooks/workaround.ts +2 -2
- package/src/index.ts +17 -60
- package/src/models/CustomFieldDefinition.ts +15 -23
- package/src/models/CustomFieldValue.ts +10 -10
- package/src/models/index.ts +17 -79
- package/src/models/tests/AssociatedTestModel.ts +1 -0
- package/src/models/tests/TestModel.ts +1 -0
- package/src/repository/definition.ts +41 -27
- package/src/repository/value.ts +11 -12
- package/src/tests/mocks/events.mock.ts +1 -1
- package/src/tests/mocks/{definition.mock.ts → index.ts} +6 -5
- package/src/tests/mocks/testModel.ts +7 -12
- package/src/types/definition/index.ts +1 -0
- package/src/types/index.ts +6 -4
- package/src/types/value/index.ts +2 -1
- package/src/utils/db/index.ts +0 -7
- package/src/utils/logger/index.ts +1 -3
- package/src/utils/validations/custom.ts +45 -28
- package/src/utils/validations/type.ts +6 -23
- package/tsconfig.json +26 -9
- package/dist/jest.config.d.ts +0 -12
- package/dist/src/api/index.d.ts +0 -2
- package/dist/src/api/v1/definition/index.d.ts +0 -2
- package/dist/src/api/v1/definition/validations.d.ts +0 -2
- package/dist/src/api/v1/definition/validations.js +0 -36
- package/dist/src/api/v1/errors.d.ts +0 -2
- package/dist/src/api/v1/index.d.ts +0 -2
- package/dist/src/errors/index.d.ts +0 -16
- package/dist/src/errors/index.js +0 -45
- package/dist/src/events/index.d.ts +0 -4
- package/dist/src/hooks/create.d.ts +0 -9
- package/dist/src/hooks/enrich.d.ts +0 -5
- package/dist/src/hooks/find.d.ts +0 -1
- package/dist/src/hooks/find.js +0 -29
- package/dist/src/hooks/index.d.ts +0 -6
- package/dist/src/hooks/update.d.ts +0 -9
- package/dist/src/hooks/workaround.d.ts +0 -10
- package/dist/src/index.d.ts +0 -11
- package/dist/src/index.js +0 -105
- package/dist/src/models/CustomFieldDefinition.d.ts +0 -23
- package/dist/src/models/CustomFieldValue.d.ts +0 -15
- package/dist/src/models/index.d.ts +0 -8
- package/dist/src/models/index.js +0 -87
- package/dist/src/models/tests/AssociatedTestModel.d.ts +0 -12
- package/dist/src/models/tests/TestModel.d.ts +0 -11
- package/dist/src/repository/definition.d.ts +0 -17
- package/dist/src/repository/definition.js +0 -80
- package/dist/src/repository/value.d.ts +0 -24
- package/dist/src/tests/api/test-api.d.ts +0 -2
- package/dist/src/tests/helpers/database-config.d.ts +0 -15
- package/dist/src/tests/helpers/database-config.js +0 -16
- package/dist/src/tests/helpers/index.d.ts +0 -2
- package/dist/src/tests/helpers/index.js +0 -18
- package/dist/src/tests/mocks/definition.mock.d.ts +0 -37
- package/dist/src/tests/mocks/definition.mock.js +0 -64
- package/dist/src/tests/mocks/events.mock.d.ts +0 -3
- package/dist/src/tests/mocks/events.mock.js +0 -19
- package/dist/src/tests/mocks/testModel.d.ts +0 -12
- package/dist/src/types/definition/index.d.ts +0 -23
- package/dist/src/types/index.d.ts +0 -13
- package/dist/src/types/value/index.d.ts +0 -15
- package/dist/src/utils/constants/index.d.ts +0 -1
- package/dist/src/utils/constants/index.js +0 -5
- package/dist/src/utils/db/index.d.ts +0 -4
- package/dist/src/utils/logger/index.d.ts +0 -2
- package/dist/src/utils/validations/custom-fields.d.ts +0 -2
- package/dist/src/utils/validations/custom.d.ts +0 -15
- package/dist/src/utils/validations/custom.js +0 -42
- package/dist/src/utils/validations/index.d.ts +0 -2
- package/dist/src/utils/validations/type.d.ts +0 -18
- package/dist/src/utils/validations/type.js +0 -50
- package/dist/src/utils/validations/validators.d.ts +0 -12
- package/dist/src/utils/validations/validators.js +0 -33
- package/src/errors/index.ts +0 -42
- package/src/hooks/enrich.ts +0 -125
- package/src/tests/helpers/database-config.ts +0 -14
- package/src/utils/constants/index.ts +0 -2
- package/src/utils/validations/validators.ts +0 -34
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRequiredFields = exports.destroy = exports.disable = exports.update = exports.findDefinitionsByModels = exports.findByWhere = exports.findByEntityIds = exports.findByEntityId = exports.findById = exports.findByIds = exports.findAll = exports.create = void 0;
|
|
4
|
-
const sequelize_1 = require("sequelize");
|
|
5
|
-
const models_1 = require("../models");
|
|
6
|
-
const create = (data) => models_1.CustomFieldDefinition.create(data);
|
|
7
|
-
exports.create = create;
|
|
8
|
-
const findAll = (where, options = { withDisabled: false }) => {
|
|
9
|
-
const queryModel = options.withDisabled
|
|
10
|
-
? models_1.CustomFieldDefinition.unscoped()
|
|
11
|
-
: models_1.CustomFieldDefinition;
|
|
12
|
-
return queryModel.scope('userScope').findAll({
|
|
13
|
-
where,
|
|
14
|
-
transaction: options.transaction,
|
|
15
|
-
raw: true,
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
exports.findAll = findAll;
|
|
19
|
-
const findByIds = (ids, options = { withDisabled: false }) => (0, exports.findAll)({ id: { [sequelize_1.Op.in]: ids } }, options);
|
|
20
|
-
exports.findByIds = findByIds;
|
|
21
|
-
const findById = (id, options = { withDisabled: false }) => {
|
|
22
|
-
const { withDisabled } = options;
|
|
23
|
-
if (withDisabled) {
|
|
24
|
-
return models_1.CustomFieldDefinition.unscoped().scope('userScope').findByPk(id);
|
|
25
|
-
}
|
|
26
|
-
return models_1.CustomFieldDefinition.scope('userScope').findByPk(id);
|
|
27
|
-
};
|
|
28
|
-
exports.findById = findById;
|
|
29
|
-
const findByEntityId = async (entityId, options = {}) => models_1.CustomFieldDefinition.findAll({
|
|
30
|
-
where: { entityId },
|
|
31
|
-
transaction: options.transaction,
|
|
32
|
-
});
|
|
33
|
-
exports.findByEntityId = findByEntityId;
|
|
34
|
-
const findByEntityIds = async (modelType, entityIds, options = {}) => models_1.CustomFieldDefinition.findAll({
|
|
35
|
-
where: {
|
|
36
|
-
modelType,
|
|
37
|
-
entityId: entityIds,
|
|
38
|
-
},
|
|
39
|
-
transaction: options.transaction,
|
|
40
|
-
raw: true,
|
|
41
|
-
});
|
|
42
|
-
exports.findByEntityIds = findByEntityIds;
|
|
43
|
-
const findByWhere = (where) => models_1.CustomFieldDefinition.scope('userScope').findOne({
|
|
44
|
-
where,
|
|
45
|
-
});
|
|
46
|
-
exports.findByWhere = findByWhere;
|
|
47
|
-
const findDefinitionsByModels = async (modelTypes, options) => {
|
|
48
|
-
const query = { modelType: { [sequelize_1.Op.in]: modelTypes } };
|
|
49
|
-
return models_1.CustomFieldDefinition.findAll({
|
|
50
|
-
where: query,
|
|
51
|
-
transaction: options?.transaction,
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
exports.findDefinitionsByModels = findDefinitionsByModels;
|
|
55
|
-
const update = async (id, data) => {
|
|
56
|
-
const updatedDefinition = (await models_1.CustomFieldDefinition.scope('userScope').update(data, {
|
|
57
|
-
where: { id },
|
|
58
|
-
returning: true,
|
|
59
|
-
individualHooks: true,
|
|
60
|
-
}))[1][0];
|
|
61
|
-
return updatedDefinition;
|
|
62
|
-
};
|
|
63
|
-
exports.update = update;
|
|
64
|
-
const disable = (id) => models_1.CustomFieldDefinition.update({ disabled: true }, { where: { id } });
|
|
65
|
-
exports.disable = disable;
|
|
66
|
-
const destroy = (id) => models_1.CustomFieldDefinition.destroy({ where: { id } });
|
|
67
|
-
exports.destroy = destroy;
|
|
68
|
-
/**
|
|
69
|
-
* Return the names of the required fields for a given model
|
|
70
|
-
*/
|
|
71
|
-
const getRequiredFields = async (modelType, modelId, entityId) => {
|
|
72
|
-
const entityIds = Array.isArray(entityId) ? entityId : [entityId];
|
|
73
|
-
const requiredFields = await models_1.CustomFieldDefinition.findAll({
|
|
74
|
-
where: { required: true, modelType, entityId: { [sequelize_1.Op.in]: entityIds } },
|
|
75
|
-
logging: true,
|
|
76
|
-
});
|
|
77
|
-
const requiredFieldsNames = requiredFields.map((definition) => definition.name);
|
|
78
|
-
return [...new Set(requiredFieldsNames)];
|
|
79
|
-
};
|
|
80
|
-
exports.getRequiredFields = getRequiredFields;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { CustomFieldValue } from '../models';
|
|
2
|
-
import { CreateCustomFieldValue, ValuesToUpdate } from '../types/value';
|
|
3
|
-
export declare const findByModelIdAndDefinition: (modelId: string, customFieldDefinitionId: string) => Promise<CustomFieldValue[]>;
|
|
4
|
-
export declare const create: (data: CreateCustomFieldValue, withAssociations?: boolean) => Promise<CustomFieldValue>;
|
|
5
|
-
export declare const findAllValues: () => Promise<CustomFieldValue[]>;
|
|
6
|
-
/**
|
|
7
|
-
* Get all values for model instance id (with their definitions)
|
|
8
|
-
* @param modelId
|
|
9
|
-
* @returns CustomFieldValue[]
|
|
10
|
-
*/
|
|
11
|
-
export declare const findValuesByModelId: (modelId: string) => Promise<CustomFieldValue[]>;
|
|
12
|
-
/**
|
|
13
|
-
* Retrieves custom field values for given model IDs
|
|
14
|
-
* @param modelIds - An array of model IDs to query custom field values for.
|
|
15
|
-
* @param options - Optional configuration object.
|
|
16
|
-
*/
|
|
17
|
-
export declare const findValuesByModelIds: (modelIds: string[], options?: any) => Promise<CustomFieldValue[]>;
|
|
18
|
-
/**
|
|
19
|
-
* Try to update custom field values for a model instance.
|
|
20
|
-
* Create new value record if not exists, but fails if value's definition not exist.
|
|
21
|
-
* Return the updated values
|
|
22
|
-
*/
|
|
23
|
-
export declare const updateValues: (modelType: string, modelId: string, identifiers: string[], valuesToUpdate: ValuesToUpdate, options?: any) => Promise<CustomFieldValue[]>;
|
|
24
|
-
export declare const deleteValue: (id: string, options?: any) => Promise<any>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
test: {
|
|
3
|
-
username: string;
|
|
4
|
-
password: string;
|
|
5
|
-
database: string;
|
|
6
|
-
host: string;
|
|
7
|
-
dialect: string;
|
|
8
|
-
define: {
|
|
9
|
-
underscored: boolean;
|
|
10
|
-
underscoredAll: boolean;
|
|
11
|
-
};
|
|
12
|
-
logging: boolean;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
export default _default;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = {
|
|
4
|
-
test: {
|
|
5
|
-
username: process.env.DB_USERNAME || '',
|
|
6
|
-
password: process.env.DB_PASSWORD || null,
|
|
7
|
-
database: process.env.DB_NAME || 'sadot_package_test',
|
|
8
|
-
host: process.env.DB_HOST || '127.0.0.1',
|
|
9
|
-
dialect: process.env.DB_TYPE || 'postgres',
|
|
10
|
-
define: {
|
|
11
|
-
underscored: true,
|
|
12
|
-
underscoredAll: true,
|
|
13
|
-
},
|
|
14
|
-
logging: false,
|
|
15
|
-
},
|
|
16
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getModel = exports.cleanup = void 0;
|
|
4
|
-
const models_1 = require("../../models");
|
|
5
|
-
// eslint-disable-next-line import/prefer-default-export
|
|
6
|
-
const cleanup = async () => {
|
|
7
|
-
if (process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'development') {
|
|
8
|
-
await models_1.CustomFieldDefinition.unscoped().destroy({ where: {} });
|
|
9
|
-
await models_1.TestModel.destroy({ where: {} });
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.cleanup = cleanup;
|
|
13
|
-
const getModel = (name) => {
|
|
14
|
-
// eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
|
|
15
|
-
const models = require('../../models');
|
|
16
|
-
return models[name];
|
|
17
|
-
};
|
|
18
|
-
exports.getModel = getModel;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { CreateCustomFieldDefinition, CustomFieldDefinitionDTO } from '../../types/definition';
|
|
2
|
-
export declare const coolFieldDefinition: CreateCustomFieldDefinition;
|
|
3
|
-
export declare const coolFieldDefinition2: {
|
|
4
|
-
name: string;
|
|
5
|
-
required?: boolean;
|
|
6
|
-
disabled?: boolean;
|
|
7
|
-
description?: string;
|
|
8
|
-
createdAt?: Date;
|
|
9
|
-
updatedAt?: Date;
|
|
10
|
-
deletedAt?: Date;
|
|
11
|
-
displayName?: string;
|
|
12
|
-
validation?: any;
|
|
13
|
-
fieldType: string;
|
|
14
|
-
entityId: string;
|
|
15
|
-
entityType: string;
|
|
16
|
-
modelType: string;
|
|
17
|
-
};
|
|
18
|
-
export declare const coolFieldDefinition3: {
|
|
19
|
-
name: string;
|
|
20
|
-
required?: boolean;
|
|
21
|
-
disabled?: boolean;
|
|
22
|
-
description?: string;
|
|
23
|
-
createdAt?: Date;
|
|
24
|
-
updatedAt?: Date;
|
|
25
|
-
deletedAt?: Date;
|
|
26
|
-
displayName?: string;
|
|
27
|
-
validation?: any;
|
|
28
|
-
fieldType: string;
|
|
29
|
-
entityId: string;
|
|
30
|
-
entityType: string;
|
|
31
|
-
modelType: string;
|
|
32
|
-
};
|
|
33
|
-
export declare const booleanField: (modelType: string) => CreateCustomFieldDefinition;
|
|
34
|
-
export declare const enumField: (modelType: string, options: any) => CreateCustomFieldDefinition;
|
|
35
|
-
export declare const rangeField: (modelType: string) => CreateCustomFieldDefinition;
|
|
36
|
-
export declare const createDefinition: (defaults: Partial<CustomFieldDefinitionDTO>) => CreateCustomFieldDefinition;
|
|
37
|
-
export declare const createDefinitions: (defaults: Partial<CustomFieldDefinitionDTO>, length?: number) => CreateCustomFieldDefinition[];
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDefinitions = exports.createDefinition = exports.rangeField = exports.enumField = exports.booleanField = exports.coolFieldDefinition3 = exports.coolFieldDefinition2 = exports.coolFieldDefinition = void 0;
|
|
4
|
-
const uuid_1 = require("uuid");
|
|
5
|
-
exports.coolFieldDefinition = {
|
|
6
|
-
name: 'cool field',
|
|
7
|
-
modelType: 'TestModel',
|
|
8
|
-
fieldType: 'number',
|
|
9
|
-
entityId: (0, uuid_1.v4)(),
|
|
10
|
-
entityType: 'fleetId',
|
|
11
|
-
};
|
|
12
|
-
exports.coolFieldDefinition2 = {
|
|
13
|
-
...exports.coolFieldDefinition,
|
|
14
|
-
name: 'cool field2',
|
|
15
|
-
};
|
|
16
|
-
exports.coolFieldDefinition3 = {
|
|
17
|
-
...exports.coolFieldDefinition,
|
|
18
|
-
name: 'cool field3',
|
|
19
|
-
};
|
|
20
|
-
const booleanField = (modelType) => ({
|
|
21
|
-
name: 'shapeless',
|
|
22
|
-
modelType,
|
|
23
|
-
fieldType: 'boolean',
|
|
24
|
-
entityId: (0, uuid_1.v4)(),
|
|
25
|
-
entityType: 'fleetId',
|
|
26
|
-
});
|
|
27
|
-
exports.booleanField = booleanField;
|
|
28
|
-
const enumField = (modelType, options) => ({
|
|
29
|
-
name: 'choices',
|
|
30
|
-
modelType,
|
|
31
|
-
fieldType: 'select',
|
|
32
|
-
validation: options,
|
|
33
|
-
entityId: (0, uuid_1.v4)(),
|
|
34
|
-
entityType: 'fleetId',
|
|
35
|
-
});
|
|
36
|
-
exports.enumField = enumField;
|
|
37
|
-
const rangeField = (modelType) => ({
|
|
38
|
-
name: 'ranges',
|
|
39
|
-
modelType,
|
|
40
|
-
fieldType: 'number',
|
|
41
|
-
validation: {
|
|
42
|
-
between: [10, 12],
|
|
43
|
-
},
|
|
44
|
-
entityId: (0, uuid_1.v4)(),
|
|
45
|
-
entityType: 'fleetId',
|
|
46
|
-
});
|
|
47
|
-
exports.rangeField = rangeField;
|
|
48
|
-
// eslint-disable-next-line max-len
|
|
49
|
-
const createDefinition = (defaults) => ({
|
|
50
|
-
name: defaults?.name || `def_${(0, uuid_1.v4)()}`,
|
|
51
|
-
modelType: defaults?.modelType || 'TestModel',
|
|
52
|
-
fieldType: defaults?.fieldType || 'boolean',
|
|
53
|
-
entityId: defaults?.entityId || (0, uuid_1.v4)(),
|
|
54
|
-
entityType: defaults?.entityType || 'fleetId',
|
|
55
|
-
});
|
|
56
|
-
exports.createDefinition = createDefinition;
|
|
57
|
-
const createDefinitions = (defaults, length = 1) => (Array(length).fill({}).map((_) => ({
|
|
58
|
-
name: defaults?.name || `def_${(0, uuid_1.v4)()}`,
|
|
59
|
-
modelType: defaults?.modelType || 'TestModel',
|
|
60
|
-
fieldType: defaults?.fieldType || 'boolean',
|
|
61
|
-
entityId: defaults?.entityId || (0, uuid_1.v4)(),
|
|
62
|
-
entityType: defaults?.entityType || 'fleetId',
|
|
63
|
-
})));
|
|
64
|
-
exports.createDefinitions = createDefinitions;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare const mockEvent: (events: any, eventName: any, numberOfEvents: any) => any[];
|
|
2
|
-
export declare const mockDimCustomFieldDefinitionEvent: (events: any, numberOfEvents: any) => any[];
|
|
3
|
-
export declare const mockDimCustomFieldValueEvent: (events: any, numberOfEvents: any) => any[];
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable no-param-reassign */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.mockDimCustomFieldValueEvent = exports.mockDimCustomFieldDefinitionEvent = exports.mockEvent = void 0;
|
|
5
|
-
const mockEvent = (events, eventName, numberOfEvents) => {
|
|
6
|
-
events.sendObject = jest.fn();
|
|
7
|
-
return [
|
|
8
|
-
events.sendObject,
|
|
9
|
-
() => {
|
|
10
|
-
const matchingEvents = events.sendObject.mock.calls.filter((call) => call[0] === eventName);
|
|
11
|
-
expect(matchingEvents.length).toEqual(numberOfEvents);
|
|
12
|
-
},
|
|
13
|
-
];
|
|
14
|
-
};
|
|
15
|
-
exports.mockEvent = mockEvent;
|
|
16
|
-
const mockDimCustomFieldDefinitionEvent = (events, numberOfEvents) => (0, exports.mockEvent)(events, 'dim_custom_field_definition', numberOfEvents);
|
|
17
|
-
exports.mockDimCustomFieldDefinitionEvent = mockDimCustomFieldDefinitionEvent;
|
|
18
|
-
const mockDimCustomFieldValueEvent = (events, numberOfEvents) => (0, exports.mockEvent)(events, 'dim_custom_field_value', numberOfEvents);
|
|
19
|
-
exports.mockDimCustomFieldValueEvent = mockDimCustomFieldValueEvent;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TestModel } from '../../models';
|
|
2
|
-
export declare const createTestModel: (payload?: {}) => Promise<TestModel>;
|
|
3
|
-
export declare const createTestModels: (fleetId: any, total: number) => Promise<TestModel[]>;
|
|
4
|
-
export declare const upsertTestModel: (payload: any) => Promise<[TestModel, boolean]>;
|
|
5
|
-
export declare const destroyTestModels: () => Promise<number>;
|
|
6
|
-
export declare const getTestModel: (id: string, options?: {}) => Promise<TestModel>;
|
|
7
|
-
export declare const getSomeTestModels: (options?: {
|
|
8
|
-
limit: number;
|
|
9
|
-
}) => Promise<TestModel[]>;
|
|
10
|
-
export declare const updateTestModel: (payload: any, query: any) => Promise<[affectedCount: number, affectedRows: TestModel[]]>;
|
|
11
|
-
export declare const createTestModelWithAssociation: () => Promise<TestModel>;
|
|
12
|
-
export declare const getTestModelWithAssociation: (limit?: number) => Promise<TestModel[]>;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface CustomFieldDefinitionDTO {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
displayName?: string;
|
|
5
|
-
validation?: any;
|
|
6
|
-
fieldType: string;
|
|
7
|
-
entityId: string;
|
|
8
|
-
entityType: string;
|
|
9
|
-
modelType: string;
|
|
10
|
-
required?: boolean;
|
|
11
|
-
description?: string;
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
createdAt?: Date;
|
|
14
|
-
updatedAt?: Date;
|
|
15
|
-
deletedAt?: Date;
|
|
16
|
-
}
|
|
17
|
-
export type CreateCustomFieldDefinition = Omit<CustomFieldDefinitionDTO, 'id'>;
|
|
18
|
-
export type UpdateCustomFieldDefinition = Partial<CreateCustomFieldDefinition>;
|
|
19
|
-
export type SerializedCustomFields = {
|
|
20
|
-
[name: string]: CustomFieldDefinitionDTO & {
|
|
21
|
-
value: any;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type ModelFetcher = (name: string) => any;
|
|
2
|
-
export type ModelOptions = {
|
|
3
|
-
name: string;
|
|
4
|
-
scopeAttributes: string[];
|
|
5
|
-
creationWebhookHandler?: (instance: any) => any;
|
|
6
|
-
updateWebhookHandler?: (instance: any) => any;
|
|
7
|
-
deletionWebhookHandler?: (instance: any) => any;
|
|
8
|
-
};
|
|
9
|
-
export type CustomFieldOptions = {
|
|
10
|
-
models: ModelOptions[];
|
|
11
|
-
databaseConfig: any;
|
|
12
|
-
getUser: () => any;
|
|
13
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface CustomFieldValueDTO {
|
|
2
|
-
id?: string;
|
|
3
|
-
modelId: string;
|
|
4
|
-
customFieldDefinitionId: string;
|
|
5
|
-
value: any;
|
|
6
|
-
createdAt?: Date;
|
|
7
|
-
updatedAt?: Date;
|
|
8
|
-
deletedAt?: Date;
|
|
9
|
-
}
|
|
10
|
-
export type ValuesToUpdate = {
|
|
11
|
-
[name: string]: any;
|
|
12
|
-
};
|
|
13
|
-
export type CreateCustomFieldValue = Omit<CustomFieldValueDTO, 'id'>;
|
|
14
|
-
export type UpdateCustomFieldValue = ValuesToUpdate;
|
|
15
|
-
export type BulkUpdateCustomFieldValue = Partial<CustomFieldValueDTO>[];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const supportedEntities: string[];
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare const mustHaveCustomValidation: {
|
|
2
|
-
select: boolean;
|
|
3
|
-
};
|
|
4
|
-
/**
|
|
5
|
-
* Validates the given validations object against the supported field types and their validators.
|
|
6
|
-
* @return true if the validation is valid, false otherwise.
|
|
7
|
-
*/
|
|
8
|
-
export declare const validateValidation: (valueType: any, validation: any) => boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Validates the given value against the custom validation rules for the specified field type.
|
|
11
|
-
* If no custom validation rules are provided, it falls back to the default validation.
|
|
12
|
-
* @returns true if the value is valid according to the validation rules, false otherwise.
|
|
13
|
-
*/
|
|
14
|
-
declare const customValidation: (value: any, valueType: any, validation: any) => boolean;
|
|
15
|
-
export default customValidation;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateValidation = exports.mustHaveCustomValidation = void 0;
|
|
7
|
-
/* eslint-disable no-shadow */
|
|
8
|
-
const logger_1 = __importDefault(require("../logger"));
|
|
9
|
-
const type_1 = require("./type");
|
|
10
|
-
const validators_1 = __importDefault(require("./validators"));
|
|
11
|
-
exports.mustHaveCustomValidation = {
|
|
12
|
-
[type_1.CustomFieldDefinitionType.SELECT]: true,
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Validates the given validations object against the supported field types and their validators.
|
|
16
|
-
* @return true if the validation is valid, false otherwise.
|
|
17
|
-
*/
|
|
18
|
-
const validateValidation = (valueType, validation) => {
|
|
19
|
-
if (!validation) {
|
|
20
|
-
if (exports.mustHaveCustomValidation[valueType]) {
|
|
21
|
-
logger_1.default.error(`No custom validation for custom field type ${valueType} found`);
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
return true;
|
|
27
|
-
};
|
|
28
|
-
exports.validateValidation = validateValidation;
|
|
29
|
-
/**
|
|
30
|
-
* Validates the given value against the custom validation rules for the specified field type.
|
|
31
|
-
* If no custom validation rules are provided, it falls back to the default validation.
|
|
32
|
-
* @returns true if the value is valid according to the validation rules, false otherwise.
|
|
33
|
-
*/
|
|
34
|
-
const customValidation = (value, valueType, validation) => {
|
|
35
|
-
const validator = validators_1.default?.[valueType];
|
|
36
|
-
if (!validation || !validator) {
|
|
37
|
-
return (0, exports.validateValidation)(valueType, validation);
|
|
38
|
-
}
|
|
39
|
-
// Always allow null values
|
|
40
|
-
return value === null || validator(value, validation);
|
|
41
|
-
};
|
|
42
|
-
exports.default = customValidation;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Supported custom field types
|
|
3
|
-
*/
|
|
4
|
-
export declare enum CustomFieldDefinitionType {
|
|
5
|
-
NUMBER = "number",
|
|
6
|
-
BOOLEAN = "boolean",
|
|
7
|
-
DATE = "date",
|
|
8
|
-
DATETIME = "datetime",
|
|
9
|
-
TEXT = "text",
|
|
10
|
-
IMAGE = "image",
|
|
11
|
-
SELECT = "select"
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Validate that the given value is really of type "valueType"
|
|
15
|
-
* TODO: verify that required field not set to null
|
|
16
|
-
*/
|
|
17
|
-
declare const validateValueType: (value: unknown, valueType: CustomFieldDefinitionType) => boolean;
|
|
18
|
-
export default validateValueType;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CustomFieldDefinitionType = void 0;
|
|
7
|
-
const joi_1 = __importDefault(require("@hapi/joi"));
|
|
8
|
-
/**
|
|
9
|
-
* Supported custom field types
|
|
10
|
-
*/
|
|
11
|
-
// eslint-disable-next-line no-shadow
|
|
12
|
-
var CustomFieldDefinitionType;
|
|
13
|
-
(function (CustomFieldDefinitionType) {
|
|
14
|
-
CustomFieldDefinitionType["NUMBER"] = "number";
|
|
15
|
-
CustomFieldDefinitionType["BOOLEAN"] = "boolean";
|
|
16
|
-
CustomFieldDefinitionType["DATE"] = "date";
|
|
17
|
-
CustomFieldDefinitionType["DATETIME"] = "datetime";
|
|
18
|
-
CustomFieldDefinitionType["TEXT"] = "text";
|
|
19
|
-
CustomFieldDefinitionType["IMAGE"] = "image";
|
|
20
|
-
CustomFieldDefinitionType["SELECT"] = "select";
|
|
21
|
-
})(CustomFieldDefinitionType = exports.CustomFieldDefinitionType || (exports.CustomFieldDefinitionType = {}));
|
|
22
|
-
/**
|
|
23
|
-
* Validate that the given value is really of type "valueType"
|
|
24
|
-
* TODO: verify that required field not set to null
|
|
25
|
-
*/
|
|
26
|
-
const validateValueType = (value, valueType) => {
|
|
27
|
-
if (value === null) {
|
|
28
|
-
// Null is always allowed
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
switch (valueType) {
|
|
32
|
-
case CustomFieldDefinitionType.TEXT:
|
|
33
|
-
return typeof value === 'string';
|
|
34
|
-
case CustomFieldDefinitionType.NUMBER:
|
|
35
|
-
return typeof value === 'number';
|
|
36
|
-
case CustomFieldDefinitionType.BOOLEAN:
|
|
37
|
-
return typeof value === 'boolean';
|
|
38
|
-
case CustomFieldDefinitionType.DATE:
|
|
39
|
-
case CustomFieldDefinitionType.DATETIME:
|
|
40
|
-
return !joi_1.default.date().validate(value).error;
|
|
41
|
-
case CustomFieldDefinitionType.SELECT:
|
|
42
|
-
return true; // custom validation
|
|
43
|
-
case CustomFieldDefinitionType.IMAGE:
|
|
44
|
-
return !joi_1.default.array().min(1).unique().items(joi_1.default.string().uri())
|
|
45
|
-
.validate(value).error;
|
|
46
|
-
default:
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
exports.default = validateValueType;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare enum CustomValidations {
|
|
2
|
-
SELECT = "select",
|
|
3
|
-
RANGE = "between"
|
|
4
|
-
}
|
|
5
|
-
type Validator = (value: any, validation: any) => boolean;
|
|
6
|
-
/**
|
|
7
|
-
* Validators for custom fields
|
|
8
|
-
*/
|
|
9
|
-
declare const validators: {
|
|
10
|
-
[key: string]: Validator;
|
|
11
|
-
};
|
|
12
|
-
export default validators;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomValidations = void 0;
|
|
4
|
-
// eslint-disable-next-line no-shadow
|
|
5
|
-
var CustomValidations;
|
|
6
|
-
(function (CustomValidations) {
|
|
7
|
-
CustomValidations["SELECT"] = "select";
|
|
8
|
-
CustomValidations["RANGE"] = "between";
|
|
9
|
-
})(CustomValidations = exports.CustomValidations || (exports.CustomValidations = {}));
|
|
10
|
-
/**
|
|
11
|
-
* Validate {@link CustomValidations.ENUM Enum}
|
|
12
|
-
*/
|
|
13
|
-
const validateEnum = (value, enumValues) => (Array.isArray(enumValues)
|
|
14
|
-
&& enumValues.length > 0
|
|
15
|
-
&& enumValues.includes(value));
|
|
16
|
-
/**
|
|
17
|
-
* Validate {@link CustomValidations.RANGE Range}
|
|
18
|
-
*/
|
|
19
|
-
const validateRange = (value, range) => {
|
|
20
|
-
const [min, max] = range;
|
|
21
|
-
if (min === undefined || max === undefined) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
return value >= range.min && value <= range.max;
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Validators for custom fields
|
|
28
|
-
*/
|
|
29
|
-
const validators = {
|
|
30
|
-
[CustomValidations.SELECT]: validateEnum,
|
|
31
|
-
[CustomValidations.RANGE]: validateRange,
|
|
32
|
-
};
|
|
33
|
-
exports.default = validators;
|
package/src/errors/index.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-classes-per-file */
|
|
2
|
-
import { BadRequest } from '@autofleet/errors';
|
|
3
|
-
|
|
4
|
-
export class MissingRequiredCustomFieldError extends BadRequest {
|
|
5
|
-
constructor(missingFields: string[]) {
|
|
6
|
-
const err = new Error(`The following custom fields are required: ${missingFields.join(',')}`);
|
|
7
|
-
super([err], null, missingFields);
|
|
8
|
-
this.message = 'MISSING_REQUIRED_CUSTOM_FIELDS';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class UnsupportedCustomFieldTypeError extends BadRequest {
|
|
13
|
-
constructor(fieldType: string) {
|
|
14
|
-
const err = new Error(`Type "${fieldType}" is not supported`);
|
|
15
|
-
super([err], null, null);
|
|
16
|
-
this.message = 'UNSUPPORTED_CUSTOM_FIELD_TYPE';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export class UnsupportedCustomValidationError extends BadRequest {
|
|
21
|
-
constructor(fieldType: string) {
|
|
22
|
-
const err = new Error(`Validation for "${fieldType}" is not supported`);
|
|
23
|
-
super([err], null, null);
|
|
24
|
-
this.message = 'UNSUPPORTED_CUSTOM_VALIDATION_TYPE';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export class InvalidValueError extends BadRequest {
|
|
29
|
-
constructor(value: any, fieldType: string) {
|
|
30
|
-
const err = new Error(`Invalid "${fieldType}" value ${JSON.stringify(value)}`);
|
|
31
|
-
super([err], null, null);
|
|
32
|
-
this.message = 'INVALID_VALUE';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export class MissingDefinitionError extends BadRequest {
|
|
37
|
-
constructor(fieldNames: string[]) {
|
|
38
|
-
const err = new Error(`Missing custom field definition for field ${fieldNames.join(',')}`);
|
|
39
|
-
super([err], null, null);
|
|
40
|
-
this.message = 'MISSING_DEFINITION';
|
|
41
|
-
}
|
|
42
|
-
}
|