@dotcom-tool-kit/base 1.0.0 → 1.1.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 CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ### Dependencies
4
+
5
+ * The following workspace dependencies were updated
6
+ * devDependencies
7
+ * @dotcom-tool-kit/config bumped from ^1.0.3 to ^1.0.4
8
+
9
+ ## [1.1.0](https://github.com/Financial-Times/dotcom-tool-kit/compare/base-v1.0.0...base-v1.1.0) (2024-12-09)
10
+
11
+
12
+ ### Features
13
+
14
+ * pass config into taskruncontext ([435ffbc](https://github.com/Financial-Times/dotcom-tool-kit/commit/435ffbc74a81bdd159d4ea01943c6614ed1d3471))
15
+ * pass current command into task run context ([e4cf21c](https://github.com/Financial-Times/dotcom-tool-kit/commit/e4cf21c8c4e502b02918736b8b127097dba27572))
16
+ * pass task cwd through via TaskRunContext ([b12fe30](https://github.com/Financial-Times/dotcom-tool-kit/commit/b12fe30916e99e157e131a99fca6c59960b89f3a))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * freeze the config before passing it into tasks ([a0283b9](https://github.com/Financial-Times/dotcom-tool-kit/commit/a0283b9b5a48314a26ce04ce4c176ab5f4aacc07))
22
+
23
+
24
+ ### Dependencies
25
+
26
+ * The following workspace dependencies were updated
27
+ * dependencies
28
+ * @dotcom-tool-kit/validated bumped from ^1.0.0 to ^1.0.1
29
+ * devDependencies
30
+ * @dotcom-tool-kit/config bumped from ^1.0.2 to ^1.0.3
31
+ * @dotcom-tool-kit/logger bumped from ^4.0.0 to ^4.0.1
32
+
3
33
  ## 1.0.0 (2024-09-10)
4
34
 
5
35
 
package/lib/hook.d.ts CHANGED
@@ -4,28 +4,36 @@ 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 { Default } from './type-utils';
7
8
  export interface HookInstallation<Options = Record<string, unknown>> {
8
9
  options: Options;
9
10
  plugin: Plugin;
10
11
  forHook: string;
11
12
  hookConstructor: HookConstructor;
12
13
  }
13
- export declare abstract class Hook<Options extends z.ZodTypeAny = z.ZodTypeAny, State = void> extends Base {
14
+ export declare abstract class Hook<Options extends {
15
+ hook?: z.ZodTypeAny;
16
+ plugin?: z.ZodTypeAny;
17
+ } = Record<never, never>, State = unknown> extends Base {
14
18
  id: string;
15
- options: z.output<Options>;
19
+ options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>;
20
+ pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>;
16
21
  logger: Logger;
17
22
  installGroup?: string;
18
23
  static get [typeSymbol](): symbol;
19
24
  get [typeSymbol](): symbol;
20
25
  static mergeChildInstallations(plugin: Plugin, childInstallations: (HookInstallation | Conflict<HookInstallation>)[]): (HookInstallation | Conflict<HookInstallation>)[];
21
26
  static overrideChildInstallations(plugin: Plugin, parentInstallation: HookInstallation, _childInstallations: (HookInstallation | Conflict<HookInstallation>)[]): (HookInstallation | Conflict<HookInstallation>)[];
22
- constructor(logger: Logger, id: string, options: z.output<Options>);
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>>>>);
23
28
  abstract isInstalled(): Promise<boolean>;
24
29
  abstract install(state?: State): Promise<State>;
25
30
  commitInstall(_state: State): Promise<void>;
26
31
  }
27
32
  export type HookConstructor = {
28
- new (logger: Logger, id: string, options: z.output<z.ZodTypeAny>): Hook<z.ZodTypeAny, unknown>;
33
+ new <O extends {
34
+ plugin: z.ZodTypeAny;
35
+ hook: z.ZodTypeAny;
36
+ }>(logger: Logger, id: string, options: z.infer<O['hook']>, pluginOptions: z.infer<O['plugin']>): Hook<O, unknown>;
29
37
  };
30
38
  export type HookClass = HookConstructor & typeof Hook;
31
39
  //# 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;AAEhE,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,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAE,SAAQ,IAAI;IAsC7D,EAAE,EAAE,MAAM;IAAS,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IArChF,MAAM,EAAE,MAAM,CAAA;IAKd,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAEhC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAEzB;IAED,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GACpE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAWpD,MAAM,CAAC,0BAA0B,CAC/B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,gBAAgB,EACpC,mBAAmB,EAAE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GACrE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;gBAIxC,MAAM,EAAE,MAAM,EAAS,EAAE,EAAE,MAAM,EAAS,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAKhF,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACzC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;CAC/F,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,OAAO,IAAI,CAAA"}
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;IAwCH,EAAE,EAAE,MAAM;IACV,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,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;IAzChG,MAAM,EAAE,MAAM,CAAA;IAKd,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAEhC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAEzB;IAED,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GACpE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAWpD,MAAM,CAAC,0BAA0B,CAC/B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,gBAAgB,EACpC,mBAAmB,EAAE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GACrE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;gBAKlD,MAAM,EAAE,MAAM,EACP,EAAE,EAAE,MAAM,EACV,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,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;IAMhG,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACzC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD;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,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAC3B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAClC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,OAAO,IAAI,CAAA"}
package/lib/hook.js CHANGED
@@ -22,10 +22,11 @@ class Hook extends base_1.Base {
22
22
  static overrideChildInstallations(plugin, parentInstallation, _childInstallations) {
23
23
  return [parentInstallation];
24
24
  }
25
- constructor(logger, id, options) {
25
+ constructor(logger, id, options, pluginOptions) {
26
26
  super();
27
27
  this.id = id;
28
28
  this.options = options;
29
+ this.pluginOptions = pluginOptions;
29
30
  this.logger = logger.child({ hook: this.constructor.name });
30
31
  }
31
32
  async commitInstall(_state) {
package/lib/task.d.ts CHANGED
@@ -2,9 +2,14 @@ import type { z } from 'zod';
2
2
  import { Base } from './base';
3
3
  import { typeSymbol } from './symbols';
4
4
  import type { Logger } from 'winston';
5
- type Default<T, D> = T extends undefined ? D : T;
5
+ import type { ValidConfig } from '@dotcom-tool-kit/config';
6
+ import type { Default } from './type-utils';
7
+ import type { ReadonlyDeep } from 'type-fest';
6
8
  export type TaskRunContext = {
7
9
  files?: string[];
10
+ command: string;
11
+ cwd: string;
12
+ config: ReadonlyDeep<ValidConfig>;
8
13
  };
9
14
  export declare abstract class Task<Options extends {
10
15
  plugin?: z.ZodTypeAny;
@@ -26,5 +31,4 @@ export type TaskConstructor = {
26
31
  }>(logger: Logger, id: string, pluginOptions: Partial<z.infer<O['plugin']>>, options: Partial<z.infer<O['task']>>): Task<O>;
27
32
  };
28
33
  export type TaskClass = TaskConstructor & typeof Task;
29
- export {};
30
34
  //# 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;AAErC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,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,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"}
@@ -0,0 +1,2 @@
1
+ export type Default<T, D> = T extends undefined ? D : T;
2
+ //# sourceMappingURL=type-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../src/type-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcom-tool-kit/base",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "",
5
5
  "main": "lib",
6
6
  "scripts": {
@@ -11,13 +11,15 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "@dotcom-tool-kit/conflict": "^1.0.0",
14
- "@dotcom-tool-kit/validated": "^1.0.0",
14
+ "@dotcom-tool-kit/validated": "^1.0.1",
15
15
  "semver": "^7.5.4",
16
16
  "winston": "^3.11.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@dotcom-tool-kit/logger": "^4.0.0",
19
+ "@dotcom-tool-kit/config": "^1.0.4",
20
+ "@dotcom-tool-kit/logger": "^4.0.1",
20
21
  "@dotcom-tool-kit/plugin": "^1.0.0",
22
+ "type-fest": "^4.29.1",
21
23
  "winston": "^3.11.0",
22
24
  "zod": "^3.22.4"
23
25
  },
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 type { Default } from './type-utils'
7
8
 
8
9
  export interface HookInstallation<Options = Record<string, unknown>> {
9
10
  options: Options
@@ -12,7 +13,13 @@ export interface HookInstallation<Options = Record<string, unknown>> {
12
13
  hookConstructor: HookConstructor
13
14
  }
14
15
 
15
- export abstract class Hook<Options extends z.ZodTypeAny = z.ZodTypeAny, State = void> extends Base {
16
+ export abstract class Hook<
17
+ Options extends {
18
+ hook?: z.ZodTypeAny
19
+ plugin?: z.ZodTypeAny
20
+ } = Record<never, never>,
21
+ State = unknown
22
+ > extends Base {
16
23
  logger: Logger
17
24
  // This field is used to collect hooks that share state when running their
18
25
  // install methods. All hooks in the same group will run their install method
@@ -50,7 +57,12 @@ export abstract class Hook<Options extends z.ZodTypeAny = z.ZodTypeAny, State =
50
57
  return [parentInstallation]
51
58
  }
52
59
 
53
- constructor(logger: Logger, public id: string, public options: z.output<Options>) {
60
+ constructor(
61
+ logger: Logger,
62
+ public id: string,
63
+ public options: z.output<Default<Options['hook'], z.ZodObject<Record<string, never>>>>,
64
+ public pluginOptions: z.output<Default<Options['plugin'], z.ZodObject<Record<string, never>>>>
65
+ ) {
54
66
  super()
55
67
  this.logger = logger.child({ hook: this.constructor.name })
56
68
  }
@@ -63,7 +75,12 @@ export abstract class Hook<Options extends z.ZodTypeAny = z.ZodTypeAny, State =
63
75
  }
64
76
 
65
77
  export type HookConstructor = {
66
- new (logger: Logger, id: string, options: z.output<z.ZodTypeAny>): Hook<z.ZodTypeAny, unknown>
78
+ new <O extends { plugin: z.ZodTypeAny; hook: z.ZodTypeAny }>(
79
+ logger: Logger,
80
+ id: string,
81
+ options: z.infer<O['hook']>,
82
+ pluginOptions: z.infer<O['plugin']>
83
+ ): Hook<O, unknown>
67
84
  }
68
85
 
69
86
  export type HookClass = HookConstructor & typeof Hook
package/src/task.ts CHANGED
@@ -2,11 +2,15 @@ import type { z } from 'zod'
2
2
  import { Base } from './base'
3
3
  import { taskSymbol, typeSymbol } from './symbols'
4
4
  import type { Logger } from 'winston'
5
-
6
- type Default<T, D> = T extends undefined ? D : T
5
+ import type { ValidConfig } from '@dotcom-tool-kit/config'
6
+ import type { Default } from './type-utils'
7
+ import type { ReadonlyDeep } from 'type-fest'
7
8
 
8
9
  export type TaskRunContext = {
9
10
  files?: string[]
11
+ command: string
12
+ cwd: string
13
+ config: ReadonlyDeep<ValidConfig>
10
14
  }
11
15
 
12
16
  export abstract class Task<
@@ -0,0 +1 @@
1
+ export type Default<T, D> = T extends undefined ? D : T
package/tsconfig.json CHANGED
@@ -12,6 +12,9 @@
12
12
  },
13
13
  {
14
14
  "path": "../validated"
15
+ },
16
+ {
17
+ "path": "../config"
15
18
  }
16
19
  ],
17
20
  "compilerOptions": {