@dotcom-tool-kit/base 2.0.1-beta.1 → 2.1.0-beta.1
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 +16 -1
- package/lib/hook.d.ts +4 -2
- package/lib/hook.d.ts.map +1 -1
- package/lib/hook.js +6 -1
- package/lib/task.d.ts +4 -2
- package/lib/task.d.ts.map +1 -1
- package/lib/task.js +6 -1
- package/package.json +5 -4
- package/src/hook.ts +8 -2
- package/src/task.ts +8 -2
- package/tsconfig.json +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -66,13 +66,28 @@
|
|
|
66
66
|
* dependencies
|
|
67
67
|
* @dotcom-tool-kit/logger bumped from ^4.1.1 to ^4.2.0
|
|
68
68
|
|
|
69
|
-
## [2.0
|
|
69
|
+
## [2.1.0](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v2.0.0...base-v2.1.0) (2026-01-13)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Features
|
|
73
|
+
|
|
74
|
+
* **telemetry:** add package to send client side metrics ([fcdea77](https://github.com/Financial-Times/dotcom-tool-kit/commit/fcdea779f0f95e635a100fbf62a1b7e3d31a45d4))
|
|
70
75
|
|
|
71
76
|
|
|
72
77
|
### Bug Fixes
|
|
73
78
|
|
|
74
79
|
* it's not a conflict if there's only one child installation lol ([afa7863](https://github.com/Financial-Times/dotcom-tool-kit/commit/afa7863554744a65887507e9fea52b203fbb8cbb))
|
|
75
80
|
|
|
81
|
+
|
|
82
|
+
### Dependencies
|
|
83
|
+
|
|
84
|
+
* The following workspace dependencies were updated
|
|
85
|
+
* dependencies
|
|
86
|
+
* @dotcom-tool-kit/conflict bumped from ^2.0.0 to ^2.0.1
|
|
87
|
+
* devDependencies
|
|
88
|
+
* @dotcom-tool-kit/config bumped from ^2.0.0 to ^2.0.1
|
|
89
|
+
* @dotcom-tool-kit/plugin bumped from ^2.0.0 to ^2.1.0
|
|
90
|
+
|
|
76
91
|
## [2.0.0](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v1.3.1...base-v2.0.0) (2025-10-28)
|
|
77
92
|
|
|
78
93
|
|
package/lib/hook.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { typeSymbol } from './symbols';
|
|
|
4
4
|
import type { z } from 'zod';
|
|
5
5
|
import type { Plugin } from '@dotcom-tool-kit/plugin';
|
|
6
6
|
import { Conflict } from '@dotcom-tool-kit/conflict';
|
|
7
|
+
import { type TelemetryRecorder } from '@dotcom-tool-kit/telemetry';
|
|
7
8
|
import type { Default } from './type-utils';
|
|
8
9
|
export interface HookInstallation<Options = Record<string, unknown>> {
|
|
9
10
|
options: Options;
|
|
@@ -19,12 +20,13 @@ export declare abstract class Hook<Options extends {
|
|
|
19
20
|
options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>;
|
|
20
21
|
pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>;
|
|
21
22
|
logger: Logger;
|
|
23
|
+
metrics: TelemetryRecorder;
|
|
22
24
|
installGroup?: string;
|
|
23
25
|
static get [typeSymbol](): symbol;
|
|
24
26
|
get [typeSymbol](): symbol;
|
|
25
27
|
static mergeChildInstallations(plugin: Plugin, childInstallations: (HookInstallation | Conflict<HookInstallation>)[]): (HookInstallation | Conflict<HookInstallation>)[];
|
|
26
28
|
static overrideChildInstallations(plugin: Plugin, parentInstallation: HookInstallation, _childInstallations: (HookInstallation | Conflict<HookInstallation>)[]): (HookInstallation | Conflict<HookInstallation>)[];
|
|
27
|
-
constructor(logger: Logger, id: string, options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>, pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never
|
|
29
|
+
constructor(logger: Logger, id: string, options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>, pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>, metrics?: TelemetryRecorder);
|
|
28
30
|
abstract isInstalled(): Promise<boolean>;
|
|
29
31
|
abstract install(state?: State): Promise<State>;
|
|
30
32
|
commitInstall(_state: State): Promise<void>;
|
|
@@ -33,7 +35,7 @@ export type HookConstructor = {
|
|
|
33
35
|
new <O extends {
|
|
34
36
|
plugin: z.ZodTypeAny;
|
|
35
37
|
hook: z.ZodTypeAny;
|
|
36
|
-
}>(logger: Logger, id: string, options: z.infer<O['hook']>, pluginOptions: z.infer<O['plugin']
|
|
38
|
+
}>(logger: Logger, id: string, options: z.infer<O['hook']>, pluginOptions: z.infer<O['plugin']>, metrics?: TelemetryRecorder): Hook<O, unknown>;
|
|
37
39
|
};
|
|
38
40
|
export type HookClass = HookConstructor & typeof Hook;
|
|
39
41
|
//# sourceMappingURL=hook.d.ts.map
|
package/lib/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAc,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,8BAAsB,IAAI,CACxB,OAAO,SAAS;IACd,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;CACtB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACxB,KAAK,GAAG,OAAO,CACf,SAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
package/lib/hook.js
CHANGED
|
@@ -4,11 +4,13 @@ exports.Hook = void 0;
|
|
|
4
4
|
const base_1 = require("./base");
|
|
5
5
|
const symbols_1 = require("./symbols");
|
|
6
6
|
const conflict_1 = require("@dotcom-tool-kit/conflict");
|
|
7
|
+
const telemetry_1 = require("@dotcom-tool-kit/telemetry");
|
|
7
8
|
class Hook extends base_1.Base {
|
|
8
9
|
id;
|
|
9
10
|
options;
|
|
10
11
|
pluginOptions;
|
|
11
12
|
logger;
|
|
13
|
+
metrics;
|
|
12
14
|
// This field is used to collect hooks that share state when running their
|
|
13
15
|
// install methods. All hooks in the same group will run their install method
|
|
14
16
|
// one after the other, and then their commitInstall method will be run with
|
|
@@ -34,12 +36,15 @@ class Hook extends base_1.Base {
|
|
|
34
36
|
static overrideChildInstallations(plugin, parentInstallation, _childInstallations) {
|
|
35
37
|
return [parentInstallation];
|
|
36
38
|
}
|
|
37
|
-
constructor(logger, id, options, pluginOptions
|
|
39
|
+
constructor(logger, id, options, pluginOptions,
|
|
40
|
+
// TODO:IM:20251215 make this a required parameter in the next major version
|
|
41
|
+
metrics = new telemetry_1.MockTelemetryClient()) {
|
|
38
42
|
super();
|
|
39
43
|
this.id = id;
|
|
40
44
|
this.options = options;
|
|
41
45
|
this.pluginOptions = pluginOptions;
|
|
42
46
|
this.logger = logger.child({ hook: this.constructor.name });
|
|
47
|
+
this.metrics = metrics.scoped({ hook: this.constructor.name });
|
|
43
48
|
}
|
|
44
49
|
async commitInstall(_state) {
|
|
45
50
|
return;
|
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 { type TelemetryRecorder } from '@dotcom-tool-kit/telemetry';
|
|
6
7
|
import { Plugin } from '@dotcom-tool-kit/plugin';
|
|
7
8
|
import type { Default } from './type-utils';
|
|
8
9
|
import type { ReadonlyDeep } from 'type-fest';
|
|
@@ -23,7 +24,8 @@ export declare abstract class Task<Options extends {
|
|
|
23
24
|
static get [typeSymbol](): symbol;
|
|
24
25
|
get [typeSymbol](): symbol;
|
|
25
26
|
logger: Logger;
|
|
26
|
-
|
|
27
|
+
metrics: TelemetryRecorder;
|
|
28
|
+
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, metrics?: TelemetryRecorder);
|
|
27
29
|
abstract run(runContext: TaskRunContext): Promise<void>;
|
|
28
30
|
stop(): Promise<void>;
|
|
29
31
|
}
|
|
@@ -31,7 +33,7 @@ export type TaskConstructor = {
|
|
|
31
33
|
new <O extends {
|
|
32
34
|
plugin: z.ZodTypeAny;
|
|
33
35
|
task: z.ZodTypeAny;
|
|
34
|
-
}>(logger: Logger, id: string, pluginOptions: Partial<z.infer<O['plugin']>>, options: Partial<z.infer<O['task']>>, plugin: Plugin): Task<O>;
|
|
36
|
+
}>(logger: Logger, id: string, pluginOptions: Partial<z.infer<O['plugin']>>, options: Partial<z.infer<O['task']>>, plugin: Plugin, metrics?: TelemetryRecorder): Task<O>;
|
|
35
37
|
};
|
|
36
38
|
export type TaskClass = TaskConstructor & typeof Task;
|
|
37
39
|
//# 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,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;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"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"}
|
package/lib/task.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Task = void 0;
|
|
4
4
|
const base_1 = require("./base");
|
|
5
5
|
const symbols_1 = require("./symbols");
|
|
6
|
+
const telemetry_1 = require("@dotcom-tool-kit/telemetry");
|
|
6
7
|
class Task extends base_1.Base {
|
|
7
8
|
id;
|
|
8
9
|
pluginOptions;
|
|
@@ -15,13 +16,17 @@ class Task extends base_1.Base {
|
|
|
15
16
|
return symbols_1.taskSymbol;
|
|
16
17
|
}
|
|
17
18
|
logger;
|
|
18
|
-
|
|
19
|
+
metrics;
|
|
20
|
+
constructor(logger, id, pluginOptions, options, plugin,
|
|
21
|
+
// TODO:IM:20251215 make this a required parameter in the next major version
|
|
22
|
+
metrics = new telemetry_1.MockTelemetryClient()) {
|
|
19
23
|
super();
|
|
20
24
|
this.id = id;
|
|
21
25
|
this.pluginOptions = pluginOptions;
|
|
22
26
|
this.options = options;
|
|
23
27
|
this.plugin = plugin;
|
|
24
28
|
this.logger = logger.child({ task: id });
|
|
29
|
+
this.metrics = metrics.scoped({ task: id });
|
|
25
30
|
}
|
|
26
31
|
// not abstract for default behaviour of doing nothing
|
|
27
32
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotcom-tool-kit/base",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib",
|
|
6
6
|
"scripts": {
|
|
@@ -10,15 +10,16 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dotcom-tool-kit/conflict": "^2.0.
|
|
13
|
+
"@dotcom-tool-kit/conflict": "^2.0.1-beta.1",
|
|
14
14
|
"@dotcom-tool-kit/logger": "^5.0.0",
|
|
15
|
+
"@dotcom-tool-kit/telemetry": "^1.0.0",
|
|
15
16
|
"@dotcom-tool-kit/validated": "^2.0.0",
|
|
16
17
|
"semver": "^7.7.3",
|
|
17
18
|
"winston": "^3.17.0"
|
|
18
19
|
},
|
|
19
20
|
"devDependencies": {
|
|
20
|
-
"@dotcom-tool-kit/config": "^2.0.
|
|
21
|
-
"@dotcom-tool-kit/plugin": "^2.0.
|
|
21
|
+
"@dotcom-tool-kit/config": "^2.0.1-beta.1",
|
|
22
|
+
"@dotcom-tool-kit/plugin": "^2.1.0-beta.1",
|
|
22
23
|
"type-fest": "^4.41.0",
|
|
23
24
|
"winston": "^3.17.0",
|
|
24
25
|
"zod": "^3.24.4"
|
package/src/hook.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { hookSymbol, typeSymbol } from './symbols'
|
|
|
4
4
|
import type { z } from 'zod'
|
|
5
5
|
import type { Plugin } from '@dotcom-tool-kit/plugin'
|
|
6
6
|
import { Conflict, isConflict } from '@dotcom-tool-kit/conflict'
|
|
7
|
+
import { MockTelemetryClient, type TelemetryRecorder } from '@dotcom-tool-kit/telemetry'
|
|
7
8
|
import type { Default } from './type-utils'
|
|
8
9
|
|
|
9
10
|
export interface HookInstallation<Options = Record<string, unknown>> {
|
|
@@ -21,6 +22,7 @@ export abstract class Hook<
|
|
|
21
22
|
State = unknown
|
|
22
23
|
> extends Base {
|
|
23
24
|
logger: Logger
|
|
25
|
+
metrics: TelemetryRecorder
|
|
24
26
|
// This field is used to collect hooks that share state when running their
|
|
25
27
|
// install methods. All hooks in the same group will run their install method
|
|
26
28
|
// one after the other, and then their commitInstall method will be run with
|
|
@@ -65,10 +67,13 @@ export abstract class Hook<
|
|
|
65
67
|
logger: Logger,
|
|
66
68
|
public id: string,
|
|
67
69
|
public options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>,
|
|
68
|
-
public pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never
|
|
70
|
+
public pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>,
|
|
71
|
+
// TODO:IM:20251215 make this a required parameter in the next major version
|
|
72
|
+
metrics: TelemetryRecorder = new MockTelemetryClient()
|
|
69
73
|
) {
|
|
70
74
|
super()
|
|
71
75
|
this.logger = logger.child({ hook: this.constructor.name })
|
|
76
|
+
this.metrics = metrics.scoped({ hook: this.constructor.name })
|
|
72
77
|
}
|
|
73
78
|
|
|
74
79
|
abstract isInstalled(): Promise<boolean>
|
|
@@ -83,7 +88,8 @@ export type HookConstructor = {
|
|
|
83
88
|
logger: Logger,
|
|
84
89
|
id: string,
|
|
85
90
|
options: z.infer<O['hook']>,
|
|
86
|
-
pluginOptions: z.infer<O['plugin']
|
|
91
|
+
pluginOptions: z.infer<O['plugin']>,
|
|
92
|
+
metrics?: TelemetryRecorder
|
|
87
93
|
): Hook<O, unknown>
|
|
88
94
|
}
|
|
89
95
|
|
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 { MockTelemetryClient, type TelemetryRecorder } from '@dotcom-tool-kit/telemetry'
|
|
6
7
|
import { Plugin } from '@dotcom-tool-kit/plugin'
|
|
7
8
|
import type { Default } from './type-utils'
|
|
8
9
|
import type { ReadonlyDeep } from 'type-fest'
|
|
@@ -29,16 +30,20 @@ export abstract class Task<
|
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
logger: Logger
|
|
33
|
+
metrics: TelemetryRecorder
|
|
32
34
|
|
|
33
35
|
constructor(
|
|
34
36
|
logger: Logger,
|
|
35
37
|
public id: string,
|
|
36
38
|
public pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>,
|
|
37
39
|
public options: z.output<Default<Options['task'], z.ZodObject<Record<string, never>>>>,
|
|
38
|
-
public plugin: Plugin
|
|
40
|
+
public plugin: Plugin,
|
|
41
|
+
// TODO:IM:20251215 make this a required parameter in the next major version
|
|
42
|
+
metrics: TelemetryRecorder = new MockTelemetryClient()
|
|
39
43
|
) {
|
|
40
44
|
super()
|
|
41
45
|
this.logger = logger.child({ task: id })
|
|
46
|
+
this.metrics = metrics.scoped({ task: id })
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
abstract run(runContext: TaskRunContext): Promise<void>
|
|
@@ -54,7 +59,8 @@ export type TaskConstructor = {
|
|
|
54
59
|
id: string,
|
|
55
60
|
pluginOptions: Partial<z.infer<O['plugin']>>,
|
|
56
61
|
options: Partial<z.infer<O['task']>>,
|
|
57
|
-
plugin: Plugin
|
|
62
|
+
plugin: Plugin,
|
|
63
|
+
metrics?: TelemetryRecorder
|
|
58
64
|
): Task<O>
|
|
59
65
|
}
|
|
60
66
|
|