@chevre/domain 22.10.0-alpha.17 → 22.10.0-alpha.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.
@@ -1,20 +1,32 @@
1
1
  import { EventEmitter } from 'events';
2
+ import type { Connection } from 'mongoose';
3
+ import type { RedisClientType } from 'redis';
2
4
  import * as factory from '../factory';
3
- type ICustomFunction = () => Promise<void>;
5
+ interface IExecuteSettings {
6
+ /**
7
+ * MongoDBコネクション
8
+ */
9
+ connection: Connection;
10
+ /**
11
+ * Redisクライアント
12
+ */
13
+ redisClient?: RedisClientType;
14
+ }
15
+ type IOperationExecute<T> = (settings: IExecuteSettings) => Promise<T>;
16
+ type INextFunction = (task: Pick<factory.task.ITask<factory.taskName>, 'id'>) => IOperationExecute<void>;
4
17
  interface IListenArgsOnTaskStatusChanged {
5
18
  id: string;
6
19
  name?: factory.taskName;
7
20
  status: factory.taskStatus.Ready | factory.taskStatus.Running;
8
21
  expires?: Date;
9
- customFunction?: ICustomFunction;
10
22
  }
11
- type IOnTaskStatusChangedListener = (listenArgs: IListenArgsOnTaskStatusChanged) => void;
23
+ type IOnTaskStatusChangedListener = (listenArgs: IListenArgsOnTaskStatusChanged, next: INextFunction) => void;
12
24
  /**
13
25
  * タスクイベントエミッター
14
26
  */
15
27
  declare class TaskEventEmitter extends EventEmitter {
16
28
  onTaskStatusChanged(listner: IOnTaskStatusChangedListener): void;
17
- emitTaskStatusChanged(args: IListenArgsOnTaskStatusChanged): void;
29
+ emitTaskStatusChanged(args: IListenArgsOnTaskStatusChanged, next?: INextFunction): void;
18
30
  }
19
31
  declare const taskEventEmitter: TaskEventEmitter;
20
- export { ICustomFunction, IListenArgsOnTaskStatusChanged, IOnTaskStatusChangedListener, taskEventEmitter };
32
+ export { IExecuteSettings, INextFunction, IListenArgsOnTaskStatusChanged, IOnTaskStatusChangedListener, taskEventEmitter };
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.taskEventEmitter = void 0;
4
13
  const events_1 = require("events");
@@ -6,6 +15,11 @@ var EventName;
6
15
  (function (EventName) {
7
16
  EventName["OnTaskStatusChanged"] = "OnTaskStatusChanged";
8
17
  })(EventName || (EventName = {}));
18
+ const defaultNextFunction = () => {
19
+ return () => __awaiter(void 0, void 0, void 0, function* () {
20
+ // no op
21
+ });
22
+ };
9
23
  /**
10
24
  * タスクイベントエミッター
11
25
  */
@@ -13,8 +27,9 @@ class TaskEventEmitter extends events_1.EventEmitter {
13
27
  onTaskStatusChanged(listner) {
14
28
  this.on(EventName.OnTaskStatusChanged, listner);
15
29
  }
16
- emitTaskStatusChanged(args) {
17
- this.emit(EventName.OnTaskStatusChanged, args);
30
+ // support next function required(2025-05-25~)
31
+ emitTaskStatusChanged(args, next) {
32
+ this.emit(EventName.OnTaskStatusChanged, args, (typeof next === 'function') ? next : defaultNextFunction);
18
33
  }
19
34
  }
20
35
  const taskEventEmitter = new TaskEventEmitter();
@@ -1,5 +1,5 @@
1
1
  import type { AnyKeys, Connection, FilterQuery, ProjectionType, UpdateWriteOpResult } from 'mongoose';
2
- import { IListenArgsOnTaskStatusChanged } from '../eventEmitter/task';
2
+ import { INextFunction } from '../eventEmitter/task';
3
3
  import * as factory from '../factory';
4
4
  import { IModel } from './mongoose/schemas/task';
5
5
  interface IAggregationByStatus {
@@ -38,7 +38,7 @@ export declare class TaskRepo {
38
38
  alternateName?: never;
39
39
  identifier?: never;
40
40
  expires: Date;
41
- }, options: Pick<IListenArgsOnTaskStatusChanged, 'customFunction'>): Promise<{
41
+ }, next: INextFunction): Promise<{
42
42
  id: string;
43
43
  }>;
44
44
  saveMany(taskAttributes: ICreatingTask[], options: IOptionOnCreate): Promise<{
@@ -158,7 +158,7 @@ class TaskRepo {
158
158
  // resolve uniqueness of identifier(2025-03-27~)
159
159
  params,
160
160
  // support customr function(2025-05-25~)
161
- options) {
161
+ next) {
162
162
  return __awaiter(this, void 0, void 0, function* () {
163
163
  var _a, _b;
164
164
  const { expires } = params;
@@ -171,7 +171,11 @@ class TaskRepo {
171
171
  if (typeof id !== 'string') {
172
172
  throw new factory.errors.Internal('task not saved');
173
173
  }
174
- task_1.taskEventEmitter.emitTaskStatusChanged(Object.assign({ id, status: factory.taskStatus.Ready, expires }, (typeof options.customFunction === 'function') ? { customFunction: options.customFunction } : undefined));
174
+ task_1.taskEventEmitter.emitTaskStatusChanged({
175
+ id,
176
+ status: factory.taskStatus.Ready,
177
+ expires // emit expires(2025-03-31~)
178
+ }, next);
175
179
  return { id };
176
180
  });
177
181
  }
@@ -1,6 +1,5 @@
1
- import type { Connection } from 'mongoose';
2
- import type { RedisClientType } from 'redis';
3
1
  import { SendGridCredentials } from '../credentials/sendGrid';
2
+ import type { IExecuteSettings as IMinimumExecuteSettings } from '../eventEmitter/task';
4
3
  import * as factory from '../factory';
5
4
  import type { IExecutableTask, IExecutableTaskKeys, TaskRepo } from '../repo/task';
6
5
  import { Settings } from '../settings';
@@ -8,15 +7,7 @@ import { AggregationSettings } from '../settings/aggregation';
8
7
  interface ICredentialSettings {
9
8
  sendGrid: SendGridCredentials;
10
9
  }
11
- interface IExecuteSettings {
12
- /**
13
- * MongoDBコネクション
14
- */
15
- connection: Connection;
16
- /**
17
- * Redisクライアント
18
- */
19
- redisClient?: RedisClientType;
10
+ interface IExecuteSettings extends IMinimumExecuteSettings {
20
11
  credentials: ICredentialSettings;
21
12
  settings: Settings;
22
13
  aggregationSettings?: AggregationSettings;
package/package.json CHANGED
@@ -113,5 +113,5 @@
113
113
  "postversion": "git push origin --tags",
114
114
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
115
115
  },
116
- "version": "22.10.0-alpha.17"
116
+ "version": "22.10.0-alpha.18"
117
117
  }