@hubspot/cli 7.5.3-experimental.0 → 7.5.4-experimental.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.
Files changed (47) hide show
  1. package/api/migrate.d.ts +1 -2
  2. package/api/migrate.js +0 -7
  3. package/bin/cli.js +2 -0
  4. package/commands/account/auth.d.ts +10 -0
  5. package/commands/account/auth.js +168 -0
  6. package/commands/account/clean.js +38 -5
  7. package/commands/account/createOverride.d.ts +10 -0
  8. package/commands/account/createOverride.js +104 -0
  9. package/commands/account/info.js +23 -0
  10. package/commands/account/list.js +23 -7
  11. package/commands/account/remove.js +28 -0
  12. package/commands/account/removeOverride.d.ts +10 -0
  13. package/commands/account/removeOverride.js +76 -0
  14. package/commands/account/use.js +13 -0
  15. package/commands/account.js +7 -2
  16. package/commands/auth.js +6 -2
  17. package/commands/config/migrate.d.ts +10 -0
  18. package/commands/config/migrate.js +84 -0
  19. package/commands/config/set.d.ts +10 -0
  20. package/commands/config/set.js +29 -29
  21. package/commands/config.d.ts +4 -1
  22. package/commands/config.js +45 -11
  23. package/commands/init.js +9 -10
  24. package/commands/project.js +0 -2
  25. package/lang/en.js +5 -0
  26. package/lang/en.lyaml +89 -16
  27. package/lib/app/migrate.d.ts +2 -2
  28. package/lib/app/migrate.js +35 -77
  29. package/lib/app/migrate_legacy.js +3 -5
  30. package/lib/configMigrate.d.ts +2 -0
  31. package/lib/configMigrate.js +104 -0
  32. package/lib/doctor/Diagnosis.d.ts +1 -2
  33. package/lib/doctor/Diagnosis.js +10 -6
  34. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -0
  35. package/lib/doctor/DiagnosticInfoBuilder.js +1 -0
  36. package/lib/doctor/Doctor.d.ts +1 -0
  37. package/lib/doctor/Doctor.js +18 -0
  38. package/lib/middleware/configMiddleware.js +5 -1
  39. package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
  40. package/lib/middleware/fireAlarmMiddleware.js +137 -0
  41. package/lib/projects/index.d.ts +2 -3
  42. package/lib/ui/index.d.ts +1 -0
  43. package/lib/ui/index.js +5 -0
  44. package/package.json +5 -4
  45. package/types/Yargs.d.ts +3 -6
  46. package/commands/project/migrate.d.ts +0 -8
  47. package/commands/project/migrate.js +0 -48
@@ -8,6 +8,7 @@ const config_1 = require("@hubspot/local-dev-lib/config");
8
8
  const usageTracking_1 = require("../../lib/usageTracking");
9
9
  const lang_1 = require("../../lib/lang");
10
10
  const accountsPrompt_1 = require("../../lib/prompts/accountsPrompt");
11
+ const ui_1 = require("../../lib/ui");
11
12
  exports.command = 'use [account]';
12
13
  exports.describe = (0, lang_1.i18n)('commands.account.subcommands.use.describe');
13
14
  async function handler(args) {
@@ -23,6 +24,18 @@ async function handler(args) {
23
24
  newDefaultAccount = await (0, accountsPrompt_1.selectAccountFromConfig)();
24
25
  }
25
26
  (0, usageTracking_1.trackCommandUsage)('accounts-use', undefined, (0, config_1.getAccountId)(newDefaultAccount));
27
+ const accountOverride = (0, config_1.getCWDAccountOverride)();
28
+ const overrideFilePath = (0, config_1.getDefaultAccountOverrideFilePath)();
29
+ if (accountOverride && overrideFilePath) {
30
+ logger_1.logger.warn((0, lang_1.i18n)(`commands.account.subcommands.use.accountOverride`, {
31
+ accountOverride,
32
+ }));
33
+ logger_1.logger.log((0, lang_1.i18n)(`commands.account.subcommands.use.accountOverrideCommands`, {
34
+ createOverrideCommand: (0, ui_1.uiCommandReference)('hs account create-override'),
35
+ removeOverrideCommand: (0, ui_1.uiCommandReference)('hs account remove-override'),
36
+ }));
37
+ logger_1.logger.log('');
38
+ }
26
39
  (0, config_1.updateDefaultAccount)(newDefaultAccount);
27
40
  return logger_1.logger.success((0, lang_1.i18n)('commands.account.subcommands.use.success.defaultAccountUpdated', {
28
41
  accountName: newDefaultAccount,
@@ -37,24 +37,29 @@ exports.describe = exports.command = void 0;
37
37
  exports.builder = builder;
38
38
  const commonOpts_1 = require("../lib/commonOpts");
39
39
  const lang_1 = require("../lib/lang");
40
+ const auth = __importStar(require("./account/auth"));
40
41
  const list = __importStar(require("./account/list"));
41
42
  const rename = __importStar(require("./account/rename"));
42
43
  const use = __importStar(require("./account/use"));
43
44
  const info = __importStar(require("./account/info"));
44
45
  const remove = __importStar(require("./account/remove"));
45
46
  const clean = __importStar(require("./account/clean"));
46
- const i18nKey = 'commands.account';
47
+ const createOverride = __importStar(require("./account/createOverride"));
48
+ const removeOverride = __importStar(require("./account/removeOverride"));
47
49
  exports.command = ['account', 'accounts'];
48
- exports.describe = (0, lang_1.i18n)(`${i18nKey}.describe`);
50
+ exports.describe = (0, lang_1.i18n)('commands.account.describe');
49
51
  function builder(yargs) {
50
52
  (0, commonOpts_1.addGlobalOptions)(yargs);
51
53
  yargs
54
+ .command(auth)
52
55
  .command(list)
53
56
  .command(rename)
54
57
  .command(use)
55
58
  .command(info)
56
59
  .command(remove)
57
60
  .command(clean)
61
+ .command(createOverride)
62
+ .command(removeOverride)
58
63
  .demandCommand(1, '');
59
64
  return yargs;
60
65
  }
package/commands/auth.js CHANGED
@@ -47,8 +47,12 @@ async function handler(args) {
47
47
  if (configPath) {
48
48
  (0, git_1.checkAndWarnGitInclusion)(configPath);
49
49
  }
50
- if (!(0, config_2.getConfigPath)(configFlagValue)) {
51
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noConfigFileFound`));
50
+ if ((0, config_2.configFileExists)(true)) {
51
+ const globalConfigPath = (0, config_2.getConfigPath)('', true);
52
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.globalConfigFileExists`, {
53
+ configPath: globalConfigPath,
54
+ authCommand: (0, ui_1.uiCommandReference)('hs account auth'),
55
+ }));
52
56
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
53
57
  }
54
58
  (0, usageTracking_1.trackCommandUsage)('auth');
@@ -0,0 +1,10 @@
1
+ import { Argv, ArgumentsCamelCase } from 'yargs';
2
+ import { CommonArgs, ConfigArgs } from '../../types/Yargs';
3
+ export declare const describe: string;
4
+ export declare const command = "migrate";
5
+ type ConfigMigrateArgs = CommonArgs & ConfigArgs & {
6
+ force?: boolean;
7
+ };
8
+ export declare function handler(args: ArgumentsCamelCase<ConfigMigrateArgs>): Promise<void>;
9
+ export declare function builder(yargs: Argv): Argv<ConfigMigrateArgs>;
10
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.command = exports.describe = void 0;
7
+ exports.handler = handler;
8
+ exports.builder = builder;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const config_1 = require("@hubspot/local-dev-lib/constants/config");
11
+ const migrate_1 = require("@hubspot/local-dev-lib/config/migrate");
12
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
13
+ const configMigrate_1 = require("../../lib/configMigrate");
14
+ const commonOpts_1 = require("../../lib/commonOpts");
15
+ const lang_1 = require("../../lib/lang");
16
+ const usageTracking_1 = require("../../lib/usageTracking");
17
+ const index_1 = require("../../lib/errorHandlers/index");
18
+ const exitCodes_1 = require("../../lib/enums/exitCodes");
19
+ exports.describe = (0, lang_1.i18n)('commands.config.subcommands.migrate.describe', {
20
+ deprecatedConfigPath: config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
21
+ globalConfigPath: config_1.GLOBAL_CONFIG_PATH,
22
+ });
23
+ exports.command = 'migrate';
24
+ async function handler(args) {
25
+ const { config: configPath, force, derivedAccountId } = args;
26
+ if (configPath && !fs_1.default.existsSync(configPath)) {
27
+ logger_1.logger.log((0, lang_1.i18n)('commands.config.subcommands.migrate.errors.configNotFound', {
28
+ configPath,
29
+ }));
30
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
31
+ }
32
+ const deprecatedConfigExists = (0, migrate_1.configFileExists)(false, configPath);
33
+ const globalConfigExists = (0, migrate_1.configFileExists)(true);
34
+ if (!deprecatedConfigExists) {
35
+ logger_1.logger.log((0, lang_1.i18n)('commands.config.subcommands.migrate.migrationAlreadyCompleted', {
36
+ deprecatedConfigPath: config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
37
+ }));
38
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
39
+ }
40
+ try {
41
+ if (!globalConfigExists) {
42
+ await (0, configMigrate_1.handleMigration)(derivedAccountId, configPath);
43
+ }
44
+ else {
45
+ await (0, configMigrate_1.handleMerge)(derivedAccountId, configPath, force);
46
+ }
47
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
48
+ }
49
+ catch (error) {
50
+ (0, usageTracking_1.trackCommandMetadataUsage)('config-migrate', {
51
+ command: 'hs config migrate',
52
+ type: 'Migration/merge',
53
+ successful: false,
54
+ }, derivedAccountId);
55
+ (0, index_1.logError)(error);
56
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
57
+ }
58
+ }
59
+ function builder(yargs) {
60
+ (0, commonOpts_1.addConfigOptions)(yargs);
61
+ yargs
62
+ .option('force', {
63
+ alias: 'f',
64
+ type: 'boolean',
65
+ default: false,
66
+ description: (0, lang_1.i18n)('commands.config.subcommands.migrate.options.force'),
67
+ })
68
+ .example([
69
+ [
70
+ '$0 config migrate',
71
+ (0, lang_1.i18n)('commands.config.subcommands.migrate.examples.default', {
72
+ deprecatedConfigPath: config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
73
+ globalConfigPath: config_1.GLOBAL_CONFIG_PATH,
74
+ }),
75
+ ],
76
+ [
77
+ '$0 config migrate --config=/path/to/config.yml',
78
+ (0, lang_1.i18n)('commands.config.subcommands.migrate.examples.configFlag', {
79
+ globalConfigPath: config_1.GLOBAL_CONFIG_PATH,
80
+ }),
81
+ ],
82
+ ]);
83
+ return yargs;
84
+ }
@@ -1 +1,11 @@
1
+ import { ArgumentsCamelCase, Argv } from 'yargs';
2
+ import { CommonArgs } from '../../types/Yargs';
3
+ import { CmsPublishMode } from '@hubspot/local-dev-lib/types/Files';
4
+ type ConfigSetArgs = CommonArgs & {
5
+ defaultCmsPublishMode: CmsPublishMode;
6
+ allowUsageTracking?: boolean;
7
+ httpTimeout?: string;
8
+ };
9
+ export declare function handler(args: ArgumentsCamelCase<ConfigSetArgs>): Promise<void>;
10
+ export declare function builder(yargs: Argv): Argv<ConfigSetArgs>;
1
11
  export {};
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const { i18n } = require('../../lib/lang');
5
- const { trackCommandUsage } = require('../../lib/usageTracking');
6
- const { promptUser } = require('../../lib/prompts/promptUtils');
7
- const { EXIT_CODES } = require('../../lib/enums/exitCodes');
8
- const { setDefaultCmsPublishMode, setHttpTimeout, setAllowUsageTracking, } = require('../../lib/configOptions');
3
+ exports.handler = handler;
4
+ exports.builder = builder;
5
+ const lang_1 = require("../../lib/lang");
6
+ const usageTracking_1 = require("../../lib/usageTracking");
7
+ const promptUtils_1 = require("../../lib/prompts/promptUtils");
8
+ const exitCodes_1 = require("../../lib/enums/exitCodes");
9
+ const configOptions_1 = require("../../lib/configOptions");
9
10
  exports.command = 'set';
10
- exports.describe = i18n(`commands.config.subcommands.set.describe`);
11
- const selectOptions = async () => {
12
- const { cmsPublishMode } = await promptUser([
11
+ exports.describe = (0, lang_1.i18n)(`commands.config.subcommands.set.describe`);
12
+ async function selectOptions() {
13
+ const { cmsPublishMode } = await (0, promptUtils_1.promptUser)([
13
14
  {
14
15
  type: 'list',
15
- look: false,
16
16
  name: 'cmsPublishMode',
17
17
  pageSize: 20,
18
- message: i18n(`commands.config.subcommands.set.promptMessage`),
18
+ message: (0, lang_1.i18n)(`commands.config.subcommands.set.promptMessage`),
19
19
  choices: [
20
20
  {
21
21
  name: 'Default CMS publish mode',
@@ -27,46 +27,46 @@ const selectOptions = async () => {
27
27
  },
28
28
  ]);
29
29
  return cmsPublishMode;
30
- };
31
- const handleConfigUpdate = async (accountId, options) => {
30
+ }
31
+ async function handleConfigUpdate(accountId, options) {
32
32
  const { allowUsageTracking, defaultCmsPublishMode, httpTimeout } = options;
33
33
  if (typeof defaultCmsPublishMode !== 'undefined') {
34
- await setDefaultCmsPublishMode({ defaultCmsPublishMode, accountId });
34
+ await (0, configOptions_1.setDefaultCmsPublishMode)({ defaultCmsPublishMode, accountId });
35
35
  return true;
36
36
  }
37
37
  else if (typeof httpTimeout !== 'undefined') {
38
- await setHttpTimeout({ httpTimeout, accountId });
38
+ await (0, configOptions_1.setHttpTimeout)({ httpTimeout, accountId });
39
39
  return true;
40
40
  }
41
41
  else if (typeof allowUsageTracking !== 'undefined') {
42
- await setAllowUsageTracking({ allowUsageTracking, accountId });
42
+ await (0, configOptions_1.setAllowUsageTracking)({ allowUsageTracking, accountId });
43
43
  return true;
44
44
  }
45
45
  return false;
46
- };
47
- exports.handler = async (options) => {
48
- const { derivedAccountId } = options;
49
- trackCommandUsage('config-set', null, derivedAccountId);
50
- const configUpdated = await handleConfigUpdate(derivedAccountId, options);
46
+ }
47
+ async function handler(args) {
48
+ const { derivedAccountId } = args;
49
+ (0, usageTracking_1.trackCommandUsage)('config-set', {}, derivedAccountId);
50
+ const configUpdated = await handleConfigUpdate(derivedAccountId, args);
51
51
  if (!configUpdated) {
52
52
  const selectedOptions = await selectOptions();
53
53
  await handleConfigUpdate(derivedAccountId, selectedOptions);
54
54
  }
55
- process.exit(EXIT_CODES.SUCCESS);
56
- };
57
- exports.builder = yargs => {
55
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
56
+ }
57
+ function builder(yargs) {
58
58
  yargs
59
59
  .options({
60
60
  'default-cms-publish-mode': {
61
- describe: i18n(`commands.config.subcommands.set.options.defaultMode.describe`),
61
+ describe: (0, lang_1.i18n)(`commands.config.subcommands.set.options.defaultMode.describe`),
62
62
  type: 'string',
63
63
  },
64
64
  'allow-usage-tracking': {
65
- describe: i18n(`commands.config.subcommands.set.options.allowUsageTracking.describe`),
65
+ describe: (0, lang_1.i18n)(`commands.config.subcommands.set.options.allowUsageTracking.describe`),
66
66
  type: 'boolean',
67
67
  },
68
68
  'http-timeout': {
69
- describe: i18n(`commands.config.subcommands.set.options.httpTimeout.describe`),
69
+ describe: (0, lang_1.i18n)(`commands.config.subcommands.set.options.httpTimeout.describe`),
70
70
  type: 'string',
71
71
  },
72
72
  })
@@ -76,8 +76,8 @@ exports.builder = yargs => {
76
76
  .example([
77
77
  [
78
78
  '$0 config set',
79
- i18n(`commands.config.subcommands.set.examples.default`),
79
+ (0, lang_1.i18n)(`commands.config.subcommands.set.examples.default`),
80
80
  ],
81
81
  ]);
82
82
  return yargs;
83
- };
83
+ }
@@ -1 +1,4 @@
1
- export {};
1
+ import { Argv } from 'yargs';
2
+ export declare const command = "config";
3
+ export declare const describe: string;
4
+ export declare function builder(yargs: Argv): Argv;
@@ -1,15 +1,49 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const { addConfigOptions, addGlobalOptions } = require('../lib/commonOpts');
5
- const { i18n } = require('../lib/lang');
6
- const set = require('./config/set');
7
- const i18nKey = 'commands.config';
36
+ exports.describe = exports.command = void 0;
37
+ exports.builder = builder;
38
+ const commonOpts_1 = require("../lib/commonOpts");
39
+ const lang_1 = require("../lib/lang");
40
+ const set = __importStar(require("./config/set"));
41
+ const migrate = __importStar(require("./config/migrate"));
8
42
  exports.command = 'config';
9
- exports.describe = i18n(`${i18nKey}.describe`);
10
- exports.builder = yargs => {
11
- addConfigOptions(yargs);
12
- addGlobalOptions(yargs);
13
- yargs.command(set).demandCommand(1, '');
43
+ exports.describe = (0, lang_1.i18n)('commands.config.describe');
44
+ function builder(yargs) {
45
+ (0, commonOpts_1.addConfigOptions)(yargs);
46
+ (0, commonOpts_1.addGlobalOptions)(yargs);
47
+ yargs.command(set).command(migrate).demandCommand(1, '');
14
48
  return yargs;
15
- };
49
+ }
package/commands/init.js CHANGED
@@ -78,6 +78,13 @@ async function handler(args) {
78
78
  });
79
79
  }
80
80
  const env = args.qa ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD;
81
+ if ((0, config_1.configFileExists)(true)) {
82
+ const globalConfigPath = (0, config_1.getConfigPath)('', true);
83
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.globalConfigFileExists`, {
84
+ configPath: globalConfigPath,
85
+ }));
86
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
87
+ }
81
88
  if (fs_extra_1.default.existsSync(configPath)) {
82
89
  logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.configFileExists`, {
83
90
  configPath: configPath,
@@ -114,19 +121,16 @@ async function handler(args) {
114
121
  accountId = oauthResult.accountId;
115
122
  name = oauthResult.name;
116
123
  }
124
+ const configPath = (0, config_1.getConfigPath)();
117
125
  try {
118
126
  (0, gitignore_1.checkAndAddConfigToGitignore)(configPath);
119
127
  }
120
128
  catch (e) {
121
129
  (0, index_1.debugError)(e);
122
130
  }
123
- let newConfigPath = configPath;
124
- if (!newConfigPath && !useHiddenConfig) {
125
- newConfigPath = `${(0, path_2.getCwd)()}/${config_2.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME}`;
126
- }
127
131
  logger_1.logger.log('');
128
132
  logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success.configFileCreated`, {
129
- configPath: newConfigPath,
133
+ configPath: configPath,
130
134
  }));
131
135
  logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success.configFileUpdated`, {
132
136
  authType: AUTH_TYPE_NAMES[authType],
@@ -167,11 +171,6 @@ function initBuilder(yargs) {
167
171
  hidden: true,
168
172
  default: false,
169
173
  },
170
- 'use-hidden-config': {
171
- describe: (0, lang_1.i18n)(`${i18nKey}.options.useHiddenConfig.describe`),
172
- hidden: true,
173
- type: 'boolean',
174
- },
175
174
  });
176
175
  yargs.conflicts('use-hidden-config', 'config');
177
176
  return yargs;
@@ -15,7 +15,6 @@ const open = require('./project/open');
15
15
  const dev = require('./project/dev');
16
16
  const add = require('./project/add');
17
17
  const migrateApp = require('./project/migrateApp');
18
- const migrate = require('./project/migrate');
19
18
  const cloneApp = require('./project/cloneApp');
20
19
  const installDeps = require('./project/installDeps');
21
20
  const i18nKey = 'commands.project';
@@ -35,7 +34,6 @@ exports.builder = yargs => {
35
34
  .command(download)
36
35
  .command(open)
37
36
  .command(migrateApp)
38
- .command(migrate)
39
37
  .command(cloneApp)
40
38
  .command(installDeps)
41
39
  .demandCommand(1, '');
package/lang/en.js CHANGED
@@ -2816,6 +2816,11 @@ export const lib = {
2816
2816
  fileFiltered: filename => `Ignore rule triggered for "${filename}"`,
2817
2817
  },
2818
2818
  },
2819
+ middleware: {
2820
+ fireAlarm: {
2821
+ failedToLoadBoxen: 'Failed to load boxen util.',
2822
+ },
2823
+ },
2819
2824
  ui: {
2820
2825
  betaTag: chalk.bold('[BETA]'),
2821
2826
  betaWarning: {