@unchainedshop/core-worker 3.0.0-alpha7 → 3.0.0-rc2

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.
Files changed (40) hide show
  1. package/lib/db/WorkQueueCollection.d.ts +26 -1
  2. package/lib/db/WorkQueueCollection.d.ts.map +1 -1
  3. package/lib/db/WorkQueueCollection.js +8 -0
  4. package/lib/db/WorkQueueCollection.js.map +1 -1
  5. package/lib/director/WorkerAdapter.d.ts +2 -3
  6. package/lib/director/WorkerAdapter.d.ts.map +1 -1
  7. package/lib/director/WorkerAdapter.js.map +1 -1
  8. package/lib/director/WorkerDirector.d.ts +2 -3
  9. package/lib/director/WorkerDirector.d.ts.map +1 -1
  10. package/lib/director/WorkerDirector.js.map +1 -1
  11. package/lib/module/configureWorkerModule.d.ts +66 -54
  12. package/lib/module/configureWorkerModule.d.ts.map +1 -1
  13. package/lib/module/configureWorkerModule.js +53 -87
  14. package/lib/module/configureWorkerModule.js.map +1 -1
  15. package/lib/schedulers/FailedRescheduler.d.ts +1 -2
  16. package/lib/schedulers/FailedRescheduler.d.ts.map +1 -1
  17. package/lib/schedulers/FailedRescheduler.js.map +1 -1
  18. package/lib/types.d.ts +1 -1
  19. package/lib/types.d.ts.map +1 -1
  20. package/lib/worker-index.d.ts +1 -9
  21. package/lib/worker-index.d.ts.map +1 -1
  22. package/lib/worker-index.js +1 -9
  23. package/lib/worker-index.js.map +1 -1
  24. package/lib/workers/BaseWorker.d.ts +1 -2
  25. package/lib/workers/BaseWorker.d.ts.map +1 -1
  26. package/lib/workers/BaseWorker.js.map +1 -1
  27. package/package.json +9 -12
  28. package/src/db/WorkQueueCollection.ts +28 -1
  29. package/src/module/configureWorkerModule.ts +144 -170
  30. package/src/worker-index.ts +1 -10
  31. package/tsconfig.json +5 -7
  32. package/src/director/WorkStatus.ts +0 -7
  33. package/src/director/WorkerAdapter.ts +0 -28
  34. package/src/director/WorkerDirector.ts +0 -120
  35. package/src/director/WorkerEventTypes.ts +0 -7
  36. package/src/schedulers/FailedRescheduler.ts +0 -83
  37. package/src/types.ts +0 -20
  38. package/src/workers/BaseWorker.ts +0 -125
  39. package/src/workers/EventListenerWorker.ts +0 -61
  40. package/src/workers/IntervalWorker.ts +0 -56
package/lib/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { TimestampFields } from '@unchainedshop/mongodb';
1
+ import { TimestampFields } from '@unchainedshop/mongodb';
2
2
  export type Work = {
3
3
  _id?: string;
4
4
  priority: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,eAAe,CAAC"}
@@ -1,11 +1,3 @@
1
- export * from './types.js';
1
+ export * from './db/WorkQueueCollection.js';
2
2
  export * from './module/configureWorkerModule.js';
3
- export * from './director/WorkerDirector.js';
4
- export * from './director/WorkerAdapter.js';
5
- export { WorkStatus } from './director/WorkStatus.js';
6
- export { WorkerEventTypes } from './director/WorkerEventTypes.js';
7
- export * from './schedulers/FailedRescheduler.js';
8
- export * from './workers/BaseWorker.js';
9
- export * from './workers/EventListenerWorker.js';
10
- export * from './workers/IntervalWorker.js';
11
3
  //# sourceMappingURL=worker-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-index.d.ts","sourceRoot":"","sources":["../src/worker-index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"worker-index.d.ts","sourceRoot":"","sources":["../src/worker-index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAE5C,cAAc,mCAAmC,CAAC"}
@@ -1,11 +1,3 @@
1
- export * from './types.js';
1
+ export * from './db/WorkQueueCollection.js';
2
2
  export * from './module/configureWorkerModule.js';
3
- export * from './director/WorkerDirector.js';
4
- export * from './director/WorkerAdapter.js';
5
- export { WorkStatus } from './director/WorkStatus.js';
6
- export { WorkerEventTypes } from './director/WorkerEventTypes.js';
7
- export * from './schedulers/FailedRescheduler.js';
8
- export * from './workers/BaseWorker.js';
9
- export * from './workers/EventListenerWorker.js';
10
- export * from './workers/IntervalWorker.js';
11
3
  //# sourceMappingURL=worker-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-index.js","sourceRoot":"","sources":["../src/worker-index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"worker-index.js","sourceRoot":"","sources":["../src/worker-index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAE5C,cAAc,mCAAmC,CAAC"}
@@ -1,4 +1,3 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
1
  import { Work } from '../types.js';
3
2
  export type WorkData = Pick<Partial<Work>, 'input' | 'originalWorkId' | 'priority' | 'retries' | 'timeout' | 'scheduled' | 'worker' | 'scheduleId'> & {
4
3
  type: string;
@@ -12,7 +11,7 @@ export type IWorker<P extends {
12
11
  type: string;
13
12
  external: boolean;
14
13
  getFloorDate: (date?: Date) => Date;
15
- actions: (params: P, unchainedAPI: UnchainedCore) => {
14
+ actions: (params: P, unchainedAPI: any) => {
16
15
  autorescheduleTypes: (options: {
17
16
  referenceDate: Date;
18
17
  }) => Promise<Array<Work | null>>;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseWorker.d.ts","sourceRoot":"","sources":["../../src/workers/BaseWorker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,MAAM,QAAQ,GAAG,IAAI,CACzB,OAAO,CAAC,IAAI,CAAC,EACb,OAAO,GAAG,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CACxG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAElB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAEpC,OAAO,EAAE,CACP,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,aAAa,KACxB;QACH,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAAE,aAAa,EAAE,IAAI,CAAA;SAAE,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,IAAI,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACzF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,YAAY,CAuF5C,CAAC"}
1
+ {"version":3,"file":"BaseWorker.d.ts","sourceRoot":"","sources":["../../src/workers/BaseWorker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,MAAM,QAAQ,GAAG,IAAI,CACzB,OAAO,CAAC,IAAI,CAAC,EACb,OAAO,GAAG,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CACxG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAElB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAEpC,OAAO,EAAE,CACP,MAAM,EAAE,CAAC,EACT,YAAY,KAAA,KACT;QACH,mBAAmB,EAAE,CAAC,OAAO,EAAE;YAAE,aAAa,EAAE,IAAI,CAAA;SAAE,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,IAAI,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACzF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,YAAY,CAuF5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseWorker.js","sourceRoot":"","sources":["../../src/workers/BaseWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseWorker.js","sourceRoot":"","sources":["../../src/workers/BaseWorker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-worker",
3
- "version": "3.0.0-alpha7",
3
+ "version": "3.0.0-rc2",
4
4
  "main": "lib/worker-index.js",
5
- "exports": {
6
- ".": "./lib/worker-index.js",
7
- "./*": "./lib/*"
8
- },
9
5
  "types": "lib/worker-index.d.ts",
10
6
  "type": "module",
11
7
  "scripts": {
12
- "clean": "rm -rf lib",
13
- "prepublishOnly": "npm run clean && tsc",
8
+ "clean": "tsc -b --clean",
9
+ "build": "tsc -b",
10
+ "prepublishOnly": "npm run clean && npm run build",
14
11
  "watch": "tsc -w",
15
12
  "test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
16
13
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
@@ -31,14 +28,14 @@
31
28
  },
32
29
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
30
  "dependencies": {
34
- "@breejs/later": "^4.2.0",
35
- "@unchainedshop/logger": "^3.0.0-alpha4",
36
- "@unchainedshop/utils": "^3.0.0-alpha4"
31
+ "@unchainedshop/logger": "^3.0.0-rc2",
32
+ "@unchainedshop/utils": "^3.0.0-rc2"
37
33
  },
38
34
  "devDependencies": {
39
- "@types/node": "^22.8.1",
35
+ "@types/breejs__later": "^4.1.5",
36
+ "@types/node": "^22.10.2",
40
37
  "jest": "^29.7.0",
41
38
  "ts-jest": "^29.2.5",
42
- "typescript": "^5.6.3"
39
+ "typescript": "^5.7.2"
43
40
  }
44
41
  }
@@ -1,8 +1,35 @@
1
+ import { TimestampFields } from '@unchainedshop/mongodb';
1
2
  import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
2
- import { Work } from '../types.js';
3
3
 
4
4
  const ONE_DAY_IN_SECONDS = 86400;
5
5
 
6
+ export enum WorkStatus {
7
+ NEW = 'NEW',
8
+ ALLOCATED = 'ALLOCATED',
9
+ SUCCESS = 'SUCCESS',
10
+ FAILED = 'FAILED',
11
+ DELETED = 'DELETED',
12
+ }
13
+
14
+ export type Work = {
15
+ _id?: string;
16
+ priority: number;
17
+ retries: number;
18
+ scheduled: Date;
19
+ type: string;
20
+ input: Record<string, any>;
21
+ error?: any;
22
+ finished?: Date;
23
+ originalWorkId?: string;
24
+ result?: any;
25
+ started?: Date;
26
+ success?: boolean;
27
+ timeout?: number;
28
+ worker?: string;
29
+ autoscheduled?: boolean;
30
+ scheduleId?: string;
31
+ } & TimestampFields;
32
+
6
33
  export const WorkQueueCollection = async (db: mongodb.Db) => {
7
34
  const WorkQueue = db.collection<Work>('work_queue');
8
35
 
@@ -1,6 +1,3 @@
1
- import type { WorkData, WorkResult } from '../worker-index.js';
2
- import type { UnchainedCore } from '@unchainedshop/core';
3
-
4
1
  import os from 'os';
5
2
  import { createLogger } from '@unchainedshop/logger';
6
3
  import {
@@ -11,18 +8,40 @@ import {
11
8
  ModuleInput,
12
9
  } from '@unchainedshop/mongodb';
13
10
  import { emit, registerEvents } from '@unchainedshop/events';
14
- import { buildObfuscatedFieldsFilter, SortDirection, SortOption } from '@unchainedshop/utils';
15
- import { WorkQueueCollection } from '../db/WorkQueueCollection.js';
16
- import { DIRECTOR_MARKED_FAILED_ERROR, WorkerDirector } from '../director/WorkerDirector.js';
17
- import { WorkerEventTypes } from '../director/WorkerEventTypes.js';
18
- import { WorkStatus } from '../director/WorkStatus.js';
19
- import { Work } from '../types.js';
11
+ import {
12
+ buildObfuscatedFieldsFilter,
13
+ DateFilterInput,
14
+ SortDirection,
15
+ SortOption,
16
+ } from '@unchainedshop/utils';
17
+ import { Work, WorkQueueCollection, WorkStatus } from '../db/WorkQueueCollection.js';
20
18
  import addMigrations from './migrations/addMigrations.js';
21
19
 
22
20
  const { UNCHAINED_WORKER_ID = os.hostname() } = process.env;
23
21
 
22
+ export const DIRECTOR_MARKED_FAILED_ERROR = 'DIRECTOR_MARKED_FAILED';
23
+
24
24
  const logger = createLogger('unchained:core-worker');
25
25
 
26
+ export type WorkData = Pick<
27
+ Partial<Work>,
28
+ 'input' | 'originalWorkId' | 'priority' | 'retries' | 'timeout' | 'scheduled' | 'worker' | 'scheduleId'
29
+ > & { type: string };
30
+
31
+ export interface WorkResult<Result = unknown> {
32
+ success: boolean;
33
+ result?: Result;
34
+ error?: any;
35
+ }
36
+
37
+ export enum WorkerEventTypes {
38
+ ADDED = 'WORK_ADDED',
39
+ ALLOCATED = 'WORK_ALLOCATED',
40
+ FINISHED = 'WORK_FINISHED',
41
+ DELETED = 'WORK_DELETED',
42
+ RESCHEDULED = 'WORK_RESCHEDULED',
43
+ }
44
+
26
45
  export interface WorkerSettingsOptions {
27
46
  blacklistedVariables?: string[];
28
47
  }
@@ -44,57 +63,6 @@ export type WorkQueueQuery = {
44
63
  scheduled?: { end?: Date; start?: Date };
45
64
  };
46
65
 
47
- export type WorkerModule = {
48
- activeWorkTypes: () => Promise<Array<string>>;
49
- findWork: (query: { workId?: string; originalWorkId?: string }) => Promise<Work>;
50
- findWorkQueue: (
51
- query: WorkQueueQuery & {
52
- sort?: Array<SortOption>;
53
- limit?: number;
54
- skip?: number;
55
- },
56
- ) => Promise<Array<Work>>;
57
- count: (query: WorkQueueQuery) => Promise<number>;
58
- workExists: (query: { workId?: string; originalWorkId?: string }) => Promise<boolean>;
59
-
60
- // Transformations
61
- status: (work: Work) => WorkStatus;
62
-
63
- type: (work: Work) => string;
64
-
65
- // Mutations
66
- addWork: (data: WorkData) => Promise<Work>;
67
-
68
- allocateWork: (doc: { types: Array<string>; worker: string }) => Promise<Work>;
69
-
70
- processNextWork: (unchainedAPI: UnchainedCore, workerId?: string) => Promise<Work>;
71
-
72
- rescheduleWork: (work: Work, scheduled: Date, unchainedAPI: UnchainedCore) => Promise<Work>;
73
-
74
- ensureOneWork: (work: WorkData) => Promise<Work>;
75
-
76
- ensureNoWork: (work: { priority: number; type: string; scheduleId: string }) => Promise<void>;
77
-
78
- finishWork: (
79
- _id: string,
80
- data: WorkResult<any> & {
81
- finished?: Date;
82
- started?: Date;
83
- worker?: string;
84
- },
85
- ) => Promise<Work | null>;
86
-
87
- deleteWork: (_id: string) => Promise<Work | null>;
88
-
89
- markOldWorkAsFailed: (params: {
90
- types: Array<string>;
91
- worker: string;
92
- referenceDate: Date;
93
- }) => Promise<Array<Work>>;
94
-
95
- getReport: (params?: { types?: string[]; from?: Date; to?: Date }) => Promise<WorkerReport[]>;
96
- };
97
-
98
66
  const WORK_STATUS_FILTER_MAP = {
99
67
  [WorkStatus.DELETED]: { deleted: { $exists: true } },
100
68
  [WorkStatus.NEW]: {
@@ -224,7 +192,7 @@ export const configureWorkerModule = async ({
224
192
  db,
225
193
  migrationRepository,
226
194
  options,
227
- }: ModuleInput<WorkerSettingsOptions>): Promise<WorkerModule> => {
195
+ }: ModuleInput<WorkerSettingsOptions>) => {
228
196
  addMigrations(migrationRepository);
229
197
 
230
198
  registerEvents(Object.values(WorkerEventTypes));
@@ -233,7 +201,13 @@ export const configureWorkerModule = async ({
233
201
 
234
202
  const removePrivateFields = buildObfuscatedFieldsFilter(options?.blacklistedVariables);
235
203
 
236
- const allocateWork: WorkerModule['allocateWork'] = async ({ types, worker = UNCHAINED_WORKER_ID }) => {
204
+ const allocateWork = async ({
205
+ types,
206
+ worker = UNCHAINED_WORKER_ID,
207
+ }: {
208
+ types: Array<string>;
209
+ worker: string;
210
+ }): Promise<Work> => {
237
211
  // Find a work item that is scheduled for now and is not started.
238
212
  // Also:
239
213
  // - Restrict by types and worker if provided
@@ -259,8 +233,8 @@ export const configureWorkerModule = async ({
259
233
  return result;
260
234
  };
261
235
 
262
- const finishWork: WorkerModule['finishWork'] = async (
263
- workId,
236
+ const finishWork = async (
237
+ workId: string,
264
238
  {
265
239
  error,
266
240
  finished = new Date(),
@@ -268,8 +242,12 @@ export const configureWorkerModule = async ({
268
242
  started = new Date(),
269
243
  success,
270
244
  worker = UNCHAINED_WORKER_ID,
245
+ }: WorkResult<any> & {
246
+ finished?: Date;
247
+ started?: Date;
248
+ worker?: string;
271
249
  },
272
- ) => {
250
+ ): Promise<Work> => {
273
251
  const workBeforeUpdate = await WorkQueue.findOne(
274
252
  buildQuerySelector({ workId, status: [WorkStatus.ALLOCATED] }),
275
253
  );
@@ -310,88 +288,35 @@ export const configureWorkerModule = async ({
310
288
  return work;
311
289
  };
312
290
 
313
- const processNextWork: WorkerModule['processNextWork'] = async (unchainedAPI, workerId) => {
314
- const adapters = WorkerDirector.getAdapters();
315
-
316
- const alreadyAllocatedWork = await WorkQueue.aggregate(
317
- [
318
- {
319
- $match: {
320
- started: {
321
- $exists: true,
322
- },
323
- finished: {
324
- $exists: false,
325
- },
326
- deleted: {
327
- $exists: false,
328
- },
329
- },
330
- },
331
- {
332
- $group: {
333
- _id: '$type',
334
- count: {
335
- $sum: 1,
336
- },
337
- },
338
- },
339
- ],
340
- {
341
- allowDiskUse: false,
342
- },
343
- ).toArray();
344
-
345
- const allocationMap = Object.fromEntries(alreadyAllocatedWork.map((w) => [w._id, w.count]));
346
-
347
- const types = adapters
348
- .filter((adapter) => {
349
- // Filter out the external
350
- if (adapter.external) return false;
351
- if (
352
- adapter.maxParallelAllocations &&
353
- adapter.maxParallelAllocations <= allocationMap[adapter.type]
354
- )
355
- return false;
356
- return true;
357
- })
358
- .map((adapter) => adapter.type);
359
-
360
- const worker = workerId ?? UNCHAINED_WORKER_ID;
361
- const work = await allocateWork({
362
- types,
363
- worker,
364
- });
365
-
366
- if (work) {
367
- const output = await WorkerDirector.doWork(work, unchainedAPI);
368
-
369
- return finishWork(work._id, {
370
- ...output,
371
- finished: work.finished || new Date(),
372
- started: work.started,
373
- worker,
374
- });
375
- }
376
-
377
- return null;
378
- };
379
-
380
291
  return {
381
292
  // Queries
382
- activeWorkTypes: async () => {
293
+
294
+ workerId: UNCHAINED_WORKER_ID,
295
+
296
+ activeWorkTypes: async (): Promise<Array<string>> => {
383
297
  const typeList = await WorkQueue.aggregate([{ $group: { _id: '$type' } }]).toArray();
384
- return typeList
385
- .map((t) => t._id as string)
386
- .filter((type) => {
387
- return WorkerDirector.getActivePluginTypes().includes(type);
388
- });
298
+ return typeList.map((t) => t._id as string);
389
299
  },
390
300
 
391
- findWork: async ({ workId, originalWorkId }) =>
301
+ findWork: async ({
302
+ workId,
303
+ originalWorkId,
304
+ }: {
305
+ workId?: string;
306
+ originalWorkId?: string;
307
+ }): Promise<Work> =>
392
308
  WorkQueue.findOne(workId ? generateDbFilterById(workId) : { originalWorkId }, {}),
393
309
 
394
- findWorkQueue: async ({ limit, skip, sort, ...selectorOptions }) => {
310
+ findWorkQueue: async ({
311
+ limit,
312
+ skip,
313
+ sort,
314
+ ...selectorOptions
315
+ }: WorkQueueQuery & {
316
+ sort?: Array<SortOption>;
317
+ limit?: number;
318
+ skip?: number;
319
+ }): Promise<Array<Work>> => {
395
320
  const selector = buildQuerySelector(selectorOptions);
396
321
  return WorkQueue.find(selector, {
397
322
  skip,
@@ -400,11 +325,51 @@ export const configureWorkerModule = async ({
400
325
  }).toArray();
401
326
  },
402
327
 
403
- count: async (query) => {
328
+ count: async (query: WorkQueueQuery) => {
404
329
  return WorkQueue.countDocuments(buildQuerySelector(query));
405
330
  },
406
331
 
407
- workExists: async ({ workId, originalWorkId }) => {
332
+ allocationMap: async (): Promise<Record<string, number>> => {
333
+ const alreadyAllocatedWork = await WorkQueue.aggregate(
334
+ [
335
+ {
336
+ $match: {
337
+ started: {
338
+ $exists: true,
339
+ },
340
+ finished: {
341
+ $exists: false,
342
+ },
343
+ deleted: {
344
+ $exists: false,
345
+ },
346
+ },
347
+ },
348
+ {
349
+ $group: {
350
+ _id: '$type',
351
+ count: {
352
+ $sum: 1,
353
+ },
354
+ },
355
+ },
356
+ ],
357
+ {
358
+ allowDiskUse: false,
359
+ },
360
+ ).toArray();
361
+
362
+ const allocationMap = Object.fromEntries(alreadyAllocatedWork.map((w) => [w._id, w.count]));
363
+ return allocationMap;
364
+ },
365
+
366
+ workExists: async ({
367
+ workId,
368
+ originalWorkId,
369
+ }: {
370
+ workId?: string;
371
+ originalWorkId?: string;
372
+ }): Promise<boolean> => {
408
373
  const queueCount = await WorkQueue.countDocuments(
409
374
  workId ? generateDbFilterById(workId) : { originalWorkId },
410
375
  { limit: 1 },
@@ -412,16 +377,7 @@ export const configureWorkerModule = async ({
412
377
  return !!queueCount;
413
378
  },
414
379
 
415
- // Transformations
416
-
417
- type: (work) => {
418
- if (WorkerDirector.getActivePluginTypes().includes(work.type)) {
419
- return work.type;
420
- }
421
- return 'UNKNOWN';
422
- },
423
-
424
- status: (work) => {
380
+ status: (work: Work): WorkStatus => {
425
381
  if (work.deleted) {
426
382
  return WorkStatus.DELETED;
427
383
  }
@@ -452,11 +408,7 @@ export const configureWorkerModule = async ({
452
408
  originalWorkId,
453
409
  worker = null,
454
410
  retries = 20,
455
- }) => {
456
- if (!WorkerDirector.getAdapterByType(type)) {
457
- throw new Error(`No plugin registered for type ${type}`);
458
- }
459
-
411
+ }: WorkData): Promise<Work> => {
460
412
  const created = new Date();
461
413
  const { insertedId: workId } = await WorkQueue.insertOne({
462
414
  _id: generateDbObjectId(),
@@ -480,7 +432,7 @@ export const configureWorkerModule = async ({
480
432
  return work;
481
433
  },
482
434
 
483
- rescheduleWork: async (currentWork, scheduled) => {
435
+ rescheduleWork: async (currentWork: Work, scheduled: Date): Promise<Work> => {
484
436
  const work = await WorkQueue.findOneAndUpdate(
485
437
  generateDbFilterById(currentWork._id),
486
438
  {
@@ -502,7 +454,15 @@ export const configureWorkerModule = async ({
502
454
 
503
455
  allocateWork,
504
456
 
505
- ensureNoWork: async ({ type, priority = 0, scheduleId }) => {
457
+ ensureNoWork: async ({
458
+ type,
459
+ priority = 0,
460
+ scheduleId,
461
+ }: {
462
+ priority: number;
463
+ type: string;
464
+ scheduleId: string;
465
+ }): Promise<void> => {
506
466
  const query = buildQuerySelector({
507
467
  type,
508
468
  status: [WorkStatus.NEW],
@@ -527,7 +487,7 @@ export const configureWorkerModule = async ({
527
487
  originalWorkId,
528
488
  retries = 20,
529
489
  scheduleId,
530
- }) => {
490
+ }: WorkData): Promise<Work> => {
531
491
  const workId = `${scheduleId}:${scheduled.getTime()}`;
532
492
 
533
493
  const created = new Date();
@@ -588,11 +548,9 @@ export const configureWorkerModule = async ({
588
548
  }
589
549
  },
590
550
 
591
- processNextWork,
592
-
593
551
  finishWork,
594
552
 
595
- deleteWork: async (workId) => {
553
+ deleteWork: async (workId: string): Promise<Work> => {
596
554
  const workBeforeRemoval = await WorkQueue.findOne(
597
555
  buildQuerySelector({
598
556
  workId,
@@ -616,7 +574,15 @@ export const configureWorkerModule = async ({
616
574
  return work;
617
575
  },
618
576
 
619
- markOldWorkAsFailed: async ({ types, worker = UNCHAINED_WORKER_ID, referenceDate }) => {
577
+ markOldWorkAsFailed: async ({
578
+ types,
579
+ worker = UNCHAINED_WORKER_ID,
580
+ referenceDate,
581
+ }: {
582
+ types: Array<string>;
583
+ worker: string;
584
+ referenceDate: Date;
585
+ }): Promise<Array<Work>> => {
620
586
  const workQueue = await WorkQueue.find(
621
587
  buildQuerySelector({
622
588
  status: [WorkStatus.ALLOCATED],
@@ -644,22 +610,28 @@ export const configureWorkerModule = async ({
644
610
  );
645
611
  },
646
612
 
647
- getReport: async ({ types, from, to } = { types: null, from: null, to: null }) => {
613
+ getReport: async ({
614
+ types,
615
+ dateRange,
616
+ }: {
617
+ types?: Array<string>;
618
+ dateRange?: DateFilterInput;
619
+ }): Promise<WorkerReport[]> => {
648
620
  const pipeline = [];
649
621
  const matchConditions = [];
650
622
  // build date filter based on provided values it can be a range if both to and from is supplied
651
623
  // a upper or lowe limit if either from or to is provided
652
624
  // or all if none is provided
653
- if (from || to) {
625
+ if (dateRange?.start || dateRange?.end) {
654
626
  const dateConditions = [];
655
- if (from) {
656
- const fromDate = new Date(from);
627
+ if (dateRange?.start) {
628
+ const fromDate = new Date(dateRange?.start);
657
629
  dateConditions.push({
658
630
  $or: [{ created: { $gte: fromDate } }, { updated: { $gte: fromDate } }],
659
631
  });
660
632
  }
661
- if (to) {
662
- const toDate = new Date(to);
633
+ if (dateRange?.end) {
634
+ const toDate = new Date(dateRange?.end);
663
635
  dateConditions.push({
664
636
  $or: [{ created: { $lte: toDate } }, { updated: { $lte: toDate } }],
665
637
  });
@@ -724,3 +696,5 @@ export const configureWorkerModule = async ({
724
696
  },
725
697
  };
726
698
  };
699
+
700
+ export type WorkerModule = Awaited<ReturnType<typeof configureWorkerModule>>;
@@ -1,12 +1,3 @@
1
- export * from './types.js';
1
+ export * from './db/WorkQueueCollection.js';
2
2
 
3
3
  export * from './module/configureWorkerModule.js';
4
- export * from './director/WorkerDirector.js';
5
- export * from './director/WorkerAdapter.js';
6
- export { WorkStatus } from './director/WorkStatus.js';
7
- export { WorkerEventTypes } from './director/WorkerEventTypes.js';
8
-
9
- export * from './schedulers/FailedRescheduler.js';
10
- export * from './workers/BaseWorker.js';
11
- export * from './workers/EventListenerWorker.js';
12
- export * from './workers/IntervalWorker.js';
package/tsconfig.json CHANGED
@@ -1,11 +1,9 @@
1
1
  {
2
2
  "extends": "../shared/base.tsconfig.json",
3
3
  "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "lib",
4
+ "declarationDir": "./lib",
5
+ "rootDir": "./src",
6
+ "outDir": "./lib"
6
7
  },
7
- "exclude": ["**/*.test.ts", "**/*.test.js", "tests"],
8
- "include": [
9
- "./src"
10
- ]
11
- }
8
+ "exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
9
+ }
@@ -1,7 +0,0 @@
1
- export enum WorkStatus {
2
- NEW = 'NEW',
3
- ALLOCATED = 'ALLOCATED',
4
- SUCCESS = 'SUCCESS',
5
- FAILED = 'FAILED',
6
- DELETED = 'DELETED',
7
- }