@dotcom-tool-kit/base 1.2.2 → 1.3.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/CHANGELOG.md CHANGED
@@ -66,6 +66,29 @@
66
66
  * dependencies
67
67
  * @dotcom-tool-kit/logger bumped from ^4.1.1 to ^4.2.0
68
68
 
69
+ ## [1.3.0](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v1.2.3...base-v1.3.0) (2025-08-12)
70
+
71
+
72
+ ### Features
73
+
74
+ * add a Task.stop method and stop parallel tasks on error ([9d33d02](https://github.com/Financial-Times/dotcom-tool-kit/commit/9d33d02e734c04886d7e491e47bdac9f839ed509))
75
+
76
+ ## [1.2.3](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v1.2.2...base-v1.2.3) (2025-05-20)
77
+
78
+
79
+ ### Bug Fixes
80
+
81
+ * bump semver from 7.7.1 to 7.7.2 ([9f82a24](https://github.com/Financial-Times/dotcom-tool-kit/commit/9f82a24fca533d05ec0fad171ca2b72dc3d0fb96))
82
+ * bump winston from 3.14.2 to 3.17.0 ([c0bc4c7](https://github.com/Financial-Times/dotcom-tool-kit/commit/c0bc4c71af06ac26323c826f24896e735591ac1a))
83
+ * bump zod from 3.24.3 to 3.24.4 ([2059a64](https://github.com/Financial-Times/dotcom-tool-kit/commit/2059a64ff9ab1b246f5b4e6b5b66f465be596b9e))
84
+
85
+
86
+ ### Dependencies
87
+
88
+ * The following workspace dependencies were updated
89
+ * dependencies
90
+ * @dotcom-tool-kit/logger bumped from ^4.2.1 to ^4.2.2
91
+
69
92
  ## [1.2.2](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v1.2.1...base-v1.2.2) (2025-05-06)
70
93
 
71
94
 
package/lib/task.d.ts CHANGED
@@ -3,6 +3,7 @@ import { Base } from './base';
3
3
  import { typeSymbol } from './symbols';
4
4
  import type { Logger } from 'winston';
5
5
  import type { ValidConfig } from '@dotcom-tool-kit/config';
6
+ import { Plugin } from '@dotcom-tool-kit/plugin';
6
7
  import type { Default } from './type-utils';
7
8
  import type { ReadonlyDeep } from 'type-fest';
8
9
  export type TaskRunContext = {
@@ -18,17 +19,19 @@ export declare abstract class Task<Options extends {
18
19
  id: string;
19
20
  pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>;
20
21
  options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>;
22
+ plugin: Plugin;
21
23
  static get [typeSymbol](): symbol;
22
24
  get [typeSymbol](): symbol;
23
25
  logger: Logger;
24
- constructor(logger: Logger, id: string, pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>, options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>);
26
+ constructor(logger: Logger, id: string, pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>, options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>, plugin: Plugin);
25
27
  abstract run(runContext: TaskRunContext): Promise<void>;
28
+ stop(): Promise<void>;
26
29
  }
27
30
  export type TaskConstructor = {
28
31
  new <O extends {
29
32
  plugin: z.ZodTypeAny;
30
33
  task: z.ZodTypeAny;
31
- }>(logger: Logger, id: string, pluginOptions: Partial<z.infer<O['plugin']>>, options: Partial<z.infer<O['task']>>): Task<O>;
34
+ }>(logger: Logger, id: string, pluginOptions: Partial<z.infer<O['plugin']>>, options: Partial<z.infer<O['task']>>, plugin: Plugin): Task<O>;
32
35
  };
33
36
  export type TaskClass = TaskConstructor & typeof Task;
34
37
  //# sourceMappingURL=task.d.ts.map
package/lib/task.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;CAClC,CAAA;AAED,8BAAsB,IAAI,CACxB,OAAO,SAAS;IACd,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;IACrB,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;CACpB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CACxB,SAAQ,IAAI;IAaH,EAAE,EAAE,MAAM;IACV,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAdxF,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAEhC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAEzB;IAED,MAAM,EAAE,MAAM,CAAA;gBAGZ,MAAM,EAAE,MAAM,EACP,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACvF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAMxF,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CACxD;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAA;KAAE,EACzD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GACnC,IAAI,CAAC,CAAC,CAAC,CAAA;CACX,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,OAAO,IAAI,CAAA"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;CAClC,CAAA;AAED,8BAAsB,IAAI,CACxB,OAAO,SAAS;IACd,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;IACrB,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;CACpB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CACxB,SAAQ,IAAI;IAaH,EAAE,EAAE,MAAM;IACV,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,MAAM;IAfvB,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAEhC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAEzB;IAED,MAAM,EAAE,MAAM,CAAA;gBAGZ,MAAM,EAAE,MAAM,EACP,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACvF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAC/E,MAAM,EAAE,MAAM;IAMvB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAA;KAAE,EACzD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,IAAI,CAAC,CAAC,CAAC,CAAA;CACX,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,OAAO,IAAI,CAAA"}
package/lib/task.js CHANGED
@@ -7,6 +7,7 @@ class Task extends base_1.Base {
7
7
  id;
8
8
  pluginOptions;
9
9
  options;
10
+ plugin;
10
11
  static get [symbols_1.typeSymbol]() {
11
12
  return symbols_1.taskSymbol;
12
13
  }
@@ -14,12 +15,16 @@ class Task extends base_1.Base {
14
15
  return symbols_1.taskSymbol;
15
16
  }
16
17
  logger;
17
- constructor(logger, id, pluginOptions, options) {
18
+ constructor(logger, id, pluginOptions, options, plugin) {
18
19
  super();
19
20
  this.id = id;
20
21
  this.pluginOptions = pluginOptions;
21
22
  this.options = options;
23
+ this.plugin = plugin;
22
24
  this.logger = logger.child({ task: id });
23
25
  }
26
+ // not abstract for default behaviour of doing nothing
27
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
28
+ async stop() { }
24
29
  }
25
30
  exports.Task = Task;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcom-tool-kit/base",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "main": "lib",
6
6
  "scripts": {
@@ -11,19 +11,19 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "@dotcom-tool-kit/conflict": "^1.0.1",
14
- "@dotcom-tool-kit/logger": "^4.2.1",
14
+ "@dotcom-tool-kit/logger": "^4.2.2",
15
15
  "@dotcom-tool-kit/validated": "^1.0.3",
16
- "semver": "^7.5.4",
17
- "winston": "^3.11.0"
16
+ "semver": "^7.7.2",
17
+ "winston": "^3.17.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@dotcom-tool-kit/config": "^1.1.1",
21
21
  "@dotcom-tool-kit/plugin": "^1.1.0",
22
- "type-fest": "^4.29.1",
23
- "winston": "^3.11.0",
24
- "zod": "^3.24.3"
22
+ "type-fest": "^4.41.0",
23
+ "winston": "^3.17.0",
24
+ "zod": "^3.24.4"
25
25
  },
26
26
  "peerDependencies": {
27
- "zod": "^3.24.3"
27
+ "zod": "^3.24.4"
28
28
  }
29
29
  }
package/src/task.ts CHANGED
@@ -3,6 +3,7 @@ import { Base } from './base'
3
3
  import { taskSymbol, typeSymbol } from './symbols'
4
4
  import type { Logger } from 'winston'
5
5
  import type { ValidConfig } from '@dotcom-tool-kit/config'
6
+ import { Plugin } from '@dotcom-tool-kit/plugin'
6
7
  import type { Default } from './type-utils'
7
8
  import type { ReadonlyDeep } from 'type-fest'
8
9
 
@@ -33,13 +34,18 @@ export abstract class Task<
33
34
  logger: Logger,
34
35
  public id: string,
35
36
  public pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>,
36
- public options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>
37
+ public options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>,
38
+ public plugin: Plugin
37
39
  ) {
38
40
  super()
39
41
  this.logger = logger.child({ task: id })
40
42
  }
41
43
 
42
44
  abstract run(runContext: TaskRunContext): Promise<void>
45
+
46
+ // not abstract for default behaviour of doing nothing
47
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
48
+ async stop(): Promise<void> {}
43
49
  }
44
50
 
45
51
  export type TaskConstructor = {
@@ -47,7 +53,8 @@ export type TaskConstructor = {
47
53
  logger: Logger,
48
54
  id: string,
49
55
  pluginOptions: Partial<z.infer<O['plugin']>>,
50
- options: Partial<z.infer<O['task']>>
56
+ options: Partial<z.infer<O['task']>>,
57
+ plugin: Plugin
51
58
  ): Task<O>
52
59
  }
53
60