@hubspot/cli 7.4.7-experimental.0 → 7.4.7

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 (225) hide show
  1. package/api/migrate.d.ts +14 -4
  2. package/api/migrate.js +16 -2
  3. package/bin/cli.js +8 -183
  4. package/commands/account/auth.d.ts +10 -0
  5. package/commands/account/auth.js +188 -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 +38 -4
  10. package/commands/account/list.js +23 -5
  11. package/commands/account/remove.js +36 -2
  12. package/commands/account/removeOverride.d.ts +10 -0
  13. package/commands/account/removeOverride.js +76 -0
  14. package/commands/account/use.js +25 -3
  15. package/commands/account.js +7 -2
  16. package/commands/app/migrate.d.ts +6 -6
  17. package/commands/app/migrate.js +62 -45
  18. package/commands/app.js +0 -2
  19. package/commands/auth.js +14 -11
  20. package/commands/cms/lighthouseScore.js +7 -3
  21. package/commands/cms.js +1 -2
  22. package/commands/completion.js +2 -3
  23. package/commands/config/migrate.d.ts +10 -0
  24. package/commands/config/migrate.js +84 -0
  25. package/commands/config/set.d.ts +10 -0
  26. package/commands/config/set.js +34 -29
  27. package/commands/config.d.ts +4 -1
  28. package/commands/config.js +45 -11
  29. package/commands/create/api-sample.js +3 -1
  30. package/commands/create/website-theme.js +1 -1
  31. package/commands/create.js +7 -8
  32. package/commands/customObject/schema/delete.js +4 -1
  33. package/commands/customObject/schema/fetch-all.js +2 -1
  34. package/commands/customObject/schema/fetch.js +2 -1
  35. package/commands/customObject.js +3 -4
  36. package/commands/doctor.js +5 -6
  37. package/commands/feedback.js +7 -8
  38. package/commands/fetch.js +6 -7
  39. package/commands/filemanager.js +1 -2
  40. package/commands/function.js +1 -2
  41. package/commands/hubdb/clear.js +5 -6
  42. package/commands/hubdb/create.js +7 -8
  43. package/commands/hubdb/delete.js +8 -7
  44. package/commands/hubdb/fetch.js +4 -5
  45. package/commands/hubdb.js +1 -2
  46. package/commands/init.js +18 -20
  47. package/commands/lint.js +3 -4
  48. package/commands/list.js +5 -6
  49. package/commands/logs.js +12 -13
  50. package/commands/module/marketplace-validate.js +5 -6
  51. package/commands/module.js +1 -3
  52. package/commands/mv.js +4 -5
  53. package/commands/open.js +4 -5
  54. package/commands/project/add.d.ts +3 -7
  55. package/commands/project/add.js +28 -23
  56. package/commands/project/cloneApp.d.ts +6 -8
  57. package/commands/project/cloneApp.js +49 -45
  58. package/commands/project/create.d.ts +10 -1
  59. package/commands/project/create.js +85 -63
  60. package/commands/project/deploy.d.ts +3 -6
  61. package/commands/project/deploy.js +27 -25
  62. package/commands/project/dev/deprecatedFlow.js +32 -25
  63. package/commands/project/dev/index.d.ts +4 -2
  64. package/commands/project/dev/index.js +31 -18
  65. package/commands/project/dev/unifiedFlow.js +10 -11
  66. package/commands/project/download.d.ts +3 -7
  67. package/commands/project/download.js +18 -19
  68. package/commands/project/installDeps.d.ts +6 -1
  69. package/commands/project/installDeps.js +48 -32
  70. package/commands/project/listBuilds.d.ts +3 -7
  71. package/commands/project/listBuilds.js +32 -27
  72. package/commands/project/logs.d.ts +10 -1
  73. package/commands/project/logs.js +73 -65
  74. package/commands/project/migrate.d.ts +6 -0
  75. package/commands/project/migrate.js +71 -0
  76. package/commands/project/migrateApp.d.ts +3 -8
  77. package/commands/project/migrateApp.js +23 -20
  78. package/commands/project/open.d.ts +3 -7
  79. package/commands/project/open.js +29 -21
  80. package/commands/project/upload.d.ts +9 -1
  81. package/commands/project/upload.js +78 -54
  82. package/commands/project/watch.d.ts +6 -1
  83. package/commands/project/watch.js +95 -61
  84. package/commands/project.d.ts +3 -1
  85. package/commands/project.js +47 -35
  86. package/commands/remove.js +7 -5
  87. package/commands/sandbox/create.js +10 -11
  88. package/commands/sandbox/delete.js +18 -19
  89. package/commands/sandbox.js +1 -2
  90. package/commands/secret/addSecret.js +5 -6
  91. package/commands/secret/deleteSecret.js +12 -9
  92. package/commands/secret/listSecret.js +3 -4
  93. package/commands/secret/updateSecret.js +9 -8
  94. package/commands/secret.js +1 -2
  95. package/commands/theme/generate-selectors.js +5 -6
  96. package/commands/theme/marketplace-validate.js +5 -6
  97. package/commands/theme/preview.js +16 -16
  98. package/commands/theme.js +1 -2
  99. package/commands/upload.js +23 -24
  100. package/commands/watch.js +18 -19
  101. package/lang/en.d.ts +2806 -0
  102. package/lang/en.js +2659 -3300
  103. package/lang/en.lyaml +98 -41
  104. package/lib/accountTypes.d.ts +1 -0
  105. package/lib/accountTypes.js +12 -0
  106. package/lib/app/migrate.d.ts +10 -4
  107. package/lib/app/migrate.js +208 -94
  108. package/lib/app/migrate_legacy.d.ts +2 -2
  109. package/lib/app/migrate_legacy.js +10 -7
  110. package/lib/buildAccount.d.ts +1 -2
  111. package/lib/buildAccount.js +11 -10
  112. package/lib/commonOpts.d.ts +3 -4
  113. package/lib/commonOpts.js +46 -18
  114. package/lib/configMigrate.d.ts +2 -0
  115. package/lib/configMigrate.js +104 -0
  116. package/lib/configOptions.js +11 -10
  117. package/lib/constants.d.ts +4 -0
  118. package/lib/constants.js +5 -1
  119. package/lib/dependencyManagement.js +2 -2
  120. package/lib/doctor/Diagnosis.d.ts +1 -2
  121. package/lib/doctor/Diagnosis.js +19 -16
  122. package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -1
  123. package/lib/doctor/DiagnosticInfoBuilder.js +10 -9
  124. package/lib/doctor/Doctor.d.ts +1 -0
  125. package/lib/doctor/Doctor.js +57 -44
  126. package/lib/errorHandlers/index.js +6 -7
  127. package/lib/errorHandlers/suppressError.js +6 -7
  128. package/lib/generateSelectors.js +1 -2
  129. package/lib/hasFeature.d.ts +3 -1
  130. package/lib/middleware/__test__/configMiddleware.test.d.ts +1 -0
  131. package/lib/middleware/__test__/configMiddleware.test.js +194 -0
  132. package/lib/middleware/__test__/gitMiddleware.test.d.ts +1 -0
  133. package/lib/middleware/__test__/gitMiddleware.test.js +76 -0
  134. package/lib/middleware/__test__/notificationsMiddleware.test.d.ts +1 -0
  135. package/lib/middleware/__test__/notificationsMiddleware.test.js +10 -0
  136. package/lib/middleware/__test__/requestMiddleware.test.d.ts +1 -0
  137. package/lib/middleware/__test__/requestMiddleware.test.js +20 -0
  138. package/lib/middleware/__test__/utils.test.d.ts +1 -0
  139. package/lib/middleware/__test__/utils.test.js +53 -0
  140. package/lib/middleware/__test__/yargsChecksMiddleware.test.d.ts +1 -0
  141. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +81 -0
  142. package/lib/middleware/configMiddleware.d.ts +13 -0
  143. package/lib/middleware/configMiddleware.js +116 -0
  144. package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
  145. package/lib/middleware/fireAlarmMiddleware.js +123 -0
  146. package/lib/middleware/gitMiddleware.d.ts +2 -0
  147. package/lib/middleware/gitMiddleware.js +14 -0
  148. package/lib/middleware/notificationsMiddleware.d.ts +1 -0
  149. package/lib/middleware/notificationsMiddleware.js +38 -0
  150. package/lib/middleware/requestMiddleware.d.ts +1 -0
  151. package/lib/middleware/requestMiddleware.js +11 -0
  152. package/lib/middleware/utils.d.ts +8 -0
  153. package/lib/middleware/utils.js +17 -0
  154. package/lib/middleware/yargsChecksMiddleware.d.ts +4 -0
  155. package/lib/middleware/yargsChecksMiddleware.js +24 -0
  156. package/lib/oauth.js +1 -2
  157. package/lib/process.js +1 -2
  158. package/lib/projects/ProjectLogsManager.d.ts +1 -1
  159. package/lib/projects/ProjectLogsManager.js +16 -21
  160. package/lib/projects/buildAndDeploy.js +28 -39
  161. package/lib/projects/config.d.ts +9 -0
  162. package/lib/projects/config.js +79 -0
  163. package/lib/projects/create.js +5 -6
  164. package/lib/projects/ensureProjectExists.d.ts +11 -0
  165. package/lib/projects/ensureProjectExists.js +97 -0
  166. package/lib/{DevServerManager.d.ts → projects/localDev/DevServerManager.d.ts} +1 -1
  167. package/lib/{DevServerManager.js → projects/localDev/DevServerManager.js} +6 -6
  168. package/lib/{DevServerManagerV2.d.ts → projects/localDev/DevServerManagerV2.d.ts} +1 -1
  169. package/lib/{DevServerManagerV2.js → projects/localDev/DevServerManagerV2.js} +3 -4
  170. package/lib/{LocalDevManager.d.ts → projects/localDev/LocalDevManager.d.ts} +1 -1
  171. package/lib/{LocalDevManager.js → projects/localDev/LocalDevManager.js} +49 -82
  172. package/lib/{LocalDevManagerV2.d.ts → projects/localDev/LocalDevManagerV2.d.ts} +2 -2
  173. package/lib/{LocalDevManagerV2.js → projects/localDev/LocalDevManagerV2.js} +43 -75
  174. package/lib/{localDev.d.ts → projects/localDev/helpers.d.ts} +5 -4
  175. package/lib/{localDev.js → projects/localDev/helpers.js} +97 -114
  176. package/lib/projects/ui.d.ts +1 -0
  177. package/lib/projects/ui.js +15 -0
  178. package/lib/projects/upload.d.ts +13 -2
  179. package/lib/projects/upload.js +18 -34
  180. package/lib/projects/urls.d.ts +1 -0
  181. package/lib/projects/urls.js +6 -0
  182. package/lib/projects/watch.d.ts +1 -1
  183. package/lib/projects/watch.js +21 -18
  184. package/lib/prompts/accountNamePrompt.js +16 -13
  185. package/lib/prompts/accountsPrompt.js +1 -2
  186. package/lib/prompts/cmsFieldPrompt.js +1 -2
  187. package/lib/prompts/createApiSamplePrompt.js +4 -5
  188. package/lib/prompts/createFunctionPrompt.js +13 -14
  189. package/lib/prompts/createModulePrompt.js +8 -9
  190. package/lib/prompts/createProjectPrompt.d.ts +11 -4
  191. package/lib/prompts/createProjectPrompt.js +14 -9
  192. package/lib/prompts/createTemplatePrompt.js +1 -2
  193. package/lib/prompts/downloadProjectPrompt.js +3 -4
  194. package/lib/prompts/installPublicAppPrompt.js +6 -5
  195. package/lib/prompts/personalAccessKeyPrompt.js +17 -18
  196. package/lib/prompts/previewPrompt.js +5 -6
  197. package/lib/prompts/projectAddPrompt.js +4 -5
  198. package/lib/prompts/projectDevTargetAccountPrompt.js +11 -12
  199. package/lib/prompts/projectNamePrompt.js +5 -6
  200. package/lib/prompts/projectsLogsPrompt.js +3 -2
  201. package/lib/prompts/promptUtils.d.ts +1 -1
  202. package/lib/prompts/sandboxesPrompt.js +5 -6
  203. package/lib/prompts/secretPrompt.js +2 -3
  204. package/lib/prompts/selectHubDBTablePrompt.js +11 -8
  205. package/lib/prompts/selectPublicAppPrompt.js +6 -7
  206. package/lib/prompts/setAsDefaultAccountPrompt.js +1 -2
  207. package/lib/prompts/uploadPrompt.js +4 -5
  208. package/lib/sandboxSync.js +15 -14
  209. package/lib/sandboxes.js +12 -13
  210. package/lib/serverlessLogs.js +4 -6
  211. package/lib/ui/SpinniesManager.d.ts +1 -1
  212. package/lib/ui/boxen.d.ts +5 -0
  213. package/lib/ui/boxen.js +30 -0
  214. package/lib/ui/git.js +8 -9
  215. package/lib/ui/index.d.ts +4 -2
  216. package/lib/ui/index.js +16 -16
  217. package/lib/ui/logger.d.ts +10 -0
  218. package/lib/ui/logger.js +15 -0
  219. package/lib/ui/serverlessFunctionLogs.js +2 -3
  220. package/lib/ui/spinniesUtils.d.ts +5 -5
  221. package/lib/yargsUtils.d.ts +1 -1
  222. package/package.json +7 -6
  223. package/types/Yargs.d.ts +5 -11
  224. package/lib/projects/index.d.ts +0 -20
  225. package/lib/projects/index.js +0 -195
package/commands/mv.js CHANGED
@@ -12,7 +12,6 @@ const usageTracking_1 = require("../lib/usageTracking");
12
12
  const filesystem_1 = require("../lib/filesystem");
13
13
  const lang_1 = require("../lib/lang");
14
14
  const ui_1 = require("../lib/ui");
15
- const i18nKey = 'commands.mv';
16
15
  function getCorrectedDestPath(srcPath, destPath) {
17
16
  if (!(0, filesystem_1.isPathFolder)(srcPath)) {
18
17
  return destPath;
@@ -21,26 +20,26 @@ function getCorrectedDestPath(srcPath, destPath) {
21
20
  return `${destPath}/${srcPath.split('/').pop()}`;
22
21
  }
23
22
  exports.command = 'mv <srcPath> <destPath>';
24
- exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
23
+ exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`commands.mv.describe`), false);
25
24
  async function handler(args) {
26
25
  const { srcPath, destPath, derivedAccountId } = args;
27
26
  (0, usageTracking_1.trackCommandUsage)('mv', undefined, derivedAccountId);
28
27
  try {
29
28
  await (0, fileMapper_1.moveFile)(derivedAccountId, srcPath, getCorrectedDestPath(srcPath, destPath));
30
- logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.move`, {
29
+ logger_1.logger.success((0, lang_1.i18n)(`commands.mv.move`, {
31
30
  accountId: derivedAccountId,
32
31
  destPath,
33
32
  srcPath,
34
33
  }));
35
34
  }
36
35
  catch (error) {
37
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.moveFailed`, {
36
+ logger_1.logger.error((0, lang_1.i18n)(`commands.mv.errors.moveFailed`, {
38
37
  accountId: derivedAccountId,
39
38
  destPath,
40
39
  srcPath,
41
40
  }));
42
41
  if ((0, index_1.isSpecifiedError)(error, { statusCode: 409 })) {
43
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.sourcePathExists`, {
42
+ logger_1.logger.error((0, lang_1.i18n)(`commands.mv.errors.sourcePathExists`, {
44
43
  destPath,
45
44
  srcPath,
46
45
  }));
package/commands/open.js CHANGED
@@ -9,7 +9,6 @@ const links_1 = require("../lib/links");
9
9
  const promptUtils_1 = require("../lib/prompts/promptUtils");
10
10
  const lang_1 = require("../lib/lang");
11
11
  const exitCodes_1 = require("../lib/enums/exitCodes");
12
- const i18nKey = 'commands.open';
13
12
  const separator = ' => ';
14
13
  async function createListPrompt(accountId) {
15
14
  return (0, promptUtils_1.promptUser)([
@@ -17,14 +16,14 @@ async function createListPrompt(accountId) {
17
16
  type: 'rawlist',
18
17
  name: 'open',
19
18
  pageSize: 20,
20
- message: (0, lang_1.i18n)(`${i18nKey}.selectLink`),
19
+ message: (0, lang_1.i18n)('commands.open.selectLink'),
21
20
  choices: (0, links_1.getSiteLinksAsArray)(accountId).map(l => `${l.shortcut}${separator}${l.url}`),
22
21
  filter: val => val.split(separator)[0],
23
22
  },
24
23
  ]);
25
24
  }
26
25
  exports.command = 'open [shortcut]';
27
- exports.describe = (0, lang_1.i18n)(`${i18nKey}.describe`);
26
+ exports.describe = (0, lang_1.i18n)('commands.open.describe');
28
27
  async function handler(args) {
29
28
  const { shortcut, list, derivedAccountId } = args;
30
29
  (0, usageTracking_1.trackCommandUsage)('open', undefined, derivedAccountId);
@@ -46,12 +45,12 @@ function builder(yargs) {
46
45
  (0, commonOpts_1.addUseEnvironmentOptions)(yargs);
47
46
  (0, commonOpts_1.addGlobalOptions)(yargs);
48
47
  yargs.positional('[shortcut]', {
49
- describe: (0, lang_1.i18n)(`${i18nKey}.positionals.shortcut.describe`),
48
+ describe: (0, lang_1.i18n)('commands.open.positionals.shortcut.describe'),
50
49
  type: 'string',
51
50
  });
52
51
  yargs.option('list', {
53
52
  alias: 'l',
54
- describe: (0, lang_1.i18n)(`${i18nKey}.options.list.describe`),
53
+ describe: (0, lang_1.i18n)('commands.open.options.list.describe'),
55
54
  type: 'boolean',
56
55
  });
57
56
  yargs.example([
@@ -1,11 +1,7 @@
1
- import { Argv, ArgumentsCamelCase } from 'yargs';
2
- import { CommonArgs } from '../../types/Yargs';
3
- export declare const command = "add";
4
- export declare const describe: string;
1
+ import { YargsCommandModule, CommonArgs } from '../../types/Yargs';
5
2
  type ProjectAddArgs = CommonArgs & {
6
3
  type: string;
7
4
  name: string;
8
5
  };
9
- export declare function handler(args: ArgumentsCamelCase<ProjectAddArgs>): Promise<void>;
10
- export declare const builder: (yargs: Argv) => Promise<Argv<ProjectAddArgs>>;
11
- export {};
6
+ declare const projectAddCommand: YargsCommandModule<unknown, ProjectAddArgs>;
7
+ export default projectAddCommand;
@@ -3,8 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.builder = exports.describe = exports.command = void 0;
7
- exports.handler = handler;
8
6
  const path_1 = __importDefault(require("path"));
9
7
  const logger_1 = require("@hubspot/local-dev-lib/logger");
10
8
  const github_1 = require("@hubspot/local-dev-lib/github");
@@ -12,7 +10,7 @@ const errorHandlers_1 = require("../../lib/errorHandlers");
12
10
  const usageTracking_1 = require("../../lib/usageTracking");
13
11
  const lang_1 = require("../../lib/lang");
14
12
  const projectAddPrompt_1 = require("../../lib/prompts/projectAddPrompt");
15
- const projects_1 = require("../../lib/projects");
13
+ const config_1 = require("../../lib/projects/config");
16
14
  const create_1 = require("../../lib/projects/create");
17
15
  const structure_1 = require("../../lib/projects/structure");
18
16
  const Projects_1 = require("../../types/Projects");
@@ -20,15 +18,14 @@ const ui_1 = require("../../lib/ui");
20
18
  const constants_1 = require("../../lib/constants");
21
19
  const exitCodes_1 = require("../../lib/enums/exitCodes");
22
20
  const yargsUtils_1 = require("../../lib/yargsUtils");
23
- const i18nKey = 'commands.project.subcommands.add';
24
- exports.command = 'add';
25
- exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
21
+ const command = 'add';
22
+ const describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`commands.project.subcommands.add.describe`), false);
26
23
  async function handler(args) {
27
24
  const { derivedAccountId } = args;
28
25
  (0, usageTracking_1.trackCommandUsage)('project-add', undefined, derivedAccountId);
29
- const { projectConfig, projectDir } = await (0, projects_1.getProjectConfig)();
26
+ const { projectConfig, projectDir } = await (0, config_1.getProjectConfig)();
30
27
  if (!projectDir || !projectConfig) {
31
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.locationInProject`));
28
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.add.error.locationInProject`));
32
29
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
33
30
  }
34
31
  // We currently only support adding private apps to projects
@@ -41,11 +38,11 @@ async function handler(args) {
41
38
  (0, errorHandlers_1.debugError)(err);
42
39
  }
43
40
  if (projectContainsPublicApp) {
44
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.projectContainsPublicApp`));
41
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.add.error.projectContainsPublicApp`));
45
42
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
46
43
  }
47
44
  logger_1.logger.log('');
48
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.creatingComponent`, {
45
+ logger_1.logger.log((0, lang_1.i18n)(`commands.project.subcommands.add.creatingComponent`, {
49
46
  projectName: projectConfig.name,
50
47
  }));
51
48
  logger_1.logger.log('');
@@ -61,12 +58,12 @@ async function handler(args) {
61
58
  (0, errorHandlers_1.debugError)(err);
62
59
  }
63
60
  if (!latestRepoReleaseTag) {
64
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToFetchComponentList`));
61
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.add.error.failedToFetchComponentList`));
65
62
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
66
63
  }
67
64
  const components = await (0, create_1.getProjectComponentListFromRepo)(latestRepoReleaseTag);
68
65
  if (!components.length) {
69
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToFetchComponentList`));
66
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.add.error.failedToFetchComponentList`));
70
67
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
71
68
  }
72
69
  const projectAddPromptResponse = await (0, projectAddPrompt_1.projectAddPrompt)(components, args);
@@ -78,13 +75,13 @@ async function handler(args) {
78
75
  hideLogs: true,
79
76
  });
80
77
  logger_1.logger.log('');
81
- logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success`, {
78
+ logger_1.logger.success((0, lang_1.i18n)(`commands.project.subcommands.add.success`, {
82
79
  componentName: projectAddPromptResponse.name,
83
80
  }));
84
81
  }
85
82
  catch (error) {
86
83
  (0, errorHandlers_1.debugError)(error);
87
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToDownloadComponent`));
84
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.add.error.failedToDownloadComponent`));
88
85
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
89
86
  }
90
87
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
@@ -92,27 +89,35 @@ async function handler(args) {
92
89
  function projectAddBuilder(yargs) {
93
90
  yargs.options({
94
91
  type: {
95
- describe: (0, lang_1.i18n)(`${i18nKey}.options.type.describe`),
92
+ describe: (0, lang_1.i18n)(`commands.project.subcommands.add.options.type.describe`),
96
93
  type: 'string',
97
94
  },
98
95
  name: {
99
- describe: (0, lang_1.i18n)(`${i18nKey}.options.name.describe`),
96
+ describe: (0, lang_1.i18n)(`commands.project.subcommands.add.options.name.describe`),
100
97
  type: 'string',
101
98
  },
102
99
  });
103
- yargs.example([['$0 project add', (0, lang_1.i18n)(`${i18nKey}.examples.default`)]]);
100
+ yargs.example([
101
+ [
102
+ '$0 project add',
103
+ (0, lang_1.i18n)(`commands.project.subcommands.add.examples.default`),
104
+ ],
105
+ ]);
104
106
  yargs.example([
105
107
  [
106
108
  '$0 project add --name="my-component" --type="components/example-app"',
107
- (0, lang_1.i18n)(`${i18nKey}.examples.withFlags`),
109
+ (0, lang_1.i18n)(`commands.project.subcommands.add.examples.withFlags`),
108
110
  ],
109
111
  ]);
110
112
  return yargs;
111
113
  }
112
- exports.builder = (0, yargsUtils_1.makeYargsBuilder)(projectAddBuilder, exports.command, exports.describe);
113
- module.exports = {
114
- command: exports.command,
115
- describe: exports.describe,
116
- builder: exports.builder,
114
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(projectAddBuilder, command, describe, {
115
+ useGlobalOptions: true,
116
+ });
117
+ const projectAddCommand = {
118
+ command,
119
+ describe,
117
120
  handler,
121
+ builder,
118
122
  };
123
+ exports.default = projectAddCommand;
@@ -1,9 +1,7 @@
1
- import { ArgumentsCamelCase, Argv, CommandModule } from 'yargs';
2
- import { CloneAppArgs } from '../../types/Yargs';
3
- export declare const command = "clone-app";
4
- export declare const describe: string | undefined;
5
- export declare const deprecated = true;
6
- export declare const handler: (options: ArgumentsCamelCase<CloneAppArgs>) => Promise<never>;
7
- export declare const builder: (yargs: Argv) => Argv<CloneAppArgs>;
8
- declare const cloneAppCommand: CommandModule<unknown, CloneAppArgs>;
1
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../../types/Yargs';
2
+ export type CloneAppArgs = ConfigArgs & EnvironmentArgs & AccountArgs & CommonArgs & {
3
+ dest: string;
4
+ appId: number;
5
+ };
6
+ declare const cloneAppCommand: YargsCommandModule<unknown, CloneAppArgs>;
9
7
  export default cloneAppCommand;
@@ -3,50 +3,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.builder = exports.handler = exports.deprecated = exports.describe = exports.command = void 0;
7
- const ui_1 = require("../../lib/ui");
8
6
  const path_1 = __importDefault(require("path"));
9
7
  const fs_1 = __importDefault(require("fs"));
10
- const commonOpts_1 = require("../../lib/commonOpts");
11
8
  const usageTracking_1 = require("../../lib/usageTracking");
12
9
  const lang_1 = require("../../lib/lang");
13
10
  const selectPublicAppPrompt_1 = require("../../lib/prompts/selectPublicAppPrompt");
14
11
  const createProjectPrompt_1 = require("../../lib/prompts/createProjectPrompt");
15
12
  const polling_1 = require("../../lib/polling");
16
- const ui_2 = require("../../lib/ui");
17
13
  const errorHandlers_1 = require("../../lib/errorHandlers");
18
14
  const exitCodes_1 = require("../../lib/enums/exitCodes");
19
15
  const accountTypes_1 = require("../../lib/accountTypes");
20
- const projects_1 = require("../../lib/projects");
16
+ const config_1 = require("../../lib/projects/config");
21
17
  const constants_1 = require("../../lib/constants");
22
- const projects_2 = require("@hubspot/local-dev-lib/api/projects");
18
+ const projects_1 = require("@hubspot/local-dev-lib/api/projects");
23
19
  const path_2 = require("@hubspot/local-dev-lib/path");
24
20
  const logger_1 = require("@hubspot/local-dev-lib/logger");
25
21
  const archive_1 = require("@hubspot/local-dev-lib/archive");
26
- const config_1 = require("@hubspot/local-dev-lib/config");
22
+ const config_2 = require("@hubspot/local-dev-lib/config");
27
23
  const SpinniesManager_1 = __importDefault(require("../../lib/ui/SpinniesManager"));
28
24
  const migrate_1 = require("../../lib/app/migrate");
29
- const i18nKey = 'commands.project.subcommands.cloneApp';
30
- exports.command = 'clone-app';
31
- exports.describe = (0, ui_1.uiDeprecatedTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
32
- exports.deprecated = true;
33
- const handler = async (options) => {
34
- const { derivedAccountId } = options;
25
+ const yargsUtils_1 = require("../../lib/yargsUtils");
26
+ const ui_1 = require("../../lib/ui");
27
+ const command = 'clone-app';
28
+ const describe = (0, ui_1.uiDeprecatedTag)((0, lang_1.i18n)(`commands.project.subcommands.cloneApp.describe`), false);
29
+ const deprecated = true;
30
+ async function handler(args) {
31
+ const { derivedAccountId } = args;
35
32
  await (0, usageTracking_1.trackCommandUsage)('clone-app', {}, derivedAccountId);
36
- const accountConfig = (0, config_1.getAccountConfig)(derivedAccountId);
37
- const accountName = (0, ui_2.uiAccountDescription)(derivedAccountId);
33
+ const accountConfig = (0, config_2.getAccountConfig)(derivedAccountId);
34
+ const accountName = (0, ui_1.uiAccountDescription)(derivedAccountId);
38
35
  if (!accountConfig) {
39
36
  throw new Error((0, lang_1.i18n)(`commands.projects.subcommands.cloneApp.errors.noAccountConfig`));
40
37
  }
41
- if (!(0, accountTypes_1.isAppDeveloperAccount)(accountConfig)) {
42
- (0, migrate_1.logInvalidAccountError)(i18nKey);
38
+ const defaultAccountIsUnified = await (0, accountTypes_1.isUnifiedAccount)(accountConfig);
39
+ if (!(0, accountTypes_1.isAppDeveloperAccount)(accountConfig) && !defaultAccountIsUnified) {
40
+ (0, migrate_1.logInvalidAccountError)();
43
41
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
44
42
  }
45
43
  let appId;
46
44
  let projectName;
47
45
  let projectDest;
48
46
  try {
49
- appId = options.appId;
47
+ appId = args.appId;
50
48
  if (!appId) {
51
49
  const appIdResponse = await (0, selectPublicAppPrompt_1.selectPublicAppPrompt)({
52
50
  accountId: derivedAccountId,
@@ -55,7 +53,7 @@ const handler = async (options) => {
55
53
  });
56
54
  appId = appIdResponse.appId;
57
55
  }
58
- const createProjectPromptResponse = await (0, createProjectPrompt_1.createProjectPrompt)(options);
56
+ const createProjectPromptResponse = await (0, createProjectPrompt_1.createProjectPrompt)(args);
59
57
  projectName = createProjectPromptResponse.name;
60
58
  projectDest = createProjectPromptResponse.dest;
61
59
  }
@@ -67,17 +65,17 @@ const handler = async (options) => {
67
65
  try {
68
66
  SpinniesManager_1.default.init();
69
67
  SpinniesManager_1.default.add('cloneApp', {
70
- text: (0, lang_1.i18n)(`${i18nKey}.cloneStatus.inProgress`),
68
+ text: (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.cloneStatus.inProgress`),
71
69
  });
72
- const { data: { exportId }, } = await (0, projects_2.cloneApp)(derivedAccountId, appId);
73
- const { status } = await (0, polling_1.poll)(() => (0, projects_2.checkCloneStatus)(derivedAccountId, exportId));
70
+ const { data: { exportId }, } = await (0, projects_1.cloneApp)(derivedAccountId, appId);
71
+ const { status } = await (0, polling_1.poll)(() => (0, projects_1.checkCloneStatus)(derivedAccountId, exportId));
74
72
  if (status === 'SUCCESS') {
75
73
  // Ensure correct project folder structure exists
76
74
  const baseDestPath = path_1.default.resolve((0, path_2.getCwd)(), projectDest);
77
75
  const absoluteDestPath = path_1.default.resolve(baseDestPath, 'src', 'app');
78
76
  fs_1.default.mkdirSync(absoluteDestPath, { recursive: true });
79
77
  // Extract zipped app files and place them in correct directory
80
- const { data: zippedApp } = await (0, projects_2.downloadClonedProject)(derivedAccountId, exportId);
78
+ const { data: zippedApp } = await (0, projects_1.downloadClonedProject)(derivedAccountId, exportId);
81
79
  await (0, archive_1.extractZipArchive)(zippedApp, (0, path_2.sanitizeFileName)(projectName), absoluteDestPath, {
82
80
  includesRootDir: true,
83
81
  hideLogs: true,
@@ -89,17 +87,19 @@ const handler = async (options) => {
89
87
  srcDir: 'src',
90
88
  platformVersion: '2023.2',
91
89
  };
92
- const success = (0, projects_1.writeProjectConfig)(configPath, configContent);
90
+ const success = (0, config_1.writeProjectConfig)(configPath, configContent);
93
91
  SpinniesManager_1.default.succeed('cloneApp', {
94
- text: (0, lang_1.i18n)(`${i18nKey}.cloneStatus.done`),
92
+ text: (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.cloneStatus.done`),
95
93
  succeedColor: 'white',
96
94
  });
97
95
  if (!success) {
98
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.couldNotWriteConfigPath`), configPath);
96
+ logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.cloneApp.errors.couldNotWriteConfigPath`), configPath);
99
97
  }
100
98
  logger_1.logger.log('');
101
- (0, ui_2.uiLine)();
102
- logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.cloneStatus.success`, { dest: projectDest }));
99
+ (0, ui_1.uiLine)();
100
+ logger_1.logger.success((0, lang_1.i18n)(`commands.project.subcommands.cloneApp.cloneStatus.success`, {
101
+ dest: projectDest,
102
+ }));
103
103
  logger_1.logger.log('');
104
104
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
105
105
  }
@@ -107,7 +107,7 @@ const handler = async (options) => {
107
107
  catch (error) {
108
108
  await (0, usageTracking_1.trackCommandMetadataUsage)('clone-app', { successful: false }, derivedAccountId);
109
109
  SpinniesManager_1.default.fail('cloneApp', {
110
- text: (0, lang_1.i18n)(`${i18nKey}.cloneStatus.failure`),
110
+ text: (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.cloneStatus.failure`),
111
111
  failColor: 'white',
112
112
  });
113
113
  // Migrations endpoints return a response object with an errors property. The errors property contains an array of errors.
@@ -123,33 +123,37 @@ const handler = async (options) => {
123
123
  }
124
124
  await (0, usageTracking_1.trackCommandMetadataUsage)('clone-app', { successful: true }, derivedAccountId);
125
125
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
126
- };
127
- exports.handler = handler;
128
- const builder = (yargs) => {
126
+ }
127
+ function cloneAppBuilder(yargs) {
129
128
  yargs.options({
130
129
  dest: {
131
- describe: (0, lang_1.i18n)(`${i18nKey}.options.dest.describe`),
130
+ describe: (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.options.dest.describe`),
132
131
  type: 'string',
133
132
  },
134
133
  'app-id': {
135
- describe: (0, lang_1.i18n)(`${i18nKey}.options.appId.describe`),
134
+ describe: (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.options.appId.describe`),
136
135
  type: 'number',
137
136
  },
138
137
  });
139
138
  yargs.example([
140
- ['$0 project clone-app', (0, lang_1.i18n)(`${i18nKey}.examples.default`)],
139
+ [
140
+ '$0 project clone-app',
141
+ (0, lang_1.i18n)(`commands.project.subcommands.cloneApp.examples.default`),
142
+ ],
141
143
  ]);
142
- (0, commonOpts_1.addConfigOptions)(yargs);
143
- (0, commonOpts_1.addAccountOptions)(yargs);
144
- (0, commonOpts_1.addUseEnvironmentOptions)(yargs);
145
144
  return yargs;
146
- };
147
- exports.builder = builder;
145
+ }
146
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(cloneAppBuilder, command, describe, {
147
+ useGlobalOptions: true,
148
+ useAccountOptions: true,
149
+ useConfigOptions: true,
150
+ useEnvironmentOptions: true,
151
+ });
148
152
  const cloneAppCommand = {
149
- command: exports.command,
150
- describe: exports.describe,
151
- handler: exports.handler,
152
- builder: exports.builder,
153
- deprecated: exports.deprecated,
153
+ command,
154
+ describe,
155
+ handler,
156
+ builder,
157
+ deprecated,
154
158
  };
155
159
  exports.default = cloneAppCommand;
@@ -1 +1,10 @@
1
- export {};
1
+ import { RepoPath } from '@hubspot/local-dev-lib/types/Github';
2
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../../types/Yargs';
3
+ type ProjectCreateArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
4
+ name?: string;
5
+ dest?: string;
6
+ templateSource?: RepoPath;
7
+ template?: string;
8
+ };
9
+ declare const projectCreateCommand: YargsCommandModule<unknown, ProjectCreateArgs>;
10
+ export default projectCreateCommand;