@autofleet/sadot 0.8.2 → 0.8.4
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/events/index.js +7 -9
- package/dist/index.js +1 -1
- package/dist/tests/helpers/commonHooks.d.ts +3 -0
- package/dist/tests/helpers/commonHooks.js +54 -0
- package/dist/tests/mocks/definition.mock.d.ts +2 -2
- package/dist/types/index.d.ts +2 -1
- package/package.json +3 -3
- package/src/events/index.ts +8 -10
- package/src/index.ts +1 -1
- package/src/tests/helpers/commonHooks.ts +31 -0
- package/src/types/index.ts +2 -1
package/dist/events/index.js
CHANGED
|
@@ -7,18 +7,16 @@ exports.sendDimEvent = void 0;
|
|
|
7
7
|
const events_1 = __importDefault(require("@autofleet/events"));
|
|
8
8
|
const logger_1 = __importDefault(require("../utils/logger"));
|
|
9
9
|
const events = new events_1.default({ logger: logger_1.default });
|
|
10
|
-
const KEYS_TO_CONVERT = ['value', 'defaultValue'];
|
|
10
|
+
const KEYS_TO_CONVERT = ['value', 'defaultValue', 'blockEditingFromUI'];
|
|
11
11
|
const stringifyBooleans = (savedObject, keysToConvert) => {
|
|
12
|
-
|
|
12
|
+
const savedObjectKeySet = new Set(Object.keys(savedObject));
|
|
13
|
+
if (keysToConvert.every((key) => !savedObjectKeySet.has(key))) {
|
|
13
14
|
return savedObject;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return objectToReturn;
|
|
16
|
+
return {
|
|
17
|
+
...savedObject,
|
|
18
|
+
...Object.fromEntries(keysToConvert.map((key) => [key, typeof savedObject[key] === 'boolean' ? savedObject[key].toString() : savedObject[key]])),
|
|
19
|
+
};
|
|
22
20
|
};
|
|
23
21
|
const modelTableMapping = {
|
|
24
22
|
CustomFieldDefinition: {
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,7 @@ const useCustomFields = async (app, getModel, options) => {
|
|
|
35
35
|
if (app) {
|
|
36
36
|
app.use('/api', api_1.default);
|
|
37
37
|
}
|
|
38
|
-
const sequelize = (0, db_1.default)(options.databaseConfig);
|
|
38
|
+
const sequelize = options.sequelize ?? (0, db_1.default)(options.databaseConfig);
|
|
39
39
|
if (process.env.NODE_ENV === 'test') {
|
|
40
40
|
await (0, models_1.initTestModels)(sequelize);
|
|
41
41
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.commonTestHooks = void 0;
|
|
30
|
+
const __1 = __importDefault(require("../.."));
|
|
31
|
+
const _1 = require(".");
|
|
32
|
+
const database_config_1 = __importDefault(require("./database-config"));
|
|
33
|
+
const db_1 = __importStar(require("../../utils/db"));
|
|
34
|
+
function commonTestHooks(app = null, models = [{ name: 'TestModel', scopeAttributes: ['fleetId'] }]) {
|
|
35
|
+
let sequelize;
|
|
36
|
+
beforeAll(async () => {
|
|
37
|
+
sequelize = (0, db_1.default)(database_config_1.default);
|
|
38
|
+
await (0, db_1.createSequelizeMeta)(sequelize);
|
|
39
|
+
await (0, __1.default)(app, _1.getModel, {
|
|
40
|
+
models,
|
|
41
|
+
databaseConfig: database_config_1.default,
|
|
42
|
+
getUser: () => undefined,
|
|
43
|
+
sequelize,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
afterEach(async () => {
|
|
47
|
+
jest.clearAllMocks();
|
|
48
|
+
await (0, _1.cleanup)();
|
|
49
|
+
});
|
|
50
|
+
afterAll(async () => {
|
|
51
|
+
await sequelize.close();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
exports.commonTestHooks = commonTestHooks;
|
|
@@ -15,13 +15,13 @@ export declare const coolFieldDefinition2: {
|
|
|
15
15
|
updatedAt?: Date;
|
|
16
16
|
deletedAt?: Date;
|
|
17
17
|
defaultValue?: any;
|
|
18
|
+
blockEditingFromUI?: boolean;
|
|
18
19
|
displayName?: string;
|
|
19
20
|
validation?: any;
|
|
20
21
|
fieldType: string;
|
|
21
22
|
entityId: string;
|
|
22
23
|
entityType: string;
|
|
23
24
|
modelType: string;
|
|
24
|
-
blockEditingFromUI?: boolean;
|
|
25
25
|
};
|
|
26
26
|
export declare const coolFieldDefinition3: {
|
|
27
27
|
name: string;
|
|
@@ -32,13 +32,13 @@ export declare const coolFieldDefinition3: {
|
|
|
32
32
|
updatedAt?: Date;
|
|
33
33
|
deletedAt?: Date;
|
|
34
34
|
defaultValue?: any;
|
|
35
|
+
blockEditingFromUI?: boolean;
|
|
35
36
|
displayName?: string;
|
|
36
37
|
validation?: any;
|
|
37
38
|
fieldType: string;
|
|
38
39
|
entityId: string;
|
|
39
40
|
entityType: string;
|
|
40
41
|
modelType: string;
|
|
41
|
-
blockEditingFromUI?: boolean;
|
|
42
42
|
};
|
|
43
43
|
export declare const booleanField: (modelType: string) => CreateCustomFieldDefinition;
|
|
44
44
|
export declare const selectField: (modelType: string, options: any) => CreateCustomFieldDefinition;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IncludeOptions } from 'sequelize';
|
|
2
|
-
import type { ModelCtor } from 'sequelize-typescript';
|
|
2
|
+
import type { ModelCtor, Sequelize } from 'sequelize-typescript';
|
|
3
3
|
import type { getUser as GetUserType } from '@autofleet/zehut';
|
|
4
4
|
export type ModelFetcher = (name: string) => any;
|
|
5
5
|
export type ModelOptions = {
|
|
@@ -29,4 +29,5 @@ export type CustomFieldOptions = {
|
|
|
29
29
|
models: Models[];
|
|
30
30
|
databaseConfig: any;
|
|
31
31
|
getUser: typeof GetUserType;
|
|
32
|
+
sequelize?: Sequelize;
|
|
32
33
|
};
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autofleet/sadot",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "ts-node src/index.ts",
|
|
8
8
|
"build": "rm -rf dist && tsc",
|
|
9
9
|
"linter": "eslint .",
|
|
10
|
-
"test": "jest --
|
|
11
|
-
"coverage": "jest --coverage --
|
|
10
|
+
"test": "jest --runInBand",
|
|
11
|
+
"coverage": "jest --coverage --runInBand && rm -rf ./coverage",
|
|
12
12
|
"build-to-local-repo": "node --run build && cp -r dist/* ../$REPO/node_modules/$npm_package_name/dist",
|
|
13
13
|
"dev": "nodemon",
|
|
14
14
|
"watch": "npm-watch build-to-local-repo",
|
package/src/events/index.ts
CHANGED
|
@@ -3,19 +3,17 @@ import logger from '../utils/logger';
|
|
|
3
3
|
|
|
4
4
|
const events = new Events({ logger });
|
|
5
5
|
|
|
6
|
-
const KEYS_TO_CONVERT = ['value', 'defaultValue'];
|
|
6
|
+
const KEYS_TO_CONVERT = ['value', 'defaultValue', 'blockEditingFromUI'];
|
|
7
7
|
|
|
8
|
-
const stringifyBooleans = (savedObject: any, keysToConvert:
|
|
9
|
-
|
|
8
|
+
const stringifyBooleans = (savedObject: any, keysToConvert: string[]) => {
|
|
9
|
+
const savedObjectKeySet = new Set(Object.keys(savedObject));
|
|
10
|
+
if (keysToConvert.every((key) => !savedObjectKeySet.has(key))) {
|
|
10
11
|
return savedObject;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
return objectToReturn;
|
|
13
|
+
return {
|
|
14
|
+
...savedObject,
|
|
15
|
+
...Object.fromEntries(keysToConvert.map((key) => [key, typeof savedObject[key] === 'boolean' ? savedObject[key].toString() : savedObject[key]])),
|
|
16
|
+
};
|
|
19
17
|
};
|
|
20
18
|
|
|
21
19
|
const modelTableMapping = {
|
package/src/index.ts
CHANGED
|
@@ -30,7 +30,7 @@ const useCustomFields = async (
|
|
|
30
30
|
if (app) {
|
|
31
31
|
app.use('/api', api);
|
|
32
32
|
}
|
|
33
|
-
const sequelize = initDB(options.databaseConfig);
|
|
33
|
+
const sequelize = options.sequelize ?? initDB(options.databaseConfig);
|
|
34
34
|
if (process.env.NODE_ENV === 'test') {
|
|
35
35
|
await initTestModels(sequelize);
|
|
36
36
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Application } from 'express';
|
|
2
|
+
import type { Sequelize } from 'sequelize-typescript';
|
|
3
|
+
import useCustomFields from '../..';
|
|
4
|
+
import { cleanup, getModel } from '.';
|
|
5
|
+
import databaseConfig from './database-config';
|
|
6
|
+
import initDB, { createSequelizeMeta } from '../../utils/db';
|
|
7
|
+
import type { Models } from '../../types';
|
|
8
|
+
|
|
9
|
+
export function commonTestHooks(app: Application | null = null, models: Models[] = [{ name: 'TestModel', scopeAttributes: ['fleetId'] }]) {
|
|
10
|
+
let sequelize: Sequelize;
|
|
11
|
+
|
|
12
|
+
beforeAll(async () => {
|
|
13
|
+
sequelize = initDB(databaseConfig);
|
|
14
|
+
await createSequelizeMeta(sequelize);
|
|
15
|
+
await useCustomFields(app, getModel, {
|
|
16
|
+
models,
|
|
17
|
+
databaseConfig,
|
|
18
|
+
getUser: () => undefined,
|
|
19
|
+
sequelize,
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
afterEach(async () => {
|
|
24
|
+
jest.clearAllMocks();
|
|
25
|
+
await cleanup();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
afterAll(async () => {
|
|
29
|
+
await sequelize.close();
|
|
30
|
+
});
|
|
31
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IncludeOptions } from 'sequelize';
|
|
2
|
-
import type { ModelCtor } from 'sequelize-typescript';
|
|
2
|
+
import type { ModelCtor, Sequelize } from 'sequelize-typescript';
|
|
3
3
|
import type { getUser as GetUserType } from '@autofleet/zehut';
|
|
4
4
|
|
|
5
5
|
export type ModelFetcher = (name: string) => any;
|
|
@@ -33,4 +33,5 @@ export type CustomFieldOptions = {
|
|
|
33
33
|
models: Models[];
|
|
34
34
|
databaseConfig: any;
|
|
35
35
|
getUser: typeof GetUserType;
|
|
36
|
+
sequelize?: Sequelize;
|
|
36
37
|
};
|