dotcom-tool-kit 4.0.0-beta.2 → 4.0.0-beta.3

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/lib/config.js CHANGED
@@ -111,7 +111,7 @@ async function loadConfig(logger, { validate = true } = {}) {
111
111
  const invalidOptions = (0, options_1.validatePluginOptions)(logger, validPluginConfig);
112
112
  if (invalidOptions.length > 0 && validate) {
113
113
  const error = new error_1.ToolKitError('There are problems with your plugin options.');
114
- error.details = (0, messages_1.formatInvalidOptions)(invalidOptions);
114
+ error.details = (0, messages_1.formatInvalidPluginOptions)(invalidOptions);
115
115
  throw error;
116
116
  }
117
117
  (0, options_1.substituteOptionTags)(validRootPlugin, validPluginConfig);
package/lib/messages.d.ts CHANGED
@@ -8,7 +8,8 @@ export declare const formatCommandTaskConflicts: (conflicts: Conflict<CommandTas
8
8
  export declare const formatPluginOptionConflicts: (conflicts: Conflict<OptionsForPlugin>[]) => string;
9
9
  export declare const formatTaskOptionConflicts: (conflicts: Conflict<OptionsForTask>[]) => string;
10
10
  export type InvalidOption = [string, z.ZodError];
11
- export declare const formatInvalidOptions: (invalidOptions: InvalidOption[]) => string;
11
+ export declare const formatInvalidOption: ([id, error]: InvalidOption) => string;
12
+ export declare const formatInvalidPluginOptions: (invalidOptions: InvalidOption[]) => string;
12
13
  export declare const formatUnusedPluginOptions: (unusedOptions: string[], definedPlugins: string[]) => string;
13
14
  export declare const formatUnusedTaskOptions: (unusedOptions: string[], definedTasks: string[]) => string;
14
15
  export declare const formatUninstalledHooks: (uninstalledHooks: Hook<z.ZodTypeAny, unknown>[]) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,EACf,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAOzD,eAAO,MAAM,mBAAmB,cAAe,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,KAAG,MAKT,CAAA;AAOzE,eAAO,MAAM,mBAAmB,cAAe,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,KAAG,MAKT,CAAA;AAezE,eAAO,MAAM,0BAA0B,cAAe,SAAS,WAAW,CAAC,EAAE,KAAG,MAQ/E,CAAA;AAOD,eAAO,MAAM,2BAA2B,cAAe,SAAS,gBAAgB,CAAC,EAAE,KAAG,MAUrF,CAAA;AAOD,eAAO,MAAM,yBAAyB,cAAe,SAAS,cAAc,CAAC,EAAE,KAAG,MAUjF,CAAA;AAKD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;AAEhD,eAAO,MAAM,oBAAoB,mBACf,aAAa,EAAE,KAC9B,MAOF,CAAA;AAED,eAAO,MAAM,yBAAyB,kBACrB,MAAM,EAAE,kBACP,MAAM,EAAE,KACvB,MAWF,CAAA;AAED,eAAO,MAAM,uBAAuB,kBACnB,MAAM,EAAE,gBACT,MAAM,EAAE,KACrB,MAWF,CAAA;AAED,eAAO,MAAM,sBAAsB,qBACf,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,KAC9C,MAKF,CAAA;AAED,KAAK,OAAO,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,CAAA;AAOhE,eAAO,MAAM,kBAAkB,iBACf,OAAO,EAAE,SAChB,MAAM,EAAE,KACd,MAOF,CAAA;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAezD;AAED,eAAO,MAAM,aAAa,YAAa,MAAM,KAAG,MAAwC,CAAA"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,EACf,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAOzD,eAAO,MAAM,mBAAmB,cAAe,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,KAAG,MAKT,CAAA;AAOzE,eAAO,MAAM,mBAAmB,cAAe,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,KAAG,MAKT,CAAA;AAezE,eAAO,MAAM,0BAA0B,cAAe,SAAS,WAAW,CAAC,EAAE,KAAG,MAQ/E,CAAA;AAOD,eAAO,MAAM,2BAA2B,cAAe,SAAS,gBAAgB,CAAC,EAAE,KAAG,MAUrF,CAAA;AAOD,eAAO,MAAM,yBAAyB,cAAe,SAAS,cAAc,CAAC,EAAE,KAAG,MAUjF,CAAA;AAKD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;AAEhD,eAAO,MAAM,mBAAmB,kCAAiC,MACI,CAAA;AAErE,eAAO,MAAM,0BAA0B,mBACrB,aAAa,EAAE,KAC9B,MAKF,CAAA;AAED,eAAO,MAAM,yBAAyB,kBACrB,MAAM,EAAE,kBACP,MAAM,EAAE,KACvB,MAWF,CAAA;AAED,eAAO,MAAM,uBAAuB,kBACnB,MAAM,EAAE,gBACT,MAAM,EAAE,KACrB,MAWF,CAAA;AAED,eAAO,MAAM,sBAAsB,qBACf,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,KAC9C,MAKF,CAAA;AAED,KAAK,OAAO,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,CAAA;AAOhE,eAAO,MAAM,kBAAkB,iBACf,OAAO,EAAE,SAChB,MAAM,EAAE,KACd,MAOF,CAAA;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAezD;AAED,eAAO,MAAM,aAAa,YAAa,MAAM,KAAG,MAAwC,CAAA"}
package/lib/messages.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.indentReasons = exports.formatPluginTree = exports.formatMissingTasks = exports.formatUninstalledHooks = exports.formatUnusedTaskOptions = exports.formatUnusedPluginOptions = exports.formatInvalidOptions = exports.formatTaskOptionConflicts = exports.formatPluginOptionConflicts = exports.formatCommandTaskConflicts = exports.formatHookConflicts = exports.formatTaskConflicts = void 0;
3
+ exports.indentReasons = exports.formatPluginTree = exports.formatMissingTasks = exports.formatUninstalledHooks = exports.formatUnusedTaskOptions = exports.formatUnusedPluginOptions = exports.formatInvalidPluginOptions = exports.formatInvalidOption = exports.formatTaskOptionConflicts = exports.formatPluginOptionConflicts = exports.formatCommandTaskConflicts = exports.formatHookConflicts = exports.formatTaskConflicts = void 0;
4
4
  const logger_1 = require("@dotcom-tool-kit/logger");
5
5
  const zod_validation_error_1 = require("zod-validation-error");
6
6
  const formatTaskConflict = ([key, conflict]) => `- ${logger_1.styles.task(key ?? 'unknown task')} ${logger_1.styles.dim('from plugins')} ${conflict.conflicting
@@ -51,15 +51,15 @@ You must resolve this conflict by providing options in your app's Tool Kit confi
51
51
  `;
52
52
  exports.formatTaskOptionConflicts = formatTaskOptionConflicts;
53
53
  const formatPlugin = (plugin) => plugin.id === 'app root' ? logger_1.styles.app('your app') : `plugin ${logger_1.styles.plugin(plugin.id)}`;
54
- const formatInvalidOptions = (invalidOptions) => `Options are defined in your Tool Kit configuration that are the wrong types:
54
+ const formatInvalidOption = ([id, error]) => (0, zod_validation_error_1.fromZodError)(error, { prefix: `- ${id} has the issue(s)` }).message;
55
+ exports.formatInvalidOption = formatInvalidOption;
56
+ const formatInvalidPluginOptions = (invalidOptions) => `Options are defined in your Tool Kit configuration that are the wrong types:
55
57
 
56
- ${invalidOptions
57
- .map(([plugin, error]) => (0, zod_validation_error_1.fromZodError)(error, { prefix: `- ${logger_1.styles.plugin(plugin)} has the issue(s)` }).message)
58
- .join('\n')}
58
+ ${invalidOptions.map(([plugin, error]) => (0, exports.formatInvalidOption)([logger_1.styles.plugin(plugin), error])).join('\n')}
59
59
 
60
60
  Please update the options so that they are the expected types. You can refer to the README for the plugin for examples and descriptions of the options used.
61
61
  `;
62
- exports.formatInvalidOptions = formatInvalidOptions;
62
+ exports.formatInvalidPluginOptions = formatInvalidPluginOptions;
63
63
  const formatUnusedPluginOptions = (unusedOptions, definedPlugins) => `Options are defined in your Tool Kit configuration for plugins that don't exist:
64
64
 
65
65
  ${unusedOptions.map((optionName) => `- ${logger_1.styles.plugin(optionName)}`).join('\n')}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AA8CrC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DlG"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAsDrC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DlG"}
package/lib/tasks.js CHANGED
@@ -11,17 +11,26 @@ const install_1 = require("./install");
11
11
  const logger_1 = require("@dotcom-tool-kit/logger");
12
12
  const fetch_1 = require("./fetch");
13
13
  const init_1 = require("./init");
14
+ const messages_1 = require("./messages");
14
15
  const schemas_1 = require("@dotcom-tool-kit/schemas");
15
16
  const loadTasks = async (logger, tasks, config) => {
16
17
  const taskResults = await Promise.all(tasks.map(async ({ task: taskId, options }) => {
17
18
  const entryPoint = config.tasks[taskId];
18
19
  const taskResult = await (0, entry_point_1.importEntryPoint)(base_1.Task, entryPoint);
19
- return taskResult.map((Task) => {
20
+ return taskResult.flatMap((Task) => {
20
21
  const taskSchema = schemas_1.TaskSchemas[taskId];
21
22
  const configOptions = config.taskOptions[taskId]?.options ?? {};
22
- const parsedOptions = taskSchema ? taskSchema.parse({ ...configOptions, ...options }) : {};
23
- const task = new Task(logger, taskId, (0, options_1.getOptions)(entryPoint.plugin.id) ?? {}, parsedOptions);
24
- return [taskId, task];
23
+ const parsedOptions = taskSchema?.safeParse({ ...configOptions, ...options }) ?? {
24
+ success: true,
25
+ data: {}
26
+ };
27
+ if (parsedOptions.success) {
28
+ const task = new Task(logger, taskId, (0, options_1.getOptions)(entryPoint.plugin.id) ?? {}, parsedOptions);
29
+ return (0, validated_1.valid)([taskId, task]);
30
+ }
31
+ else {
32
+ return (0, validated_1.invalid)([(0, messages_1.formatInvalidOption)([logger_1.styles.task(taskId), parsedOptions.error])]);
33
+ }
25
34
  });
26
35
  }));
27
36
  return (0, validated_1.reduceValidated)(taskResults).map(Object.fromEntries);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dotcom-tool-kit",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.0.0-beta.3",
4
4
  "description": "modern, maintainable, modular developer tooling for FT.com projects",
5
5
  "author": "FT.com Platforms Team <platforms-team.customer-products@ft.com>",
6
6
  "license": "MIT",