@autofleet/sequelize-utils 6.0.0-1 → 6.0.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/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # V6 migration
2
+
3
+ The breaking change in this version is the **implicit** upgrade of `zehut` from v3 to v4, via the upgrade of `@autofleet/events`.
4
+ The required version of zehut is now `^4.0.0`.
5
+
6
+ Additionally, the minimum node version is now 18, due to the minimum version of node defined in `zehut`.
@@ -0,0 +1,3 @@
1
+ import Events from '@autofleet/events';
2
+ declare const _default: Events;
3
+ export default _default;
@@ -0,0 +1,8 @@
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
+ const events_1 = __importDefault(require("@autofleet/events"));
7
+ const logger_1 = __importDefault(require("../logger"));
8
+ exports.default = new events_1.default({ logger: logger_1.default });
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  import type { Sequelize, Transaction } from 'sequelize';
2
- import type { LoggerInstanceManager } from '@autofleet/logger';
3
2
  import addModelEventHooks from './model-event-hooks';
4
3
  import { transactionWithRetry as _transactionWithRetry } from './transaction-with-retry';
5
4
  import { httpBasedTransaction as _httpBasedTransaction } from './http-based-transaction';
6
5
  import runAfterTransactionCommits from './runAfterTransactionCommits';
7
- type ArgsWithoutSequelize<T> = T extends (arg1: Sequelize, ...args: infer U) => any ? U : never;
8
- declare const _default: (sequelize: Sequelize, logger?: LoggerInstanceManager) => {
6
+ type ArgsWithoutSequelize<T> = T extends (arg1: Sequelize, ...args: infer U) => unknown ? U : never;
7
+ declare const _default: (sequelize: Sequelize) => {
9
8
  transactionWithRetry: <T>(...args: ArgsWithoutSequelize<typeof _transactionWithRetry<T>>) => Promise<T>;
10
9
  httpBasedTransaction: <T>(...args: ArgsWithoutSequelize<typeof _httpBasedTransaction<T>>) => Promise<T>;
11
10
  registerModelEventHooks: (...args: ArgsWithoutSequelize<typeof addModelEventHooks>) => void;
package/dist/index.js CHANGED
@@ -7,10 +7,10 @@ const model_event_hooks_1 = __importDefault(require("./model-event-hooks"));
7
7
  const transaction_with_retry_1 = require("./transaction-with-retry");
8
8
  const http_based_transaction_1 = require("./http-based-transaction");
9
9
  const runAfterTransactionCommits_1 = __importDefault(require("./runAfterTransactionCommits"));
10
- exports.default = (sequelize, logger) => {
10
+ exports.default = (sequelize) => {
11
11
  const transactionWithRetry = (funcToRun, retriesCount, options) => (0, transaction_with_retry_1.transactionWithRetry)(sequelize, funcToRun, retriesCount, options);
12
12
  const httpBasedTransaction = (req, res, cb) => (0, http_based_transaction_1.httpBasedTransaction)(sequelize, req, res, cb);
13
- const registerModelEventHooks = (modelTableMapping, events) => (0, model_event_hooks_1.default)(sequelize, modelTableMapping, events, logger);
13
+ const registerModelEventHooks = (modelTableMapping) => (0, model_event_hooks_1.default)(sequelize, modelTableMapping);
14
14
  const useOrCreateTransaction = (transaction, cb) => {
15
15
  if (transaction) {
16
16
  return cb(transaction);
@@ -1,10 +1,8 @@
1
1
  import type { Sequelize } from 'sequelize';
2
- import type Events from '@autofleet/events';
3
- import type { LoggerInstanceManager } from '@autofleet/logger';
4
2
  export interface ModelMapping {
5
3
  [ModelName: string]: {
6
4
  tableName: string;
7
5
  };
8
6
  }
9
- declare const addModelEventHooks: (sequelize: Sequelize, modelTableMapping: ModelMapping, events: Events, logger?: LoggerInstanceManager) => void;
7
+ declare const addModelEventHooks: (sequelize: Sequelize, modelTableMapping: ModelMapping) => void;
10
8
  export default addModelEventHooks;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const events_1 = __importDefault(require("./events"));
6
7
  const logger_1 = __importDefault(require("./logger"));
7
8
  const runAfterTransactionCommits_1 = __importDefault(require("./runAfterTransactionCommits"));
8
9
  const isDate = (input) => input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
@@ -13,13 +14,8 @@ const formatDatesInObject = (obj) => {
13
14
  });
14
15
  return newObj;
15
16
  };
16
- const addModelEventHooks = (sequelize, modelTableMapping, events, logger) => {
17
- if (!events) {
18
- logger.warn('Events object must be provided to addModelEventHooks');
19
- return;
20
- }
17
+ const addModelEventHooks = (sequelize, modelTableMapping) => {
21
18
  const updateEventToDimTable = (object, isDelete = false) => {
22
- const localLogger = logger || logger_1.default;
23
19
  try {
24
20
  const objectToSend = object.get();
25
21
  if (isDelete) {
@@ -31,12 +27,12 @@ const addModelEventHooks = (sequelize, modelTableMapping, events, logger) => {
31
27
  if (!tableName) {
32
28
  return;
33
29
  }
34
- events.sendObject(tableName, eventVersion, objectToSendFormatted, Object.keys(object.rawAttributes)).catch((e) => {
35
- localLogger.error('sendObject error', { tableName, eventVersion, e });
30
+ events_1.default.sendObject(tableName, eventVersion, objectToSendFormatted, Object.keys(object.rawAttributes)).catch((e) => {
31
+ logger_1.default.error('sendObject error', { tableName, eventVersion, e });
36
32
  });
37
33
  }
38
34
  catch (e) {
39
- localLogger.error('dimTables error', { e });
35
+ logger_1.default.error('dimTables error', { e });
40
36
  }
41
37
  };
42
38
  sequelize.addHook('afterSave', (savedObject, options) => (0, runAfterTransactionCommits_1.default)(() => updateEventToDimTable(savedObject), options));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autofleet/sequelize-utils",
3
- "version": "6.0.0-1",
3
+ "version": "6.0.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -13,27 +13,30 @@
13
13
  "coverage": "jest --coverage --runInBand"
14
14
  },
15
15
  "author": "",
16
- "license": "ISC",
16
+ "license": "Proprietary",
17
+ "engines": {
18
+ "node": ">=18.0.0"
19
+ },
17
20
  "dependencies": {
21
+ "@autofleet/events": "^5.1.3",
18
22
  "debug": "^4.3.2"
19
23
  },
20
24
  "peerDependencies": {
21
- "@autofleet/events": ">=4",
22
25
  "@autofleet/logger": ">=4",
23
26
  "sequelize": ">=5"
24
27
  },
25
28
  "devDependencies": {
26
- "@autofleet/network": "^1.3.7",
27
- "@autofleet/logger": "^4.1.0",
29
+ "@autofleet/logger": "^4.2.18",
30
+ "@autofleet/network": "^1.8.1",
28
31
  "@types/debug": "^4.1.6",
29
32
  "@types/express": "^4.17.13",
30
33
  "@types/jest": "^29.5.14",
31
34
  "@types/node": "^22.10.6",
32
- "@typescript-eslint/eslint-plugin": "^4.28.3",
33
- "@typescript-eslint/parser": "^4.28.3",
34
- "eslint": "^7.31.0",
35
- "eslint-config-airbnb-base": "^14.2.1",
36
- "eslint-plugin-import": "^2.23.4",
35
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
36
+ "@typescript-eslint/parser": "^7.18.0",
37
+ "eslint": "^8.57.0",
38
+ "eslint-config-airbnb-base": "^15.0.0",
39
+ "eslint-plugin-import": "^2.31.0",
37
40
  "express": "^4.17.3",
38
41
  "jest": "^29.7.0",
39
42
  "pg": "^8.13.1",
@@ -42,4 +45,4 @@
42
45
  "ts-node": "^10.1.0",
43
46
  "typescript": "^5.5.4"
44
47
  }
45
- }
48
+ }
@@ -0,0 +1,4 @@
1
+ import Events from '@autofleet/events';
2
+ import logger from '../logger';
3
+
4
+ export default new Events({ logger });
package/src/index.ts CHANGED
@@ -5,16 +5,14 @@ import type {
5
5
  TransactionOptions,
6
6
  } from 'sequelize';
7
7
  import type { IncomingMessage, ServerResponse } from 'http';
8
- import type { LoggerInstanceManager } from '@autofleet/logger';
9
- import type Events from '@autofleet/events';
10
8
  import addModelEventHooks, { ModelMapping } from './model-event-hooks';
11
9
  import { transactionWithRetry as _transactionWithRetry } from './transaction-with-retry';
12
10
  import { httpBasedTransaction as _httpBasedTransaction } from './http-based-transaction';
13
11
  import runAfterTransactionCommits from './runAfterTransactionCommits';
14
12
 
15
- type ArgsWithoutSequelize<T> = T extends (arg1: Sequelize, ...args: infer U) => any ? U : never;
13
+ type ArgsWithoutSequelize<T> = T extends (arg1: Sequelize, ...args: infer U) => unknown ? U : never;
16
14
 
17
- export default (sequelize: Sequelize, logger?: LoggerInstanceManager): {
15
+ export default (sequelize: Sequelize): {
18
16
  transactionWithRetry: <T>(...args: ArgsWithoutSequelize<typeof _transactionWithRetry<T>>) => Promise<T>;
19
17
  httpBasedTransaction: <T>(...args: ArgsWithoutSequelize<typeof _httpBasedTransaction<T>>) => Promise<T>;
20
18
  registerModelEventHooks: (...args: ArgsWithoutSequelize<typeof addModelEventHooks>) => void;
@@ -23,7 +21,7 @@ export default (sequelize: Sequelize, logger?: LoggerInstanceManager): {
23
21
  } => {
24
22
  const transactionWithRetry = <T>(funcToRun: (transaction: Transaction) => Promise<T>, retriesCount?: number, options?: TransactionOptions): Promise<T> => _transactionWithRetry(sequelize, funcToRun, retriesCount, options);
25
23
  const httpBasedTransaction = <T>(req: IncomingMessage, res: ServerResponse, cb: (transaction: Transaction) => Promise<T>): Promise<T> => _httpBasedTransaction(sequelize, req, res, cb);
26
- const registerModelEventHooks = (modelTableMapping: ModelMapping, events: Events) => addModelEventHooks(sequelize, modelTableMapping, events, logger);
24
+ const registerModelEventHooks = (modelTableMapping: ModelMapping) => addModelEventHooks(sequelize, modelTableMapping);
27
25
  const useOrCreateTransaction = <T>(transaction: Transaction, cb: (t: Transaction) => Promise<T>) => {
28
26
  if (transaction) {
29
27
  return cb(transaction);
@@ -1,7 +1,6 @@
1
1
  import type { Model, Sequelize } from 'sequelize';
2
- import type Events from '@autofleet/events';
3
- import type { LoggerInstanceManager } from '@autofleet/logger';
4
- import packageLogger from './logger';
2
+ import events from './events';
3
+ import logger from './logger';
5
4
  import runAfterTransactionCommits from './runAfterTransactionCommits';
6
5
 
7
6
  export interface ModelMapping {
@@ -19,13 +18,8 @@ const formatDatesInObject = (obj: object) => {
19
18
  return newObj;
20
19
  };
21
20
 
22
- const addModelEventHooks = (sequelize: Sequelize, modelTableMapping: ModelMapping, events: Events, logger?: LoggerInstanceManager): void => {
23
- if (!events) {
24
- logger.warn('Events object must be provided to addModelEventHooks');
25
- return;
26
- }
21
+ const addModelEventHooks = (sequelize: Sequelize, modelTableMapping: ModelMapping): void => {
27
22
  const updateEventToDimTable = (object: Model, isDelete = false) => {
28
- const localLogger = logger || packageLogger;
29
23
  try {
30
24
  const objectToSend = object.get();
31
25
  if (isDelete) {
@@ -44,10 +38,10 @@ const addModelEventHooks = (sequelize: Sequelize, modelTableMapping: ModelMappin
44
38
  // @ts-expect-error the rawAttributes is typed as static, while it actually is on the instance level.
45
39
  Object.keys(object.rawAttributes),
46
40
  ).catch((e) => {
47
- localLogger.error('sendObject error', { tableName, eventVersion, e });
41
+ logger.error('sendObject error', { tableName, eventVersion, e });
48
42
  });
49
43
  } catch (e) {
50
- localLogger.error('dimTables error', { e });
44
+ logger.error('dimTables error', { e });
51
45
  }
52
46
  };
53
47
 
package/.env DELETED
@@ -1,5 +0,0 @@
1
- AF_SERVICE_NAME=sequelize-utils
2
- DB_NAME=stored_events_test
3
- NODE_ENV=test
4
- DB_USERNAME=postgres
5
- DB_PASSWORD=postgres
@@ -1,3 +0,0 @@
1
- import Events from '@autofleet/events';
2
- declare const _default: Events;
3
- export default _default;
@@ -1,8 +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
- const events_1 = __importDefault(require("@autofleet/events"));
7
- const logger_1 = __importDefault(require("../logger"));
8
- exports.default = new events_1.default({ logger: logger_1.default });
@@ -1,4 +0,0 @@
1
- import Events from '@autofleet/events';
2
- import logger from '../logger';
3
-
4
- export default new Events({ logger });