@hubspot/cli 7.5.11-experimental.0 → 7.7.0-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 (289) hide show
  1. package/bin/cli.js +5 -6
  2. package/bin/hsmcp.d.ts +2 -0
  3. package/bin/hsmcp.js +13 -0
  4. package/commands/account/auth.d.ts +3 -7
  5. package/commands/account/auth.js +19 -9
  6. package/commands/account/clean.d.ts +3 -7
  7. package/commands/account/clean.js +16 -9
  8. package/commands/account/createOverride.d.ts +3 -7
  9. package/commands/account/createOverride.js +23 -6
  10. package/commands/account/info.d.ts +3 -7
  11. package/commands/account/info.js +13 -5
  12. package/commands/account/list.d.ts +3 -7
  13. package/commands/account/list.js +15 -8
  14. package/commands/account/remove.d.ts +3 -7
  15. package/commands/account/remove.js +21 -9
  16. package/commands/account/removeOverride.d.ts +3 -7
  17. package/commands/account/removeOverride.js +23 -6
  18. package/commands/account/rename.d.ts +3 -7
  19. package/commands/account/rename.js +16 -9
  20. package/commands/account/use.d.ts +5 -9
  21. package/commands/account/use.js +14 -6
  22. package/commands/account.d.ts +3 -4
  23. package/commands/account.js +35 -58
  24. package/commands/app/migrate.d.ts +1 -2
  25. package/commands/app/migrate.js +7 -8
  26. package/commands/app/secret/add.d.ts +7 -0
  27. package/commands/app/secret/add.js +64 -0
  28. package/commands/app/secret/delete.d.ts +8 -0
  29. package/commands/app/secret/delete.js +87 -0
  30. package/commands/app/secret/list.d.ts +6 -0
  31. package/commands/app/secret/list.js +64 -0
  32. package/commands/app/secret/update.d.ts +7 -0
  33. package/commands/app/secret/update.js +77 -0
  34. package/commands/app/secret.d.ts +3 -0
  35. package/commands/app/secret.js +30 -0
  36. package/commands/app.d.ts +2 -5
  37. package/commands/app.js +12 -8
  38. package/commands/auth.d.ts +3 -7
  39. package/commands/auth.js +12 -5
  40. package/commands/cms/convertFields.d.ts +7 -1
  41. package/commands/cms/convertFields.js +57 -41
  42. package/commands/cms/getReactModule.d.ts +7 -1
  43. package/commands/cms/getReactModule.js +52 -34
  44. package/commands/cms/lighthouseScore.d.ts +8 -1
  45. package/commands/cms/lighthouseScore.js +129 -100
  46. package/commands/cms.d.ts +3 -1
  47. package/commands/cms.js +24 -15
  48. package/commands/completion.d.ts +3 -1
  49. package/commands/completion.js +25 -12
  50. package/commands/config/migrate.d.ts +3 -7
  51. package/commands/config/migrate.js +25 -15
  52. package/commands/config/set.d.ts +5 -6
  53. package/commands/config/set.js +38 -14
  54. package/commands/config.d.ts +3 -4
  55. package/commands/config.js +20 -44
  56. package/commands/create/api-sample.d.ts +3 -1
  57. package/commands/create/api-sample.js +34 -38
  58. package/commands/create/app.d.ts +3 -1
  59. package/commands/create/app.js +9 -7
  60. package/commands/create/function.d.ts +3 -1
  61. package/commands/create/function.js +11 -10
  62. package/commands/create/index.d.ts +5 -1
  63. package/commands/create/index.js +23 -11
  64. package/commands/create/module.d.ts +3 -1
  65. package/commands/create/module.js +14 -13
  66. package/commands/create/react-app.d.ts +3 -1
  67. package/commands/create/react-app.js +10 -7
  68. package/commands/create/template.d.ts +3 -1
  69. package/commands/create/template.js +14 -14
  70. package/commands/create/vue-app.d.ts +3 -1
  71. package/commands/create/vue-app.js +10 -7
  72. package/commands/create/webpack-serverless.d.ts +3 -1
  73. package/commands/create/webpack-serverless.js +10 -7
  74. package/commands/create/website-theme.d.ts +3 -1
  75. package/commands/create/website-theme.js +10 -9
  76. package/commands/create.d.ts +4 -24
  77. package/commands/create.js +64 -74
  78. package/commands/customObject/create.d.ts +4 -9
  79. package/commands/customObject/create.js +17 -10
  80. package/commands/customObject/schema/create.d.ts +4 -9
  81. package/commands/customObject/schema/create.js +18 -11
  82. package/commands/customObject/schema/delete.d.ts +4 -9
  83. package/commands/customObject/schema/delete.js +17 -10
  84. package/commands/customObject/schema/fetch-all.d.ts +4 -9
  85. package/commands/customObject/schema/fetch-all.js +17 -10
  86. package/commands/customObject/schema/fetch.d.ts +4 -9
  87. package/commands/customObject/schema/fetch.js +17 -10
  88. package/commands/customObject/schema/list.d.ts +4 -8
  89. package/commands/customObject/schema/list.js +17 -10
  90. package/commands/customObject/schema/update.d.ts +4 -9
  91. package/commands/customObject/schema/update.js +18 -11
  92. package/commands/customObject/schema.d.ts +3 -5
  93. package/commands/customObject/schema.js +27 -54
  94. package/commands/customObject.d.ts +3 -4
  95. package/commands/customObject.js +20 -45
  96. package/commands/doctor.d.ts +6 -8
  97. package/commands/doctor.js +32 -21
  98. package/commands/feedback.d.ts +4 -1
  99. package/commands/feedback.js +40 -47
  100. package/commands/fetch.d.ts +12 -1
  101. package/commands/fetch.js +49 -33
  102. package/commands/filemanager/fetch.d.ts +4 -9
  103. package/commands/filemanager/fetch.js +18 -11
  104. package/commands/filemanager/upload.d.ts +4 -9
  105. package/commands/filemanager/upload.js +17 -11
  106. package/commands/filemanager.d.ts +3 -4
  107. package/commands/filemanager.js +20 -41
  108. package/commands/function/deploy.d.ts +6 -1
  109. package/commands/function/deploy.js +70 -50
  110. package/commands/function/list.d.ts +6 -1
  111. package/commands/function/list.js +44 -32
  112. package/commands/function/server.d.ts +10 -1
  113. package/commands/function/server.js +49 -38
  114. package/commands/function.d.ts +5 -1
  115. package/commands/function.js +24 -10
  116. package/commands/hubdb/clear.d.ts +4 -9
  117. package/commands/hubdb/clear.js +17 -10
  118. package/commands/hubdb/create.d.ts +4 -9
  119. package/commands/hubdb/create.js +17 -10
  120. package/commands/hubdb/delete.d.ts +4 -9
  121. package/commands/hubdb/delete.js +17 -10
  122. package/commands/hubdb/fetch.d.ts +4 -9
  123. package/commands/hubdb/fetch.js +17 -10
  124. package/commands/hubdb.d.ts +3 -2
  125. package/commands/hubdb.js +23 -45
  126. package/commands/init.d.ts +3 -7
  127. package/commands/init.js +12 -5
  128. package/commands/lint.d.ts +6 -4
  129. package/commands/lint.js +44 -43
  130. package/commands/list.d.ts +3 -7
  131. package/commands/list.js +19 -11
  132. package/commands/logs.d.ts +10 -1
  133. package/commands/logs.js +53 -44
  134. package/commands/module/marketplace-validate.d.ts +6 -1
  135. package/commands/module/marketplace-validate.js +39 -27
  136. package/commands/module.d.ts +3 -1
  137. package/commands/module.js +22 -10
  138. package/commands/mv.d.ts +3 -7
  139. package/commands/mv.js +19 -11
  140. package/commands/open.d.ts +3 -7
  141. package/commands/open.js +19 -11
  142. package/commands/project/cloneApp.d.ts +1 -1
  143. package/commands/project/cloneApp.js +2 -2
  144. package/commands/project/create.js +3 -3
  145. package/commands/project/deploy.d.ts +1 -0
  146. package/commands/project/deploy.js +40 -12
  147. package/commands/project/dev/index.d.ts +1 -4
  148. package/commands/project/dev/index.js +48 -16
  149. package/commands/project/dev/unifiedFlow.d.ts +2 -1
  150. package/commands/project/dev/unifiedFlow.js +85 -30
  151. package/commands/project/migrate.d.ts +1 -0
  152. package/commands/project/profile/add.d.ts +7 -0
  153. package/commands/project/profile/add.js +209 -0
  154. package/commands/project/profile/delete.d.ts +6 -0
  155. package/commands/project/profile/delete.js +123 -0
  156. package/commands/project/profile.d.ts +3 -0
  157. package/commands/project/profile.js +25 -0
  158. package/commands/project/upload.d.ts +1 -0
  159. package/commands/project/upload.js +38 -8
  160. package/commands/project/validate.d.ts +4 -0
  161. package/commands/project/validate.js +53 -0
  162. package/commands/project.js +4 -0
  163. package/commands/remove.d.ts +3 -7
  164. package/commands/remove.js +19 -11
  165. package/commands/sandbox/create.d.ts +4 -9
  166. package/commands/sandbox/create.js +18 -11
  167. package/commands/sandbox/delete.d.ts +4 -9
  168. package/commands/sandbox/delete.js +18 -11
  169. package/commands/sandbox.d.ts +3 -4
  170. package/commands/sandbox.js +20 -43
  171. package/commands/secret/addSecret.d.ts +4 -9
  172. package/commands/secret/addSecret.js +17 -10
  173. package/commands/secret/deleteSecret.d.ts +4 -9
  174. package/commands/secret/deleteSecret.js +17 -10
  175. package/commands/secret/listSecret.d.ts +4 -9
  176. package/commands/secret/listSecret.js +17 -10
  177. package/commands/secret/updateSecret.d.ts +4 -9
  178. package/commands/secret/updateSecret.js +17 -10
  179. package/commands/secret.d.ts +3 -4
  180. package/commands/secret.js +25 -48
  181. package/commands/setupMcp.d.ts +8 -0
  182. package/commands/setupMcp.js +229 -0
  183. package/commands/theme/generate-selectors.d.ts +3 -7
  184. package/commands/theme/generate-selectors.js +14 -6
  185. package/commands/theme/marketplace-validate.d.ts +4 -9
  186. package/commands/theme/marketplace-validate.js +17 -10
  187. package/commands/theme/preview.d.ts +4 -9
  188. package/commands/theme/preview.js +16 -9
  189. package/commands/theme.d.ts +3 -4
  190. package/commands/theme.js +23 -46
  191. package/commands/upload.d.ts +12 -1
  192. package/commands/upload.js +118 -97
  193. package/commands/watch.d.ts +14 -1
  194. package/commands/watch.js +76 -65
  195. package/lang/en.d.ts +838 -574
  196. package/lang/en.js +630 -373
  197. package/lang/en.lyaml +30 -23
  198. package/lib/accountTypes.js +2 -1
  199. package/lib/app/migrate.d.ts +23 -0
  200. package/lib/app/migrate.js +14 -3
  201. package/lib/app/migrate_legacy.js +7 -7
  202. package/lib/app/urls.d.ts +16 -0
  203. package/lib/app/urls.js +16 -0
  204. package/lib/configMigrate.js +24 -10
  205. package/lib/configOptions.d.ts +4 -0
  206. package/lib/configOptions.js +41 -46
  207. package/lib/constants.d.ts +6 -0
  208. package/lib/constants.js +7 -1
  209. package/lib/dependencyManagement.d.ts +0 -5
  210. package/lib/dependencyManagement.js +13 -39
  211. package/lib/doctor/Doctor.js +2 -1
  212. package/lib/filesystem.d.ts +1 -1
  213. package/lib/interpolation.d.ts +2 -3
  214. package/lib/lang.d.ts +2 -3
  215. package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
  216. package/lib/middleware/autoUpdateMiddleware.js +89 -0
  217. package/lib/middleware/configMiddleware.js +8 -0
  218. package/lib/npm.d.ts +9 -0
  219. package/lib/npm.js +36 -0
  220. package/lib/projectProfiles.d.ts +6 -0
  221. package/lib/projectProfiles.js +65 -0
  222. package/lib/projects/buildAndDeploy.js +17 -2
  223. package/lib/projects/localDev/AppDevModeInterface.d.ts +26 -0
  224. package/lib/projects/localDev/AppDevModeInterface.js +156 -0
  225. package/lib/projects/localDev/DevServerManagerV2.d.ts +11 -22
  226. package/lib/projects/localDev/DevServerManagerV2.js +19 -15
  227. package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
  228. package/lib/projects/localDev/LocalDevLogger.js +158 -0
  229. package/lib/projects/localDev/LocalDevManager.js +12 -5
  230. package/lib/projects/localDev/LocalDevProcess.d.ts +27 -0
  231. package/lib/projects/localDev/LocalDevProcess.js +171 -0
  232. package/lib/projects/localDev/LocalDevState.d.ts +37 -0
  233. package/lib/projects/localDev/LocalDevState.js +78 -0
  234. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  235. package/lib/projects/localDev/LocalDevWatcher.js +56 -0
  236. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +17 -0
  237. package/lib/projects/localDev/LocalDevWebsocketServer.js +92 -0
  238. package/lib/projects/localDev/helpers.d.ts +3 -2
  239. package/lib/projects/localDev/helpers.js +32 -2
  240. package/lib/projects/upload.d.ts +2 -1
  241. package/lib/projects/upload.js +2 -2
  242. package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
  243. package/lib/prompts/createTemplatePrompt.d.ts +22 -4
  244. package/lib/prompts/installAppPrompt.d.ts +1 -0
  245. package/lib/prompts/installAppPrompt.js +35 -0
  246. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
  247. package/lib/prompts/projectDevTargetAccountPrompt.js +6 -6
  248. package/lib/prompts/promptUtils.d.ts +2 -1
  249. package/lib/prompts/promptUtils.js +2 -1
  250. package/lib/prompts/selectAppPrompt.d.ts +2 -0
  251. package/lib/prompts/selectAppPrompt.js +40 -0
  252. package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
  253. package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -8
  254. package/lib/testUtils.d.ts +3 -3
  255. package/lib/testUtils.js +8 -9
  256. package/lib/ui/index.js +4 -1
  257. package/lib/upload.d.ts +1 -1
  258. package/lib/validation.js +4 -5
  259. package/lib/yargsUtils.d.ts +4 -0
  260. package/lib/yargsUtils.js +6 -0
  261. package/mcp-server/index.d.ts +1 -0
  262. package/mcp-server/index.js +17 -0
  263. package/mcp-server/mcpLoader.d.ts +5 -0
  264. package/mcp-server/mcpLoader.js +24 -0
  265. package/mcp-server/tools/ExplainProjectStructureTool.d.ts +33 -0
  266. package/mcp-server/tools/ExplainProjectStructureTool.js +266 -0
  267. package/mcp-server/tools/GenerateAppComponentTool.d.ts +99 -0
  268. package/mcp-server/tools/GenerateAppComponentTool.js +193 -0
  269. package/mcp-server/tools/GenerateCardComponentTool.d.ts +74 -0
  270. package/mcp-server/tools/GenerateCardComponentTool.js +146 -0
  271. package/mcp-server/tools/GenerateProjectConfigTool.d.ts +32 -0
  272. package/mcp-server/tools/GenerateProjectConfigTool.js +40 -0
  273. package/mcp-server/tools/HubSpotCLIHelper.d.ts +16 -0
  274. package/mcp-server/tools/HubSpotCLIHelper.js +74 -0
  275. package/mcp-server/tools/UploadProjectTool.d.ts +44 -0
  276. package/mcp-server/tools/UploadProjectTool.js +149 -0
  277. package/mcp-server/tools/ValidateProjectTool.d.ts +62 -0
  278. package/mcp-server/tools/ValidateProjectTool.js +315 -0
  279. package/package.json +13 -6
  280. package/types/Cms.d.ts +30 -0
  281. package/types/Cms.js +2 -0
  282. package/types/LocalDev.d.ts +24 -0
  283. package/types/LocalDev.js +2 -0
  284. package/types/Prompts.d.ts +0 -7
  285. package/types/Yargs.d.ts +8 -1
  286. package/lib/projects/localDev/LocalDevManagerV2.d.ts +0 -64
  287. package/lib/projects/localDev/LocalDevManagerV2.js +0 -345
  288. package/lib/prompts/installPublicAppPrompt.d.ts +0 -1
  289. package/lib/prompts/installPublicAppPrompt.js +0 -41
package/lang/en.js CHANGED
@@ -4,23 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.lib = exports.commands = void 0;
7
- // @ts-nocheck
8
7
  const chalk_1 = __importDefault(require("chalk"));
9
8
  const ui_1 = require("../lib/ui");
10
9
  const urls_1 = require("../lib/projects/urls");
10
+ const ui_2 = require("../lib/ui");
11
11
  exports.commands = {
12
12
  generalErrors: {
13
- updateNotify: {
14
- notifyTitle: 'Update available',
15
- cmsUpdateNotification: (packageName, updateCommand) => `${chalk_1.default.bold('The CMS CLI is now the HubSpot CLI')}\n\nTo upgrade, uninstall ${chalk_1.default.bold(packageName)}\nand then run ${updateCommand}`,
16
- cliUpdateNotification: (currentVersion, latestVersion, updateCommand) => `HubSpot CLI version ${chalk_1.default.cyan(chalk_1.default.bold(currentVersion))} is outdated.\nRun ${updateCommand} to upgrade to version ${chalk_1.default.cyan(chalk_1.default.bold(latestVersion))}`,
17
- },
18
13
  srcIsProject: (src, command) => `"${src}" is in a project folder. Did you mean "hs project ${command}"?`,
19
14
  handleDeprecatedEnvVariables: {
20
15
  portalEnvVarDeprecated: 'The HUBSPOT_PORTAL_ID environment variable is deprecated. Please use HUBSPOT_ACCOUNT_ID instead.',
21
16
  },
22
17
  loadConfigMiddleware: {
23
- configFileExists: configPath => `A configuration file already exists at ${configPath}. To specify a new configuration file, delete the existing one and try again.`,
18
+ configFileExists: (configPath) => `A configuration file already exists at ${configPath}. To specify a new configuration file, delete the existing one and try again.`,
24
19
  },
25
20
  },
26
21
  completion: {
@@ -34,9 +29,9 @@ exports.commands = {
34
29
  subcommands: {
35
30
  list: {
36
31
  accounts: `${chalk_1.default.bold('Accounts')}:`,
37
- defaultAccount: account => `${chalk_1.default.bold('Default account')}: ${account}`,
32
+ defaultAccount: (account) => `${chalk_1.default.bold('Default account')}: ${account}`,
38
33
  describe: 'List names of accounts defined in config.',
39
- configPath: configPath => `${chalk_1.default.bold('Config path')}: ${configPath}`,
34
+ configPath: (configPath) => `${chalk_1.default.bold('Config path')}: ${configPath}`,
40
35
  labels: {
41
36
  accountId: 'Account ID',
42
37
  authType: 'Auth Type',
@@ -74,7 +69,7 @@ exports.commands = {
74
69
  },
75
70
  promptMessage: 'Select an account to use as the default',
76
71
  success: {
77
- defaultAccountUpdated: accountName => `Default account updated to "${accountName}"`,
72
+ defaultAccountUpdated: (accountName) => `Default account updated to "${accountName}"`,
78
73
  },
79
74
  },
80
75
  remove: {
@@ -99,11 +94,11 @@ exports.commands = {
99
94
  },
100
95
  promptMessage: 'Select an account to remove',
101
96
  success: {
102
- accountRemoved: accountName => `Account "${accountName}" removed from the config`,
97
+ accountRemoved: (accountName) => `Account "${accountName}" removed from the config`,
103
98
  },
104
99
  },
105
100
  info: {
106
- accountId: accountId => `${chalk_1.default.bold('Account ID')}: ${accountId}`,
101
+ accountId: (accountId) => `${chalk_1.default.bold('Account ID')}: ${accountId}`,
107
102
  describe: 'Print information about the default account, or about the account specified with the "account" option.',
108
103
  errors: {
109
104
  notUsingPersonalAccessKey: 'This command currently only supports fetching scopes for the personal access key auth type.',
@@ -113,7 +108,7 @@ exports.commands = {
113
108
  idBased: 'Print information for the account with accountId equal to "1234567"',
114
109
  nameBased: 'Print information for the account in the config with name equal to "MyAccount"',
115
110
  },
116
- name: name => `${chalk_1.default.bold('Account name')}: ${name}`,
111
+ name: (name) => `${chalk_1.default.bold('Account name')}: ${name}`,
117
112
  scopeGroups: `${chalk_1.default.bold('Scopes available')}:`,
118
113
  },
119
114
  clean: {
@@ -124,18 +119,18 @@ exports.commands = {
124
119
  },
125
120
  inactiveAccountsFound: {
126
121
  one: '1 inactive account found:',
127
- other: count => `${count} inactive accounts found:`,
122
+ other: (count) => `${count} inactive accounts found:`,
128
123
  },
129
124
  confirm: {
130
125
  one: 'Remove 1 inactive account from the CLI config?',
131
- other: count => `Remove ${count} inactive accounts from the CLI config?`,
126
+ other: (count) => `Remove ${count} inactive accounts from the CLI config?`,
132
127
  },
133
- removeSuccess: accountName => `Removed ${accountName} from the CLI config.`,
128
+ removeSuccess: (accountName) => `Removed ${accountName} from the CLI config.`,
134
129
  },
135
130
  },
136
131
  },
137
132
  auth: {
138
- describe: configName => `Configure authentication for your HubSpot account. This will update the ${configName} file that stores your account information.`,
133
+ describe: (configName) => `Configure authentication for your HubSpot account. This will update the ${configName} file that stores your account information.`,
139
134
  errors: {
140
135
  noConfigFileFound: 'No config file was found. To create a new config file, use the "hs init" command.',
141
136
  unsupportedAuthType: (type, supportedProtocols) => `Unsupported auth type: ${type}. The only supported authentication protocols are ${supportedProtocols}.`,
@@ -143,7 +138,7 @@ exports.commands = {
143
138
  options: {
144
139
  authType: {
145
140
  describe: 'Authentication mechanism',
146
- defaultDescription: authMethod => `"${authMethod}": An access token tied to a specific user account. This is the recommended way of authenticating with local development tools.`,
141
+ defaultDescription: (authMethod) => `"${authMethod}": An access token tied to a specific user account. This is the recommended way of authenticating with local development tools.`,
147
142
  },
148
143
  account: {
149
144
  describe: 'HubSpot account to authenticate',
@@ -157,7 +152,7 @@ exports.commands = {
157
152
  describe: 'Commands for managing the CLI config file.',
158
153
  subcommands: {
159
154
  set: {
160
- describe: 'Set various configuration options within the hubspot.config.yml file.',
155
+ describe: 'Set various configuration options within the hubspot CLI config file.',
161
156
  promptMessage: 'Select a config option to update',
162
157
  examples: {
163
158
  default: 'Opens a prompt to select a config item to modify',
@@ -165,23 +160,15 @@ exports.commands = {
165
160
  options: {
166
161
  defaultMode: {
167
162
  describe: 'Set the default CMS publish mode',
168
- promptMessage: 'Select CMS publish mode to be used as the default',
169
- error: validModes => `The provided CMS publish mode is invalid. Valid values are ${validModes}.`,
170
- success: mode => `Default mode updated to: ${mode}`,
171
163
  },
172
164
  allowUsageTracking: {
173
165
  describe: 'Enable or disable usage tracking',
174
- promptMessage: 'Choose to enable or disable usage tracking',
175
- success: isEnabled => `Allow usage tracking set to: "${isEnabled}"`,
176
- labels: {
177
- enabled: 'Enabled',
178
- disabled: 'Disabled',
179
- },
180
166
  },
181
167
  httpTimeout: {
182
168
  describe: 'Set the http timeout duration',
183
- promptMessage: 'Enter http timeout duration',
184
- success: timeout => `The http timeout has been set to: ${timeout}`,
169
+ },
170
+ allowAutoUpdates: {
171
+ describe: 'Enable or disable auto updates',
185
172
  },
186
173
  },
187
174
  },
@@ -198,8 +185,8 @@ exports.commands = {
198
185
  info: {
199
186
  promptMessage: 'Select a theme to score',
200
187
  fetchingThemes: 'Fetching available themes',
201
- generatingScore: theme => `Generating Google Lighthouse score for ${theme}`,
202
- targetDeviceNote: target => `Scores are being shown for ${target} only.`,
188
+ generatingScore: (theme) => `Generating Google Lighthouse score for ${theme}`,
189
+ targetDeviceNote: (target) => `Scores are being shown for ${target} only.`,
203
190
  verboseOptionNote: 'Theme scores are averages of all theme templates. Use the [--verbose] option to include individual template scores.',
204
191
  pageTemplateScoreTitle: 'Page template scores',
205
192
  lighthouseLinksTitle: 'Lighthouse links',
@@ -208,7 +195,7 @@ exports.commands = {
208
195
  errors: {
209
196
  targetOptionRequired: '[--target] is required for detailed view',
210
197
  invalidTargetOption: '[--target] can only be used for detailed view',
211
- themeNotFound: theme => `Theme "${theme}" not found. Please rerun using a valid theme path.`,
198
+ themeNotFound: (theme) => `Theme "${theme}" not found. Please rerun using a valid theme path.`,
212
199
  failedToFetchThemes: 'Failed to fetch available themes. Try running again with the [--theme] option',
213
200
  failedToGetLighthouseScore: 'Failed to generate a Google Lighthouse score',
214
201
  },
@@ -239,18 +226,18 @@ exports.commands = {
239
226
  moduleDownloaded: (moduleName, path) => `"${moduleName}" successfully downloaded to "${path}"`,
240
227
  },
241
228
  errors: {
242
- pathExists: path => `Folder already exists at "${path}"`,
229
+ pathExists: (path) => `Folder already exists at "${path}"`,
243
230
  invalidName: 'Module not found with that name, please check the spelling of the module you are trying to download.',
244
231
  },
245
232
  },
246
233
  },
247
234
  },
248
235
  create: {
249
- describe: supportedAssetTypes => `Create HubSpot sample apps and CMS assets. Supported assets are ${supportedAssetTypes}.`,
236
+ describe: (supportedAssetTypes) => `Create HubSpot sample apps and CMS assets. Supported assets are ${supportedAssetTypes}.`,
250
237
  errors: {
251
- deprecatedAssetType: (assetType, newCommand, type) => `The CLI command for asset type ${assetType} has been deprecated in an effort to make it easier to know what asset types can be created. Run the "${newCommand}" command instead. Then when prompted select "${type}".`,
238
+ deprecatedAssetType: (assetType, newCommand, type) => `The CLI command for asset type ${assetType} has been deprecated in an effort to make it easier to know what asset types can be created. Run the ${(0, ui_1.uiCommandReference)(newCommand)}" command instead. Then when prompted select "${type}".`,
252
239
  unsupportedAssetType: (assetType, supportedAssetTypes) => `The asset type ${assetType} is not supported. Supported asset types are ${supportedAssetTypes}.`,
253
- unusablePath: path => `The "${path}" is not a usable path to a directory.`,
240
+ unusablePath: (path) => `The "${path}" is not a usable path to a directory.`,
254
241
  },
255
242
  positionals: {
256
243
  dest: {
@@ -265,7 +252,7 @@ exports.commands = {
265
252
  },
266
253
  subcommands: {
267
254
  apiSample: {
268
- folderOverwritePrompt: folderName => `The folder with name "${folderName}" already exists. Overwrite?`,
255
+ folderOverwritePrompt: (folderName) => `The folder with name "${folderName}" already exists. Overwrite?`,
269
256
  errors: {
270
257
  nameRequired: 'The "name" argument is required when creating an API Sample.',
271
258
  noSamples: 'Currently there are no samples available. Please try again later.',
@@ -274,7 +261,7 @@ exports.commands = {
274
261
  sampleChosen: (sampleType, sampleLanguage) => `You've chosen ${sampleType} sample written on ${sampleLanguage} language`,
275
262
  },
276
263
  success: {
277
- sampleCreated: filePath => `Please follow ${filePath}/README.md to find out how to run the sample`,
264
+ sampleCreated: (filePath) => `Please follow ${filePath}/README.md to find out how to run the sample`,
278
265
  },
279
266
  },
280
267
  module: {
@@ -298,7 +285,7 @@ exports.commands = {
298
285
  describe: 'Create custom object instances.',
299
286
  errors: {
300
287
  invalidObjectDefinition: 'The object definition is invalid. Please check the schema and try again.',
301
- creationFailed: definition => `Object creation from ${definition} failed`,
288
+ creationFailed: (definition) => `Object creation from ${definition} failed`,
302
289
  },
303
290
  options: {
304
291
  path: {
@@ -323,7 +310,7 @@ exports.commands = {
323
310
  describe: 'Create a custom object schema.',
324
311
  errors: {
325
312
  invalidSchema: 'The schema definition is invalid. Please check the schema and try again.',
326
- creationFailed: definition => `Schema creation from ${definition} failed`,
313
+ creationFailed: (definition) => `Schema creation from ${definition} failed`,
327
314
  },
328
315
  options: {
329
316
  definition: {
@@ -331,14 +318,14 @@ exports.commands = {
331
318
  },
332
319
  },
333
320
  success: {
334
- schemaCreated: accountId => `Your schema has been created in account "${accountId}"`,
335
- schemaViewable: url => `Schema can be viewed at ${url}`,
321
+ schemaCreated: (accountId) => `Your schema has been created in account "${accountId}"`,
322
+ schemaViewable: (url) => `Schema can be viewed at ${url}`,
336
323
  },
337
324
  },
338
325
  delete: {
339
326
  describe: 'Delete a custom object schema.',
340
327
  errors: {
341
- delete: name => `Unable to delete ${name}`,
328
+ delete: (name) => `Unable to delete ${name}`,
342
329
  },
343
330
  examples: {
344
331
  default: 'Delete "schemaName" schema',
@@ -354,10 +341,10 @@ exports.commands = {
354
341
  },
355
342
  },
356
343
  success: {
357
- delete: name => `Successfully initiated deletion of ${name}`,
344
+ delete: (name) => `Successfully initiated deletion of ${name}`,
358
345
  },
359
- confirmDelete: name => `Are you sure you want to delete the schema "${name}"?`,
360
- deleteCancelled: name => `Deletion of schema "${name}" cancelled.`,
346
+ confirmDelete: (name) => `Are you sure you want to delete the schema "${name}"?`,
347
+ deleteCancelled: (name) => `Deletion of schema "${name}" cancelled.`,
361
348
  selectSchema: 'Which schema would you like to delete?',
362
349
  },
363
350
  fetchAll: {
@@ -375,14 +362,14 @@ exports.commands = {
375
362
  },
376
363
  },
377
364
  success: {
378
- fetch: path => `Saved schemas to ${path}`,
365
+ fetch: (path) => `Saved schemas to ${path}`,
379
366
  },
380
367
  inputDest: 'Where would you like to save the schemas?',
381
368
  },
382
369
  fetch: {
383
370
  describe: 'Fetch a custom object schema.',
384
371
  errors: {
385
- fetch: name => `Unable to fetch ${name}`,
372
+ fetch: (name) => `Unable to fetch ${name}`,
386
373
  },
387
374
  examples: {
388
375
  default: 'Fetch "schemaId" schema and put it in the current working directory',
@@ -400,7 +387,7 @@ exports.commands = {
400
387
  inputDest: 'What would you like to name the destination file?',
401
388
  success: {
402
389
  save: (name, path) => `The schema "${name}" has been saved to "${path}"`,
403
- savedToPath: path => `Saved schema to ${path}`,
390
+ savedToPath: (path) => `Saved schema to ${path}`,
404
391
  },
405
392
  },
406
393
  list: {
@@ -413,7 +400,7 @@ exports.commands = {
413
400
  describe: 'Update an existing custom object schema.',
414
401
  errors: {
415
402
  invalidSchema: 'The schema definition is invalid. Please check the schema and try again.',
416
- update: definition => `Schema update from ${definition} failed`,
403
+ update: (definition) => `Schema update from ${definition} failed`,
417
404
  },
418
405
  options: {
419
406
  path: {
@@ -426,8 +413,8 @@ exports.commands = {
426
413
  },
427
414
  },
428
415
  success: {
429
- update: accountId => `Your schema has been updated in account "${accountId}"`,
430
- viewAtUrl: url => `Schema can be viewed at ${url}`,
416
+ update: (accountId) => `Your schema has been updated in account "${accountId}"`,
417
+ viewAtUrl: (url) => `Schema can be viewed at ${url}`,
431
418
  },
432
419
  selectSchema: 'Which schema would you like to update?',
433
420
  },
@@ -444,7 +431,7 @@ exports.commands = {
444
431
  generatingDiagnosis: 'Error generating diagnosis',
445
432
  unableToWriteOutputFile: (file, errorMessage) => `Unable to write output to ${chalk_1.default.bold(file)}, ${errorMessage}`,
446
433
  },
447
- outputWritten: filename => `Output written to ${chalk_1.default.bold(filename)}`,
434
+ outputWritten: (filename) => `Output written to ${chalk_1.default.bold(filename)}`,
448
435
  },
449
436
  fetch: {
450
437
  describe: 'Fetch a file, directory or module from HubSpot and write to a path on your computer.',
@@ -494,8 +481,8 @@ exports.commands = {
494
481
  describe: 'Upload a folder or file to the File Manager.',
495
482
  errors: {
496
483
  destinationRequired: 'A destination path needs to be passed',
497
- fileIgnored: path => `The file "${path}" is being ignored via an .hsignore rule`,
498
- invalidPath: path => `The path "${path}" is not a path to a file or folder`,
484
+ fileIgnored: (path) => `The file "${path}" is being ignored via an .hsignore rule`,
485
+ invalidPath: (path) => `The path "${path}" is not a path to a file or folder`,
499
486
  upload: (src, dest) => `Uploading file "${src}" to "${dest}" failed`,
500
487
  uploadingFailed: 'Uploading failed',
501
488
  },
@@ -512,7 +499,7 @@ exports.commands = {
512
499
  },
513
500
  success: {
514
501
  upload: (src, dest, accountId) => `Uploaded file from "${src}" to "${dest}" in the File Manager of account ${accountId}`,
515
- uploadComplete: dest => `Uploading files to "${dest}" in the File Manager is complete`,
502
+ uploadComplete: (dest) => `Uploading files to "${dest}" in the File Manager is complete`,
516
503
  },
517
504
  },
518
505
  },
@@ -522,12 +509,12 @@ exports.commands = {
522
509
  subcommands: {
523
510
  deploy: {
524
511
  debug: {
525
- startingBuildAndDeploy: functionPath => `Starting build and deploy for .functions folder with path: ${functionPath}`,
512
+ startingBuildAndDeploy: (functionPath) => `Starting build and deploy for .functions folder with path: ${functionPath}`,
526
513
  },
527
514
  errors: {
528
- buildError: details => `Build error: ${details}`,
529
- noPackageJson: functionPath => `Unable to find package.json for function ${functionPath}.`,
530
- notFunctionsFolder: functionPath => `Specified path ${functionPath} is not a .functions folder.`,
515
+ buildError: (details) => `Build error: ${details}`,
516
+ noPackageJson: (functionPath) => `Unable to find package.json for function ${functionPath}.`,
517
+ notFunctionsFolder: (functionPath) => `Specified path ${functionPath} is not a .functions folder.`,
531
518
  },
532
519
  examples: {
533
520
  default: 'Build and deploy a new bundle for all functions within the myFunctionFolder.functions folder',
@@ -559,7 +546,7 @@ exports.commands = {
559
546
  },
560
547
  server: {
561
548
  debug: {
562
- startingServer: functionPath => `Starting local test server for .functions folder with path: ${functionPath}`,
549
+ startingServer: (functionPath) => `Starting local test server for .functions folder with path: ${functionPath}`,
563
550
  },
564
551
  examples: {
565
552
  default: 'Run a local function test server.',
@@ -594,7 +581,7 @@ exports.commands = {
594
581
  logs: {
595
582
  removedRows: (deletedRowCount, tableId) => `Removed ${deletedRowCount} rows from HubDB table ${tableId}`,
596
583
  rowCount: (tableId, rowCount) => `HubDB table ${tableId} now contains ${rowCount} rows`,
597
- tableEmpty: tableId => `HubDB table ${tableId} is already empty`,
584
+ tableEmpty: (tableId) => `HubDB table ${tableId} is already empty`,
598
585
  },
599
586
  positionals: {
600
587
  tableId: {
@@ -606,7 +593,7 @@ exports.commands = {
606
593
  describe: 'Create a HubDB table.',
607
594
  enterPath: '[--path] Enter the local path to the file used for import:',
608
595
  errors: {
609
- create: filePath => `Creating the table at "${filePath}" failed`,
596
+ create: (filePath) => `Creating the table at "${filePath}" failed`,
610
597
  pathRequired: 'A path to a local file with a HubDB schema is required to create a HubDB table',
611
598
  invalidCharacters: 'The selected file path contains invalid characters. Please provide a new path and try again.',
612
599
  },
@@ -621,9 +608,9 @@ exports.commands = {
621
608
  },
622
609
  delete: {
623
610
  describe: 'Delete a HubDB table.',
624
- shouldDeleteTable: tableId => `Proceed with deleting HubDB table ${tableId}?`,
611
+ shouldDeleteTable: (tableId) => `Proceed with deleting HubDB table ${tableId}?`,
625
612
  errors: {
626
- delete: tableId => `Deleting the table ${tableId} failed`,
613
+ delete: (tableId) => `Deleting the table ${tableId} failed`,
627
614
  },
628
615
  positionals: {
629
616
  tableId: {
@@ -656,11 +643,11 @@ exports.commands = {
656
643
  },
657
644
  },
658
645
  init: {
659
- describe: configName => `Configure authentication for your HubSpot account. This will create a ${configName} file to store your account information.`,
646
+ describe: (configName) => `Configure authentication for your HubSpot account. This will create a ${configName} file to store your account information.`,
660
647
  options: {
661
648
  authType: {
662
649
  describe: 'Authentication mechanism',
663
- defaultDescription: authMethod => `"${authMethod}": An access token tied to a specific user account. This is the recommended way of authenticating with local development tools.`,
650
+ defaultDescription: (authMethod) => `"${authMethod}": An access token tied to a specific user account. This is the recommended way of authenticating with local development tools.`,
664
651
  },
665
652
  account: {
666
653
  describe: 'HubSpot account to authenticate',
@@ -670,20 +657,20 @@ exports.commands = {
670
657
  },
671
658
  },
672
659
  success: {
673
- configFileCreated: configPath => `Created config file "${configPath}"`,
660
+ configFileCreated: (configPath) => `Created config file "${configPath}"`,
674
661
  configFileUpdated: (account, authType) => `Connected account "${account}" using "${authType}" and set it as the default account`,
675
662
  },
676
663
  logs: {
677
664
  updateConfig: 'To update an existing config file, use the "hs auth" command.',
678
665
  },
679
666
  errors: {
680
- configFileExists: configPath => `The config file ${configPath} already exists.`,
681
- bothConfigFilesNotAllowed: path => `Unable to create config file, because there is an existing one at "${path}". To create a new config file, delete the existing one and try again.`,
667
+ configFileExists: (configPath) => `The config file ${configPath} already exists.`,
668
+ bothConfigFilesNotAllowed: (path) => `Unable to create config file, because there is an existing one at "${path}". To create a new config file, delete the existing one and try again.`,
682
669
  },
683
670
  },
684
671
  lint: {
685
- issuesFound: count => `${count} issues found.`,
686
- groupName: path => `Linting ${path}`,
672
+ issuesFound: (count) => `${count} issues found.`,
673
+ groupName: (path) => `Linting ${path}`,
687
674
  positionals: {
688
675
  path: {
689
676
  describe: 'Local folder to lint',
@@ -692,8 +679,8 @@ exports.commands = {
692
679
  },
693
680
  list: {
694
681
  describe: 'List remote contents of a directory.',
695
- gettingPathContents: path => `Getting contents of ${path}.`,
696
- noFilesFoundAtPath: path => `No files found in ${path}.`,
682
+ gettingPathContents: (path) => `Getting contents of ${path}.`,
683
+ noFilesFoundAtPath: (path) => `No files found in ${path}.`,
697
684
  positionals: {
698
685
  path: {
699
686
  describe: 'Remote directory to list contents',
@@ -756,19 +743,85 @@ exports.commands = {
756
743
  selectLink: 'Select a link to open',
757
744
  },
758
745
  project: {
746
+ profile: {
747
+ describe: 'Commands for managing project profiles',
748
+ verboseDescribe: `Commands for managing project profiles\n\nProfiles are stored at the root of your project's source directory and they make configuration dynamic. Use them to couple specialized configurations of your project to specific HubSpot accounts.\n\nRun ${(0, ui_1.uiCommandReference)('hs project profile add')} to get started!`,
749
+ add: {
750
+ describe: 'Add a new project profile',
751
+ verboseDescribe: `Add a new project profile\n\nProfiles enable you to reference variables in your component configuration files. Use the syntax ${chalk_1.default.bold('\${VARIABLE_NAME}')} to reference profile variables in your component configuration files. Then target the profile using the ${(0, ui_1.uiCommandReference)('--profile')} flag when you upload your project.`,
752
+ example: 'Add a new project profile named hsprofile.qa.json',
753
+ logs: {
754
+ copyExistingProfile: (profileName) => `Found an existing profile. We can copy the variables from ${chalk_1.default.bold(profileName)} into your new profile.`,
755
+ copyExistingProfiles: 'We can copy the variables from one of your existing profiles into your new profile.',
756
+ profileAdded: (profileName) => `Project profile ${chalk_1.default.bold(profileName)} was successfully added`,
757
+ },
758
+ prompts: {
759
+ namePrompt: 'Enter a name for the new project profile: ',
760
+ emptyName: 'Profile name cannot be empty',
761
+ targetAccountPrompt: '[target-account] Select a target account for this profile',
762
+ copyExistingProfilePrompt: 'Select a profile to copy variables from',
763
+ copyExistingProfilePromptEmpty: "Skip (don't copy any variables)",
764
+ invalidProfileName: 'Profile name cannot contain special characters or spaces',
765
+ },
766
+ warnings: {
767
+ duplicateTargetAccount: (targetAccountId) => `The account ${(0, ui_1.uiAccountDescription)(targetAccountId)} is being used in an existing profile. Make sure to edit your project's name between uploads if you do not want to overwrite the existing project in this account.`,
768
+ },
769
+ errors: {
770
+ noProjectConfig: 'No project config found. Please run this command from a project directory.',
771
+ profileExists: (profileName) => `Profile ${chalk_1.default.bold(profileName)} already exists. Please choose a different name.`,
772
+ invalidTargetAccount: 'Target account is not configured in the CLI',
773
+ noAccountsConfigured: 'No accounts configured in the CLI',
774
+ failedToLoadProfile: (profileName) => `Unable to copy variables. Failed to load profile ${chalk_1.default.bold(profileName)}`,
775
+ failedToCreateProfile: 'Failed to create profile',
776
+ },
777
+ positionals: {
778
+ name: 'The name of the project profile',
779
+ },
780
+ options: {
781
+ targetAccount: 'The target account ID for this profile',
782
+ },
783
+ },
784
+ delete: {
785
+ describe: 'Delete an existing project profile',
786
+ example: 'Delete a project profile named hsprofile.qa.json',
787
+ logs: {
788
+ profileDeleted: (profileName) => `Project profile ${chalk_1.default.bold(profileName)} was successfully deleted`,
789
+ deletedProject: (accountId) => `Successfully deleted the project from ${(0, ui_1.uiAccountDescription)(accountId)}`,
790
+ didNotDeleteProject: (accountId) => `Did not delete the project from ${(0, ui_1.uiAccountDescription)(accountId)}`,
791
+ },
792
+ debug: {
793
+ failedToLoadProfile: (profileName) => `Failed to load profile ${chalk_1.default.bold(profileName)}`,
794
+ },
795
+ prompts: {
796
+ deleteProfilePrompt: 'Select a profile to delete from your project',
797
+ deleteProjectPrompt: (accountId) => `Would you like to delete this project from ${(0, ui_1.uiAccountDescription)(accountId)}?`,
798
+ },
799
+ errors: {
800
+ noProjectConfig: 'No project config found. Please run this command from a project directory.',
801
+ noProfileFound: (profileName) => `No profile with filename ${chalk_1.default.bold(profileName)} found in your project.`,
802
+ noProfilesFound: 'No profiles found in your project.',
803
+ failedToDeleteProfile: (profileName) => `Unable to delete profile ${chalk_1.default.bold(profileName)}. Please try again.`,
804
+ },
805
+ positionals: {
806
+ name: 'The name of the project profile',
807
+ },
808
+ },
809
+ },
759
810
  dev: {
760
811
  describe: 'Start local dev for the current project.',
761
812
  logs: {
762
813
  betaMessage: 'HubSpot projects local development',
763
814
  placeholderAccountSelection: 'Using default account as target account (for now)',
764
815
  learnMoreLocalDevServer: 'Learn more about the projects local dev server',
816
+ accountTypeInformation: 'Testing in a developer test account is strongly recommended, but you can use a sandbox account if your plan allows you to create one.',
817
+ learnMoreMessage: `Visit our ${(0, ui_1.uiLink)('docs on Developer Test and Sandbox accounts', 'https://developers.hubspot.com/docs/getting-started/account-types')} to learn more.`,
765
818
  },
766
819
  errors: {
767
820
  noProjectConfig: 'No project detected. Please run this command again from a project directory.',
768
821
  noAccount: (accountId, authCommand) => `An error occurred while reading account ${accountId} from your config. Run ${chalk_1.default.bold(authCommand)} to re-auth this account.`,
769
- noAccountsInConfig: authCommand => `No accounts found in your config. Run ${chalk_1.default.bold(authCommand)} to configure a HubSpot account with the CLI.`,
822
+ noAccountsInConfig: (authCommand) => `No accounts found in your config. Run ${chalk_1.default.bold(authCommand)} to configure a HubSpot account with the CLI.`,
770
823
  invalidProjectComponents: 'Projects cannot contain both private and public apps. Move your apps to separate projects before attempting local development.',
771
- noRunnableComponents: command => `No supported components were found in this project. Run ${chalk_1.default.bold(command)} to see a list of available components and add one to your project.`,
824
+ noRunnableComponents: (command) => `No supported components were found in this project. Run ${chalk_1.default.bold(command)} to see a list of available components and add one to your project.`,
772
825
  },
773
826
  examples: {
774
827
  default: 'Start local dev for the current project',
@@ -780,7 +833,7 @@ exports.commands = {
780
833
  failedToDownloadProject: 'Failed to download project. Please try again later.',
781
834
  invalidTemplateSource: 'Invalid template source provided. Use the format <Owner>/<Repo> and try again.',
782
835
  failedToFetchProjectList: 'Failed to fetch the list of available project templates. Please try again later.',
783
- cannotNestProjects: projectDir => `A project already exists at ${projectDir}. Projects cannot be nested within other projects. Please choose a different destination and try again.`,
836
+ cannotNestProjects: (projectDir) => `A project already exists at ${projectDir}. Projects cannot be nested within other projects. Please choose a different destination and try again.`,
784
837
  },
785
838
  logs: {
786
839
  success: (projectName, projectDest) => `Project ${chalk_1.default.bold(projectName)} was successfully created in ${projectDest}`,
@@ -848,7 +901,7 @@ exports.commands = {
848
901
  preamble: (platformVersion) => `This command will migrate an existing project to platformVersion ${platformVersion}. It will walk you through the fields required to complete the migration and download the new project source code into the project source directory. It will also copy all of your existing files to a new directory (archive) in case you need access to your old files later.`,
849
902
  describe: 'Migrate an existing project to the new version of the projects framework.',
850
903
  errors: {
851
- noProjectConfig: command => `No project detected. Please run this command again from a project directory. If you are trying to migrate an app, run ${command}`,
904
+ noProjectConfig: (command) => `No project detected. Please run this command again from a project directory. If you are trying to migrate an app, run ${command}`,
852
905
  },
853
906
  examples: {
854
907
  default: 'Migrate an existing project to the new version of the projects framework.',
@@ -870,13 +923,13 @@ exports.commands = {
870
923
  cloneStatus: {
871
924
  inProgress: () => `Cloning app configuration to ${chalk_1.default.bold('public-app.json')} component definition ...`,
872
925
  done: 'Cloning app configuration to public-app.json component definition ... DONE',
873
- success: dest => `Your cloned project was created in ${dest}`,
926
+ success: (dest) => `Your cloned project was created in ${dest}`,
874
927
  failure: 'Cloning app configuration to public-app.json component definition ... FAILED',
875
928
  },
876
929
  errors: {
877
930
  invalidAccountTypeTitle: () => `${chalk_1.default.bold('Developer account not targeted')}`,
878
931
  invalidAccountTypeDescription: (useCommand, authCommand) => `Only public apps created in a developer account can be converted to a project component. Select a connected developer account with ${useCommand} or ${authCommand} and try again.`,
879
- couldNotWriteConfigPath: configPath => `Failed to write project config at ${configPath}`,
932
+ couldNotWriteConfigPath: (configPath) => `Failed to write project config at ${configPath}`,
880
933
  },
881
934
  },
882
935
  add: {
@@ -889,8 +942,8 @@ exports.commands = {
889
942
  describe: "The path to the component type's location within the hubspot-project-components Github repo: https://github.com/HubSpot/hubspot-project-components",
890
943
  },
891
944
  },
892
- creatingComponent: projectName => `Adding a new component to ${chalk_1.default.bold(projectName)}`,
893
- success: componentName => `${componentName} was successfully added to your project.`,
945
+ creatingComponent: (projectName) => `Adding a new component to ${chalk_1.default.bold(projectName)}`,
946
+ success: (componentName) => `${componentName} was successfully added to your project.`,
894
947
  error: {
895
948
  failedToDownloadComponent: 'Failed to download project component. Please try again later.',
896
949
  locationInProject: 'This command must be run from within a project directory.',
@@ -906,10 +959,10 @@ exports.commands = {
906
959
  describe: 'Deploy a project build.',
907
960
  deployBuildIdPrompt: '[--build] Deploy which build?',
908
961
  debug: {
909
- deploying: path => `Deploying project at path: ${path}`,
962
+ deploying: (path) => `Deploying project at path: ${path}`,
910
963
  },
911
964
  errors: {
912
- deploy: details => `Deploy error: ${details}`,
965
+ deploy: (details) => `Deploy error: ${details}`,
913
966
  noBuilds: 'Deploy error: no builds for this project were found.',
914
967
  noBuildId: 'You must specify a build to deploy',
915
968
  projectNotFound: (projectName, accountIdentifier, command) => `The project ${chalk_1.default.bold(projectName)} does not exist in account ${accountIdentifier}. Run ${command} to upload your project files to HubSpot.`,
@@ -938,7 +991,7 @@ exports.commands = {
938
991
  showingRecentBuilds: (count, projectName, viewAllBuildsLink) => `Showing the most ${count} recent builds for ${projectName}. ${viewAllBuildsLink}.`,
939
992
  errors: {
940
993
  noBuilds: 'No builds for this project were found.',
941
- projectNotFound: projectName => `Project ${projectName} not found.`,
994
+ projectNotFound: (projectName) => `Project ${projectName} not found.`,
942
995
  },
943
996
  options: {
944
997
  project: {
@@ -959,15 +1012,15 @@ exports.commands = {
959
1012
  failedToFetchProjectDetails: 'There was an error fetching project details',
960
1013
  noFunctionsLinkText: 'Visit developer docs',
961
1014
  noFunctionsInProject: `There aren't any functions in this project\n\t- Run ${(0, ui_1.uiCommandReference)('hs project logs --help')} to learn more about logs\n\t- ${(0, ui_1.uiLink)('Visit developer docs', 'https://developers.hubspot.com/docs/platform/serverless-functions')} to learn more about serverless functions`,
962
- noFunctionWithName: name => `No function with name "${name}"`,
963
- functionNotDeployed: name => `The function with name "${name}" is not deployed`,
1015
+ noFunctionWithName: (name) => `No function with name "${name}"`,
1016
+ functionNotDeployed: (name) => `The function with name "${name}" is not deployed`,
964
1017
  projectLogsManagerNotInitialized: 'Function called on ProjectLogsManager before initialization',
965
1018
  generic: 'Error fetching logs',
966
1019
  },
967
1020
  logs: {
968
1021
  showingLogs: 'Showing logs for:',
969
1022
  hubspotLogsDirectLink: 'View function logs in HubSpot',
970
- noLogsFound: name => `No logs were found for "${name}"`,
1023
+ noLogsFound: (name) => `No logs were found for "${name}"`,
971
1024
  },
972
1025
  table: {
973
1026
  accountHeader: 'Account',
@@ -1005,10 +1058,10 @@ exports.commands = {
1005
1058
  default: 'Upload a project into your HubSpot account',
1006
1059
  },
1007
1060
  logs: {
1008
- buildSucceeded: buildId => `Build #${buildId} succeeded\n`,
1061
+ buildSucceeded: (buildId) => `Build #${buildId} succeeded\n`,
1009
1062
  readyToGoLive: '🚀 Ready to take your project live?',
1010
- runCommand: command => `Run \`${command}\``,
1011
- autoDeployDisabled: deployCommand => `Automatic deploys are disabled for this project. Run ${deployCommand} to deploy this build.`,
1063
+ runCommand: (command) => `Run \`${command}\``,
1064
+ autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${deployCommand} to deploy this build.`,
1012
1065
  },
1013
1066
  errors: {
1014
1067
  projectLockedError: () => `Your project is locked. This may mean that another user is running the ${chalk_1.default.bold('`hs project dev`')} command for this project. If this is you, unlock the project in Projects UI.`,
@@ -1032,9 +1085,9 @@ exports.commands = {
1032
1085
  watchCancelledFromUi: `The watch process has been cancelled from the UI. Any changes made since cancelling have not been uploaded. To resume watching, rerun ${(0, ui_1.uiCommandReference)('hs project watch')}.`,
1033
1086
  resuming: 'Resuming watcher...',
1034
1087
  uploadSucceeded: (remotePath, filePath) => `Uploaded file "${filePath}" to "${remotePath}"`,
1035
- deleteFileSucceeded: remotePath => `Deleted file "${remotePath}"`,
1036
- deleteFolderSucceeded: remotePath => `Deleted folder "${remotePath}"`,
1037
- watching: projectDir => `Watcher is ready and watching "${projectDir}". Any changes detected will be automatically uploaded.`,
1088
+ deleteFileSucceeded: (remotePath) => `Deleted file "${remotePath}"`,
1089
+ deleteFolderSucceeded: (remotePath) => `Deleted folder "${remotePath}"`,
1090
+ watching: (projectDir) => `Watcher is ready and watching "${projectDir}". Any changes detected will be automatically uploaded.`,
1038
1091
  previousStagingBuildCancelled: 'Killed the previous watch process. Please try running `hs project watch` again',
1039
1092
  },
1040
1093
  options: {
@@ -1045,18 +1098,18 @@ exports.commands = {
1045
1098
  debug: {
1046
1099
  pause: 'Pausing watcher, attempting to queue build',
1047
1100
  buildStarted: 'Build queued.',
1048
- extensionNotAllowed: filePath => `Skipping "${filePath}" due to unsupported extension`,
1049
- ignored: filePath => `Skipping "${filePath}" due to an ignore rule`,
1101
+ extensionNotAllowed: (filePath) => `Skipping "${filePath}" due to unsupported extension`,
1102
+ ignored: (filePath) => `Skipping "${filePath}" due to an ignore rule`,
1050
1103
  uploading: (filePath, remotePath) => `Attempting to upload file "${filePath}" to "${remotePath}"`,
1051
1104
  attemptNewBuild: 'Attempting to create a new build',
1052
- fileAlreadyQueued: filePath => `File "${filePath}" is already queued for upload`,
1105
+ fileAlreadyQueued: (filePath) => `File "${filePath}" is already queued for upload`,
1053
1106
  },
1054
1107
  errors: {
1055
1108
  projectConfigNotFound: 'No project config found. Please ensure that you are in a project directory.',
1056
1109
  projectLockedError: `Your project is locked. This may mean that another user is running the ${chalk_1.default.bold(`hs project dev`)} command for this project. If this is you, unlock the project in Projects UI.`,
1057
1110
  uploadFailed: (remotePath, filePath) => `Failed to upload file "${filePath}" to "${remotePath}"`,
1058
- deleteFileFailed: remotePath => `Failed to delete file "${remotePath}"`,
1059
- deleteFolderFailed: remotePath => `Failed to delete folder "${remotePath}"`,
1111
+ deleteFileFailed: (remotePath) => `Failed to delete file "${remotePath}"`,
1112
+ deleteFolderFailed: (remotePath) => `Failed to delete folder "${remotePath}"`,
1060
1113
  },
1061
1114
  },
1062
1115
  download: {
@@ -1097,25 +1150,13 @@ exports.commands = {
1097
1150
  examples: {
1098
1151
  default: 'Opens the projects page for the specified account',
1099
1152
  },
1100
- success: projectName => `Successfully opened "${projectName}"`,
1153
+ success: (projectName) => `Successfully opened "${projectName}"`,
1101
1154
  },
1102
1155
  feedback: {
1103
- describe: 'Leave feedback on HubSpot projects or file a bug report.',
1104
- feedbackType: {
1105
- prompt: 'What type of feedback would you like to leave?',
1106
- bug: '[--bug] Report a bug',
1107
- general: "[--general] Tell us about your experience with HubSpot's developer tools",
1108
- },
1109
- openPrompt: 'Create a Github issue in your browser?',
1110
- success: url => `We opened ${url} in your browser.`,
1111
- options: {
1112
- bug: {
1113
- describe: 'Open Github issues in your browser to report a bug.',
1114
- },
1115
- general: {
1116
- describe: 'Open Github issues in your browser to give feedback.',
1117
- },
1118
- },
1156
+ describe: 'Leave feedback or file a bug report.',
1157
+ openPrompt: 'Open the feedback form in your browser?',
1158
+ success: (url) => `We opened ${(0, ui_1.uiLink)('the developer feedback form', url)} in your browser.`,
1159
+ error: (url) => `Navigate to ${(0, ui_1.uiLink)('the developer feedback form', url)} to leave feedback.`,
1119
1160
  },
1120
1161
  installDeps: {
1121
1162
  help: {
@@ -1125,10 +1166,10 @@ exports.commands = {
1125
1166
  },
1126
1167
  installLocationPrompt: 'Choose the project components to install the dependencies:',
1127
1168
  installLocationPromptRequired: 'You must choose at least one subcomponent',
1128
- installingDependencies: directory => `Installing dependencies in ${directory}`,
1129
- installationSuccessful: directory => `Installed dependencies in ${directory}`,
1169
+ installingDependencies: (directory) => `Installing dependencies in ${directory}`,
1170
+ installationSuccessful: (directory) => `Installed dependencies in ${directory}`,
1130
1171
  addingDependenciesToLocation: (dependencies, directory) => `Installing ${dependencies} in ${directory}`,
1131
- installingDependenciesFailed: directory => `Installing dependencies for ${directory} failed`,
1172
+ installingDependenciesFailed: (directory) => `Installing dependencies for ${directory} failed`,
1132
1173
  noProjectConfig: 'No project detected. Run this command from a project directory.',
1133
1174
  noPackageJsonInProject: (projectName, link) => `No dependencies to install. The project ${projectName} folder might be missing component or subcomponent files. ${link}`,
1134
1175
  packageManagerNotInstalled: (packageManager, link) => `This command depends on ${packageManager}, install ${chalk_1.default.bold(link)}`,
@@ -1152,8 +1193,8 @@ exports.commands = {
1152
1193
  create: {
1153
1194
  developer: {
1154
1195
  loading: {
1155
- add: accountName => `Creating developer sandbox ${chalk_1.default.bold(accountName)}`,
1156
- fail: accountName => `Failed to create a developer sandbox ${chalk_1.default.bold(accountName)}.`,
1196
+ add: (accountName) => `Creating developer sandbox ${chalk_1.default.bold(accountName)}`,
1197
+ fail: (accountName) => `Failed to create a developer sandbox ${chalk_1.default.bold(accountName)}.`,
1157
1198
  succeed: (accountName, accountId) => `Successfully created a developer sandbox ${chalk_1.default.bold(accountName)} with portalId ${chalk_1.default.bold(accountId)}.`,
1158
1199
  },
1159
1200
  success: {
@@ -1171,8 +1212,8 @@ exports.commands = {
1171
1212
  },
1172
1213
  standard: {
1173
1214
  loading: {
1174
- add: accountName => `Creating standard sandbox ${chalk_1.default.bold(accountName)}`,
1175
- fail: accountName => `Failed to create a standard sandbox ${chalk_1.default.bold(accountName)}.`,
1215
+ add: (accountName) => `Creating standard sandbox ${chalk_1.default.bold(accountName)}`,
1216
+ fail: (accountName) => `Failed to create a standard sandbox ${chalk_1.default.bold(accountName)}.`,
1176
1217
  succeed: (accountName, accountId) => `Successfully created a standard sandbox ${chalk_1.default.bold(accountName)} with portalId ${chalk_1.default.bold(accountId)}.`,
1177
1218
  },
1178
1219
  success: {
@@ -1192,14 +1233,14 @@ exports.commands = {
1192
1233
  delete: {
1193
1234
  describe: 'Delete a sandbox account.',
1194
1235
  debug: {
1195
- deleting: account => `Deleting sandbox account "${account}"`,
1236
+ deleting: (account) => `Deleting sandbox account "${account}"`,
1196
1237
  error: 'Error deleting sandbox account:',
1197
1238
  },
1198
1239
  examples: {
1199
1240
  default: 'Deletes the sandbox account named MySandboxAccount.',
1200
1241
  },
1201
- confirm: account => `Delete sandbox ${chalk_1.default.bold(account)}? All data for this sandbox will be permanently deleted.`,
1202
- defaultAccountWarning: account => `The sandbox ${chalk_1.default.bold(account)} is currently set as the default account.`,
1242
+ confirm: (account) => `Delete sandbox ${chalk_1.default.bold(account)}? All data for this sandbox will be permanently deleted.`,
1243
+ defaultAccountWarning: (account) => `The sandbox ${chalk_1.default.bold(account)} is currently set as the default account.`,
1203
1244
  success: {
1204
1245
  delete: (account, sandboxHubId) => `Sandbox "${account}" with portalId "${sandboxHubId}" was deleted successfully.`,
1205
1246
  deleteDefault: (account, sandboxHubId) => `Sandbox "${account}" with portalId "${sandboxHubId}" was deleted successfully and removed as the default account.`,
@@ -1208,10 +1249,10 @@ exports.commands = {
1208
1249
  failure: {
1209
1250
  invalidUser: (accountName, parentAccountName) => `Couldn't delete ${accountName} because your account has been removed from ${parentAccountName} or your permission set doesn't allow you to delete the sandbox. To update your permissions, contact a super admin in ${parentAccountName}.`,
1210
1251
  noAccount: 'No account specified. Specify an account by using the --account flag.',
1211
- noSandboxAccounts: authCommand => `There are no sandboxes connected to the CLI. To add a sandbox, run ${authCommand}.`,
1252
+ noSandboxAccounts: (authCommand) => `There are no sandboxes connected to the CLI. To add a sandbox, run ${authCommand}.`,
1212
1253
  noSandboxAccountId: "This sandbox can't be deleted from the CLI because we could not find the associated sandbox account.",
1213
- noParentAccount: authCommand => `This sandbox can't be deleted from the CLI because you haven't given the CLI access to its parent account. To do this, run ${authCommand} and add the parent account.`,
1214
- objectNotFound: account => `Sandbox ${chalk_1.default.bold(account)} may have been deleted through the UI. The account has been removed from the config.`,
1254
+ noParentAccount: (authCommand) => `This sandbox can't be deleted from the CLI because you haven't given the CLI access to its parent account. To do this, run ${authCommand} and add the parent account.`,
1255
+ objectNotFound: (account) => `Sandbox ${chalk_1.default.bold(account)} may have been deleted through the UI. The account has been removed from the config.`,
1215
1256
  noParentPortalAvailable: (command, url) => `This sandbox can't be deleted from the CLI because you haven't given the CLI access to its parent account. To do this, run ${command}. You can also delete the sandbox from the HubSpot management tool: ${chalk_1.default.bold(url)}.`,
1216
1257
  invalidKey: (account, authCommand) => `Your personal access key for account ${chalk_1.default.bold(account)} is inactive. To re-authenticate, please run ${authCommand}.`,
1217
1258
  },
@@ -1227,9 +1268,9 @@ exports.commands = {
1227
1268
  },
1228
1269
  sync: {
1229
1270
  loading: {
1230
- add: accountName => `Syncing sandbox ${chalk_1.default.bold(accountName)}`,
1231
- fail: accountName => `Failed to sync sandbox ${chalk_1.default.bold(accountName)}.`,
1232
- succeed: accountName => `Successfully synced sandbox ${chalk_1.default.bold(accountName)}.`,
1271
+ add: (accountName) => `Syncing sandbox ${chalk_1.default.bold(accountName)}`,
1272
+ fail: (accountName) => `Failed to sync sandbox ${chalk_1.default.bold(accountName)}.`,
1273
+ succeed: (accountName) => `Successfully synced sandbox ${chalk_1.default.bold(accountName)}.`,
1233
1274
  },
1234
1275
  success: {
1235
1276
  configFileUpdated: (accountName, authType) => `Account "${accountName}" updated using "${authType}"`,
@@ -1243,13 +1284,81 @@ exports.commands = {
1243
1284
  },
1244
1285
  },
1245
1286
  },
1287
+ app: {
1288
+ describe: 'Commands for managing apps.',
1289
+ subcommands: {
1290
+ secret: {
1291
+ describe: 'Commands for managing secrets.',
1292
+ subcommands: {
1293
+ add: {
1294
+ describe: 'Create a new app secret.',
1295
+ positionals: {
1296
+ name: 'Name of the secret',
1297
+ },
1298
+ errors: {
1299
+ noApps: `Please create a new app to add an app secret. Use ${(0, ui_1.uiCommandReference)('hs project create')} to create a new project and begin the app creation process.`,
1300
+ },
1301
+ options: {
1302
+ app: 'The app id to set the secret for',
1303
+ },
1304
+ example: 'Add a secret named "my-secret" to the app with ID 1234567890',
1305
+ success: (appName, secretName) => `App secret "${secretName}" was added to "${appName}"`,
1306
+ },
1307
+ delete: {
1308
+ describe: 'Delete an app secret.',
1309
+ confirmDelete: (appName, secretName) => `Are you sure you want to delete the secret "${secretName}" from "${appName}"?`,
1310
+ deleteCanceled: 'Delete canceled',
1311
+ selectSecret: 'Select the secret you want to delete',
1312
+ errors: {
1313
+ noSecrets: 'No secrets found for the given app',
1314
+ },
1315
+ positionals: {
1316
+ name: 'Name of the secret',
1317
+ },
1318
+ options: {
1319
+ app: 'The app id to delete the secret for',
1320
+ force: 'Force the deletion without confirmation',
1321
+ },
1322
+ example: 'Delete a secret named "my-secret" from the app with ID 1234567890',
1323
+ success: (appName, secretName) => `App secret "${secretName}" was removed from "${appName}"`,
1324
+ },
1325
+ list: {
1326
+ describe: 'List all app secrets.',
1327
+ example: 'List all secrets for the app with ID 1234567890',
1328
+ options: {
1329
+ app: 'The app id to list the secrets for',
1330
+ },
1331
+ errors: {
1332
+ noSecrets: 'No secrets found for the given app',
1333
+ },
1334
+ success: (appName) => `Showing secrets for "${appName}":`,
1335
+ },
1336
+ update: {
1337
+ describe: 'Update an app secret.',
1338
+ selectSecret: 'Select the secret you want to update',
1339
+ errors: {
1340
+ noSecrets: 'No secrets found for the given app',
1341
+ },
1342
+ positionals: {
1343
+ name: 'Name of the secret',
1344
+ },
1345
+ options: {
1346
+ app: 'The app id to update the secret for',
1347
+ },
1348
+ example: 'Update a secret named "my-secret" for the app with ID 1234567890',
1349
+ success: (appName, secretName) => `App secret "${secretName}" was updated in "${appName}"`,
1350
+ },
1351
+ },
1352
+ },
1353
+ },
1354
+ },
1246
1355
  secret: {
1247
1356
  describe: 'Commands for managing secrets.',
1248
1357
  subcommands: {
1249
1358
  add: {
1250
1359
  describe: 'Create a new secret.',
1251
1360
  errors: {
1252
- add: secretName => `The secret "${secretName}" was not added`,
1361
+ add: (secretName) => `The secret "${secretName}" was not added`,
1253
1362
  alreadyExists: (secretName, command) => `The secret "${secretName}" already exists, it's value can be modified with ${command}`,
1254
1363
  },
1255
1364
  positionals: {
@@ -1265,10 +1374,10 @@ exports.commands = {
1265
1374
  describe: 'Delete a secret.',
1266
1375
  selectSecret: 'Select the secret you want to delete',
1267
1376
  deleteCanceled: 'Delete canceled',
1268
- confirmDelete: secretName => `Are you sure you want to delete the secret "${secretName}"?`,
1377
+ confirmDelete: (secretName) => `Are you sure you want to delete the secret "${secretName}"?`,
1269
1378
  errors: {
1270
- delete: secretName => `The secret "${secretName}" was not deleted`,
1271
- noSecret: secretName => `Unable to delete secret with name "${secretName}", it does not exist`,
1379
+ delete: (secretName) => `The secret "${secretName}" was not deleted`,
1380
+ noSecret: (secretName) => `Unable to delete secret with name "${secretName}", it does not exist`,
1272
1381
  },
1273
1382
  positionals: {
1274
1383
  name: {
@@ -1284,14 +1393,14 @@ exports.commands = {
1284
1393
  errors: {
1285
1394
  list: 'The secrets could not be listed',
1286
1395
  },
1287
- groupLabel: accountIdentifier => `Secrets for account ${accountIdentifier}:`,
1396
+ groupLabel: (accountIdentifier) => `Secrets for account ${accountIdentifier}:`,
1288
1397
  },
1289
1398
  update: {
1290
1399
  describe: 'Update an existing secret.',
1291
1400
  selectSecret: 'Select the secret you want to update',
1292
1401
  errors: {
1293
- update: secretName => `The secret "${secretName}" was not updated`,
1294
- noSecret: secretName => `Unable to update secret with name "${secretName}", it does not exist`,
1402
+ update: (secretName) => `The secret "${secretName}" was not updated`,
1403
+ noSecret: (secretName) => `Unable to update secret with name "${secretName}", it does not exist`,
1295
1404
  },
1296
1405
  positionals: {
1297
1406
  name: {
@@ -1311,7 +1420,7 @@ exports.commands = {
1311
1420
  generateSelectors: {
1312
1421
  describe: 'Automatically generates an editor-preview.json file for the given theme. The selectors this command generates are not perfect, so please edit editor-preview.json after running.',
1313
1422
  errors: {
1314
- invalidPath: themePath => `Could not find directory "${themePath}"`,
1423
+ invalidPath: (themePath) => `Could not find directory "${themePath}"`,
1315
1424
  fieldsNotFound: "Unable to find theme's fields.json.",
1316
1425
  noSelectorsFound: 'No selectors found.',
1317
1426
  },
@@ -1325,17 +1434,17 @@ exports.commands = {
1325
1434
  marketplaceValidate: {
1326
1435
  describe: 'Validate a theme for the marketplace.',
1327
1436
  errors: {
1328
- invalidPath: path => `The path "${path}" is not a path to a folder in the Design Manager`,
1437
+ invalidPath: (path) => `The path "${path}" is not a path to a folder in the Design Manager`,
1329
1438
  },
1330
1439
  logs: {
1331
- validatingTheme: path => `Validating theme "${path}" \n`,
1440
+ validatingTheme: (path) => `Validating theme "${path}" \n`,
1332
1441
  },
1333
1442
  results: {
1334
1443
  required: 'Required validation results:',
1335
1444
  recommended: 'Recommended validation results:',
1336
1445
  warnings: {
1337
- file: file => `File: ${file}`,
1338
- lineNumber: line => `Line number: ${line}`,
1446
+ file: (file) => `File: ${file}`,
1447
+ lineNumber: (line) => `Line number: ${line}`,
1339
1448
  },
1340
1449
  noErrors: 'No errors',
1341
1450
  },
@@ -1348,7 +1457,7 @@ exports.commands = {
1348
1457
  preview: {
1349
1458
  describe: 'Upload and watch a theme directory on your computer for changes and start a local development server to preview theme changes on a site.',
1350
1459
  errors: {
1351
- invalidPath: path => `The path "${path}" is not a path to a directory`,
1460
+ invalidPath: (path) => `The path "${path}" is not a path to a directory`,
1352
1461
  noThemeComponents: 'Your project has no theme components available to preview.',
1353
1462
  },
1354
1463
  positionals: {
@@ -1387,10 +1496,10 @@ exports.commands = {
1387
1496
  marketplaceValidate: {
1388
1497
  describe: 'Validate a module for the marketplace. Make sure to include the suffix .module in the path to the module within the Design Manager.',
1389
1498
  errors: {
1390
- invalidPath: path => `The path "${path}" is not a path to a module within the Design Manager.`,
1499
+ invalidPath: (path) => `The path "${path}" is not a path to a module within the Design Manager.`,
1391
1500
  },
1392
1501
  logs: {
1393
- validatingModule: path => `Validating module "${path}" \n`,
1502
+ validatingModule: (path) => `Validating module "${path}" \n`,
1394
1503
  },
1395
1504
  options: {
1396
1505
  json: {
@@ -1401,8 +1510,8 @@ exports.commands = {
1401
1510
  required: 'Required validation results:',
1402
1511
  recommended: 'Recommended validation results:',
1403
1512
  warnings: {
1404
- file: file => `File: ${file}`,
1405
- lineNumber: line => `Line number: ${line}`,
1513
+ file: (file) => `File: ${file}`,
1514
+ lineNumber: (line) => `Line number: ${line}`,
1406
1515
  },
1407
1516
  noErrors: 'No errors',
1408
1517
  },
@@ -1418,10 +1527,10 @@ exports.commands = {
1418
1527
  describe: 'Upload a folder or file from your computer to the HubSpot CMS.',
1419
1528
  errors: {
1420
1529
  destinationRequired: 'A destination path needs to be passed',
1421
- fileIgnored: path => `The file "${path}" is being ignored via an .hsignore rule`,
1422
- invalidPath: path => `The path "${path}" is not a path to a file or folder`,
1530
+ fileIgnored: (path) => `The file "${path}" is being ignored via an .hsignore rule`,
1531
+ invalidPath: (path) => `The path "${path}" is not a path to a file or folder`,
1423
1532
  uploadFailed: (src, dest) => `Uploading file "${src}" to "${dest}" failed`,
1424
- someFilesFailed: dest => `One or more files failed to upload to "${dest}" in the Design Manager`,
1533
+ someFilesFailed: (dest) => `One or more files failed to upload to "${dest}" in the Design Manager`,
1425
1534
  deleteFailed: (path, accountId) => `Deleting "${path}" from account ${accountId} failed`,
1426
1535
  },
1427
1536
  options: {
@@ -1441,7 +1550,7 @@ exports.commands = {
1441
1550
  describe: 'Skips confirmation prompts when doing a clean upload.',
1442
1551
  },
1443
1552
  },
1444
- previewUrl: previewUrl => `To preview this theme, visit: ${previewUrl}`,
1553
+ previewUrl: (previewUrl) => `To preview this theme, visit: ${previewUrl}`,
1445
1554
  positionals: {
1446
1555
  src: {
1447
1556
  describe: 'Path to the local file, relative to your current working directory.',
@@ -1452,10 +1561,10 @@ exports.commands = {
1452
1561
  },
1453
1562
  success: {
1454
1563
  fileUploaded: (src, dest, accountId) => `Uploaded file from "${src}" to "${dest}" in the Design Manager of account ${accountId}`,
1455
- uploadComplete: dest => `Uploading files to "${dest}" in the Design Manager is complete`,
1564
+ uploadComplete: (dest) => `Uploading files to "${dest}" in the Design Manager is complete`,
1456
1565
  },
1457
1566
  uploading: (src, dest, accountId) => `Uploading files from "${src}" to "${dest}" in the Design Manager of account ${accountId}`,
1458
- notUploaded: src => `There was an error processing "${src}". The file has not been uploaded.`,
1567
+ notUploaded: (src) => `There was an error processing "${src}". The file has not been uploaded.`,
1459
1568
  cleaning: (filePath, accountId) => `Removing "${filePath}" from account ${accountId} and uploading local...`,
1460
1569
  confirmCleanUpload: (filePath, accountId) => `You are about to delete the directory "${filePath}" and its contents on HubSpot account ${accountId} before uploading. This will also clear the global content associated with any global partial templates and modules. Are you sure you want to do this?`,
1461
1570
  },
@@ -1465,7 +1574,7 @@ exports.commands = {
1465
1574
  folderFailed: (src, dest, accountId) => `Initial uploading of folder "${src}" to "${dest}" in account ${accountId} had failures`,
1466
1575
  fileFailed: (file, dest, accountId) => `Upload of file "${file}" to "${dest}" in account ${accountId} failed`,
1467
1576
  destinationRequired: 'A destination directory needs to be passed',
1468
- invalidPath: path => `The "${path}" is not a path to a directory`,
1577
+ invalidPath: (path) => `The "${path}" is not a path to a directory`,
1469
1578
  },
1470
1579
  options: {
1471
1580
  disableInitial: {
@@ -1501,7 +1610,7 @@ exports.commands = {
1501
1610
  warnings: {
1502
1611
  disableInitial: () => `Passing the "${chalk_1.default.bold('--disable-initial')}" option is no longer necessary. Running "${chalk_1.default.bold('hs watch')}" no longer uploads the watched directory by default.`,
1503
1612
  initialUpload: () => `To upload the directory run "${chalk_1.default.bold('hs upload')}" beforehand or add the "${chalk_1.default.bold('--initial-upload')}" option when running "${chalk_1.default.bold('hs watch')}".`,
1504
- notUploaded: path => `The "${chalk_1.default.bold('hs watch')}" command no longer uploads the watched directory when started. The directory "${path}" was not uploaded.`,
1613
+ notUploaded: (path) => `The "${chalk_1.default.bold('hs watch')}" command no longer uploads the watched directory when started. The directory "${path}" was not uploaded.`,
1505
1614
  },
1506
1615
  },
1507
1616
  convertFields: {
@@ -1517,16 +1626,16 @@ exports.commands = {
1517
1626
  },
1518
1627
  },
1519
1628
  errors: {
1520
- invalidPath: path => `The path "${path}" specified in the "--src" flag is not a path to a file or directory`,
1629
+ invalidPath: (path) => `The path "${path}" specified in the "--src" flag is not a path to a file or directory`,
1521
1630
  missingSrc: 'Please specify the path to your javascript fields file or directory with the --src flag.',
1522
1631
  },
1523
1632
  },
1524
1633
  secrets: {
1525
1634
  add: {
1526
1635
  loading: {
1527
- add: secretName => `Adding secret ${chalk_1.default.bold(secretName)}`,
1528
- fail: secretName => `Failed to add secret ${chalk_1.default.bold(secretName)}.`,
1529
- succeed: secretName => `Successfully added secret ${chalk_1.default.bold(secretName)}.`,
1636
+ add: (secretName) => `Adding secret ${chalk_1.default.bold(secretName)}`,
1637
+ fail: (secretName) => `Failed to add secret ${chalk_1.default.bold(secretName)}.`,
1638
+ succeed: (secretName) => `Successfully added secret ${chalk_1.default.bold(secretName)}.`,
1530
1639
  },
1531
1640
  success: {
1532
1641
  configFileUpdated: (secretName, authType) => `Secret "${secretName}" updated using "${authType}"`,
@@ -1541,9 +1650,9 @@ exports.commands = {
1541
1650
  },
1542
1651
  delete: {
1543
1652
  loading: {
1544
- add: secretName => `Deleting secret ${chalk_1.default.bold(secretName)}`,
1545
- fail: secretName => `Failed to delete secret ${chalk_1.default.bold(secretName)}.`,
1546
- succeed: secretName => `Successfully deleted secret ${chalk_1.default.bold(secretName)}.`,
1653
+ add: (secretName) => `Deleting secret ${chalk_1.default.bold(secretName)}`,
1654
+ fail: (secretName) => `Failed to delete secret ${chalk_1.default.bold(secretName)}.`,
1655
+ succeed: (secretName) => `Successfully deleted secret ${chalk_1.default.bold(secretName)}.`,
1547
1656
  },
1548
1657
  success: {
1549
1658
  configFileUpdated: (secretName, authType) => `Secret "${secretName}" updated using "${authType}"`,
@@ -1563,13 +1672,13 @@ exports.commands = {
1563
1672
  succeed: () => `Successfully listed secrets.`,
1564
1673
  },
1565
1674
  success: {
1566
- configFileUpdated: authType => `Secrets updated using "${authType}"`,
1675
+ configFileUpdated: (authType) => `Secrets updated using "${authType}"`,
1567
1676
  },
1568
1677
  failure: {
1569
- invalidUser: parentAccountName => `Couldn't list secrets because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list secrets. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1678
+ invalidUser: (parentAccountName) => `Couldn't list secrets because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list secrets. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1570
1679
  scopes: {
1571
1680
  message: "The personal access key you provided doesn't include secrets permissions.",
1572
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes secrets permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1681
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes secrets permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1573
1682
  },
1574
1683
  },
1575
1684
  },
@@ -1577,9 +1686,9 @@ exports.commands = {
1577
1686
  serverless: {
1578
1687
  add: {
1579
1688
  loading: {
1580
- add: functionName => `Adding serverless function ${chalk_1.default.bold(functionName)}`,
1581
- fail: functionName => `Failed to add serverless function ${chalk_1.default.bold(functionName)}.`,
1582
- succeed: functionName => `Successfully added serverless function ${chalk_1.default.bold(functionName)}.`,
1689
+ add: (functionName) => `Adding serverless function ${chalk_1.default.bold(functionName)}`,
1690
+ fail: (functionName) => `Failed to add serverless function ${chalk_1.default.bold(functionName)}.`,
1691
+ succeed: (functionName) => `Successfully added serverless function ${chalk_1.default.bold(functionName)}.`,
1583
1692
  },
1584
1693
  success: {
1585
1694
  configFileUpdated: (functionName, authType) => `Serverless function "${functionName}" updated using "${authType}"`,
@@ -1594,9 +1703,9 @@ exports.commands = {
1594
1703
  },
1595
1704
  delete: {
1596
1705
  loading: {
1597
- add: functionName => `Deleting serverless function ${chalk_1.default.bold(functionName)}`,
1598
- fail: functionName => `Failed to delete serverless function ${chalk_1.default.bold(functionName)}.`,
1599
- succeed: functionName => `Successfully deleted serverless function ${chalk_1.default.bold(functionName)}.`,
1706
+ add: (functionName) => `Deleting serverless function ${chalk_1.default.bold(functionName)}`,
1707
+ fail: (functionName) => `Failed to delete serverless function ${chalk_1.default.bold(functionName)}.`,
1708
+ succeed: (functionName) => `Successfully deleted serverless function ${chalk_1.default.bold(functionName)}.`,
1600
1709
  },
1601
1710
  success: {
1602
1711
  configFileUpdated: (functionName, authType) => `Serverless function "${functionName}" updated using "${authType}"`,
@@ -1616,13 +1725,13 @@ exports.commands = {
1616
1725
  succeed: () => `Successfully listed serverless functions.`,
1617
1726
  },
1618
1727
  success: {
1619
- configFileUpdated: authType => `Serverless functions updated using "${authType}"`,
1728
+ configFileUpdated: (authType) => `Serverless functions updated using "${authType}"`,
1620
1729
  },
1621
1730
  failure: {
1622
- invalidUser: parentAccountName => `Couldn't list serverless functions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless functions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1731
+ invalidUser: (parentAccountName) => `Couldn't list serverless functions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless functions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1623
1732
  scopes: {
1624
1733
  message: "The personal access key you provided doesn't include serverless function permissions.",
1625
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1734
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1626
1735
  },
1627
1736
  },
1628
1737
  },
@@ -1630,9 +1739,9 @@ exports.commands = {
1630
1739
  serverlessFunctionLogs: {
1631
1740
  add: {
1632
1741
  loading: {
1633
- add: functionName => `Adding serverless function logs ${chalk_1.default.bold(functionName)}`,
1634
- fail: functionName => `Failed to add serverless function logs ${chalk_1.default.bold(functionName)}.`,
1635
- succeed: functionName => `Successfully added serverless function logs ${chalk_1.default.bold(functionName)}.`,
1742
+ add: (functionName) => `Adding serverless function logs ${chalk_1.default.bold(functionName)}`,
1743
+ fail: (functionName) => `Failed to add serverless function logs ${chalk_1.default.bold(functionName)}.`,
1744
+ succeed: (functionName) => `Successfully added serverless function logs ${chalk_1.default.bold(functionName)}.`,
1636
1745
  },
1637
1746
  success: {
1638
1747
  configFileUpdated: (functionName, authType) => `Serverless function logs "${functionName}" updated using "${authType}"`,
@@ -1647,9 +1756,9 @@ exports.commands = {
1647
1756
  },
1648
1757
  delete: {
1649
1758
  loading: {
1650
- add: functionName => `Deleting serverless function logs ${chalk_1.default.bold(functionName)}`,
1651
- fail: functionName => `Failed to delete serverless function logs ${chalk_1.default.bold(functionName)}.`,
1652
- succeed: functionName => `Successfully deleted serverless function logs ${chalk_1.default.bold(functionName)}.`,
1759
+ add: (functionName) => `Deleting serverless function logs ${chalk_1.default.bold(functionName)}`,
1760
+ fail: (functionName) => `Failed to delete serverless function logs ${chalk_1.default.bold(functionName)}.`,
1761
+ succeed: (functionName) => `Successfully deleted serverless function logs ${chalk_1.default.bold(functionName)}.`,
1653
1762
  },
1654
1763
  success: {
1655
1764
  configFileUpdated: (functionName, authType) => `Serverless function logs "${functionName}" updated using "${authType}"`,
@@ -1669,13 +1778,13 @@ exports.commands = {
1669
1778
  succeed: () => `Successfully listed serverless function logs.`,
1670
1779
  },
1671
1780
  success: {
1672
- configFileUpdated: authType => `Serverless function logs updated using "${authType}"`,
1781
+ configFileUpdated: (authType) => `Serverless function logs updated using "${authType}"`,
1673
1782
  },
1674
1783
  failure: {
1675
- invalidUser: parentAccountName => `Couldn't list serverless function logs because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function logs. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1784
+ invalidUser: (parentAccountName) => `Couldn't list serverless function logs because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function logs. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1676
1785
  scopes: {
1677
1786
  message: "The personal access key you provided doesn't include serverless function log permissions.",
1678
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function log permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1787
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function log permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1679
1788
  },
1680
1789
  },
1681
1790
  },
@@ -1683,9 +1792,9 @@ exports.commands = {
1683
1792
  serverlessFunctionMetrics: {
1684
1793
  add: {
1685
1794
  loading: {
1686
- add: functionName => `Adding serverless function metrics ${chalk_1.default.bold(functionName)}`,
1687
- fail: functionName => `Failed to add serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1688
- succeed: functionName => `Successfully added serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1795
+ add: (functionName) => `Adding serverless function metrics ${chalk_1.default.bold(functionName)}`,
1796
+ fail: (functionName) => `Failed to add serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1797
+ succeed: (functionName) => `Successfully added serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1689
1798
  },
1690
1799
  success: {
1691
1800
  configFileUpdated: (functionName, authType) => `Serverless function metrics "${functionName}" updated using "${authType}"`,
@@ -1700,9 +1809,9 @@ exports.commands = {
1700
1809
  },
1701
1810
  delete: {
1702
1811
  loading: {
1703
- add: functionName => `Deleting serverless function metrics ${chalk_1.default.bold(functionName)}`,
1704
- fail: functionName => `Failed to delete serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1705
- succeed: functionName => `Successfully deleted serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1812
+ add: (functionName) => `Deleting serverless function metrics ${chalk_1.default.bold(functionName)}`,
1813
+ fail: (functionName) => `Failed to delete serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1814
+ succeed: (functionName) => `Successfully deleted serverless function metrics ${chalk_1.default.bold(functionName)}.`,
1706
1815
  },
1707
1816
  success: {
1708
1817
  configFileUpdated: (functionName, authType) => `Serverless function metrics "${functionName}" updated using "${authType}"`,
@@ -1722,13 +1831,13 @@ exports.commands = {
1722
1831
  succeed: () => `Successfully listed serverless function metrics.`,
1723
1832
  },
1724
1833
  success: {
1725
- configFileUpdated: authType => `Serverless function metrics updated using "${authType}"`,
1834
+ configFileUpdated: (authType) => `Serverless function metrics updated using "${authType}"`,
1726
1835
  },
1727
1836
  failure: {
1728
- invalidUser: parentAccountName => `Couldn't list serverless function metrics because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function metrics. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1837
+ invalidUser: (parentAccountName) => `Couldn't list serverless function metrics because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function metrics. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1729
1838
  scopes: {
1730
1839
  message: "The personal access key you provided doesn't include serverless function metric permissions.",
1731
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function metric permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1840
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function metric permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1732
1841
  },
1733
1842
  },
1734
1843
  },
@@ -1736,9 +1845,9 @@ exports.commands = {
1736
1845
  serverlessFunctionSettings: {
1737
1846
  add: {
1738
1847
  loading: {
1739
- add: functionName => `Adding serverless function settings ${chalk_1.default.bold(functionName)}`,
1740
- fail: functionName => `Failed to add serverless function settings ${chalk_1.default.bold(functionName)}.`,
1741
- succeed: functionName => `Successfully added serverless function settings ${chalk_1.default.bold(functionName)}.`,
1848
+ add: (functionName) => `Adding serverless function settings ${chalk_1.default.bold(functionName)}`,
1849
+ fail: (functionName) => `Failed to add serverless function settings ${chalk_1.default.bold(functionName)}.`,
1850
+ succeed: (functionName) => `Successfully added serverless function settings ${chalk_1.default.bold(functionName)}.`,
1742
1851
  },
1743
1852
  success: {
1744
1853
  configFileUpdated: (functionName, authType) => `Serverless function settings "${functionName}" updated using "${authType}"`,
@@ -1753,9 +1862,9 @@ exports.commands = {
1753
1862
  },
1754
1863
  delete: {
1755
1864
  loading: {
1756
- add: functionName => `Deleting serverless function settings ${chalk_1.default.bold(functionName)}`,
1757
- fail: functionName => `Failed to delete serverless function settings ${chalk_1.default.bold(functionName)}.`,
1758
- succeed: functionName => `Successfully deleted serverless function settings ${chalk_1.default.bold(functionName)}.`,
1865
+ add: (functionName) => `Deleting serverless function settings ${chalk_1.default.bold(functionName)}`,
1866
+ fail: (functionName) => `Failed to delete serverless function settings ${chalk_1.default.bold(functionName)}.`,
1867
+ succeed: (functionName) => `Successfully deleted serverless function settings ${chalk_1.default.bold(functionName)}.`,
1759
1868
  },
1760
1869
  success: {
1761
1870
  configFileUpdated: (functionName, authType) => `Serverless function settings "${functionName}" updated using "${authType}"`,
@@ -1775,13 +1884,13 @@ exports.commands = {
1775
1884
  succeed: () => `Successfully listed serverless function settings.`,
1776
1885
  },
1777
1886
  success: {
1778
- configFileUpdated: authType => `Serverless function settings updated using "${authType}"`,
1887
+ configFileUpdated: (authType) => `Serverless function settings updated using "${authType}"`,
1779
1888
  },
1780
1889
  failure: {
1781
- invalidUser: parentAccountName => `Couldn't list serverless function settings because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function settings. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1890
+ invalidUser: (parentAccountName) => `Couldn't list serverless function settings because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function settings. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1782
1891
  scopes: {
1783
1892
  message: "The personal access key you provided doesn't include serverless function setting permissions.",
1784
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function setting permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1893
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function setting permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1785
1894
  },
1786
1895
  },
1787
1896
  },
@@ -1789,9 +1898,9 @@ exports.commands = {
1789
1898
  serverlessFunctionVersions: {
1790
1899
  add: {
1791
1900
  loading: {
1792
- add: functionName => `Adding serverless function versions ${chalk_1.default.bold(functionName)}`,
1793
- fail: functionName => `Failed to add serverless function versions ${chalk_1.default.bold(functionName)}.`,
1794
- succeed: functionName => `Successfully added serverless function versions ${chalk_1.default.bold(functionName)}.`,
1901
+ add: (functionName) => `Adding serverless function versions ${chalk_1.default.bold(functionName)}`,
1902
+ fail: (functionName) => `Failed to add serverless function versions ${chalk_1.default.bold(functionName)}.`,
1903
+ succeed: (functionName) => `Successfully added serverless function versions ${chalk_1.default.bold(functionName)}.`,
1795
1904
  },
1796
1905
  success: {
1797
1906
  configFileUpdated: (functionName, authType) => `Serverless function versions "${functionName}" updated using "${authType}"`,
@@ -1806,9 +1915,9 @@ exports.commands = {
1806
1915
  },
1807
1916
  delete: {
1808
1917
  loading: {
1809
- add: functionName => `Deleting serverless function versions ${chalk_1.default.bold(functionName)}`,
1810
- fail: functionName => `Failed to delete serverless function versions ${chalk_1.default.bold(functionName)}.`,
1811
- succeed: functionName => `Successfully deleted serverless function versions ${chalk_1.default.bold(functionName)}.`,
1918
+ add: (functionName) => `Deleting serverless function versions ${chalk_1.default.bold(functionName)}`,
1919
+ fail: (functionName) => `Failed to delete serverless function versions ${chalk_1.default.bold(functionName)}.`,
1920
+ succeed: (functionName) => `Successfully deleted serverless function versions ${chalk_1.default.bold(functionName)}.`,
1812
1921
  },
1813
1922
  success: {
1814
1923
  configFileUpdated: (functionName, authType) => `Serverless function versions "${functionName}" updated using "${authType}"`,
@@ -1828,13 +1937,13 @@ exports.commands = {
1828
1937
  succeed: () => `Successfully listed serverless function versions.`,
1829
1938
  },
1830
1939
  success: {
1831
- configFileUpdated: authType => `Serverless function versions updated using "${authType}"`,
1940
+ configFileUpdated: (authType) => `Serverless function versions updated using "${authType}"`,
1832
1941
  },
1833
1942
  failure: {
1834
- invalidUser: parentAccountName => `Couldn't list serverless function versions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function versions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1943
+ invalidUser: (parentAccountName) => `Couldn't list serverless function versions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function versions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1835
1944
  scopes: {
1836
1945
  message: "The personal access key you provided doesn't include serverless function version permissions.",
1837
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function version permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1946
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function version permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1838
1947
  },
1839
1948
  },
1840
1949
  },
@@ -1842,9 +1951,9 @@ exports.commands = {
1842
1951
  serverlessFunctionWebhooks: {
1843
1952
  add: {
1844
1953
  loading: {
1845
- add: functionName => `Adding serverless function webhooks ${chalk_1.default.bold(functionName)}`,
1846
- fail: functionName => `Failed to add serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1847
- succeed: functionName => `Successfully added serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1954
+ add: (functionName) => `Adding serverless function webhooks ${chalk_1.default.bold(functionName)}`,
1955
+ fail: (functionName) => `Failed to add serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1956
+ succeed: (functionName) => `Successfully added serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1848
1957
  },
1849
1958
  success: {
1850
1959
  configFileUpdated: (functionName, authType) => `Serverless function webhooks "${functionName}" updated using "${authType}"`,
@@ -1859,9 +1968,9 @@ exports.commands = {
1859
1968
  },
1860
1969
  delete: {
1861
1970
  loading: {
1862
- add: functionName => `Deleting serverless function webhooks ${chalk_1.default.bold(functionName)}`,
1863
- fail: functionName => `Failed to delete serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1864
- succeed: functionName => `Successfully deleted serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1971
+ add: (functionName) => `Deleting serverless function webhooks ${chalk_1.default.bold(functionName)}`,
1972
+ fail: (functionName) => `Failed to delete serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1973
+ succeed: (functionName) => `Successfully deleted serverless function webhooks ${chalk_1.default.bold(functionName)}.`,
1865
1974
  },
1866
1975
  success: {
1867
1976
  configFileUpdated: (functionName, authType) => `Serverless function webhooks "${functionName}" updated using "${authType}"`,
@@ -1881,13 +1990,13 @@ exports.commands = {
1881
1990
  succeed: () => `Successfully listed serverless function webhooks.`,
1882
1991
  },
1883
1992
  success: {
1884
- configFileUpdated: authType => `Serverless function webhooks updated using "${authType}"`,
1993
+ configFileUpdated: (authType) => `Serverless function webhooks updated using "${authType}"`,
1885
1994
  },
1886
1995
  failure: {
1887
- invalidUser: parentAccountName => `Couldn't list serverless function webhooks because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhooks. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1996
+ invalidUser: (parentAccountName) => `Couldn't list serverless function webhooks because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhooks. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1888
1997
  scopes: {
1889
1998
  message: "The personal access key you provided doesn't include serverless function webhook permissions.",
1890
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1999
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1891
2000
  },
1892
2001
  },
1893
2002
  },
@@ -1895,9 +2004,9 @@ exports.commands = {
1895
2004
  serverlessFunctionWebhookSubscriptions: {
1896
2005
  add: {
1897
2006
  loading: {
1898
- add: functionName => `Adding serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}`,
1899
- fail: functionName => `Failed to add serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
1900
- succeed: functionName => `Successfully added serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
2007
+ add: (functionName) => `Adding serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}`,
2008
+ fail: (functionName) => `Failed to add serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
2009
+ succeed: (functionName) => `Successfully added serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
1901
2010
  },
1902
2011
  success: {
1903
2012
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscriptions "${functionName}" updated using "${authType}"`,
@@ -1912,9 +2021,9 @@ exports.commands = {
1912
2021
  },
1913
2022
  delete: {
1914
2023
  loading: {
1915
- add: functionName => `Deleting serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}`,
1916
- fail: functionName => `Failed to delete serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
1917
- succeed: functionName => `Successfully deleted serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
2024
+ add: (functionName) => `Deleting serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}`,
2025
+ fail: (functionName) => `Failed to delete serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
2026
+ succeed: (functionName) => `Successfully deleted serverless function webhook subscriptions ${chalk_1.default.bold(functionName)}.`,
1918
2027
  },
1919
2028
  success: {
1920
2029
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscriptions "${functionName}" updated using "${authType}"`,
@@ -1934,13 +2043,13 @@ exports.commands = {
1934
2043
  succeed: () => `Successfully listed serverless function webhook subscriptions.`,
1935
2044
  },
1936
2045
  success: {
1937
- configFileUpdated: authType => `Serverless function webhook subscriptions updated using "${authType}"`,
2046
+ configFileUpdated: (authType) => `Serverless function webhook subscriptions updated using "${authType}"`,
1938
2047
  },
1939
2048
  failure: {
1940
- invalidUser: parentAccountName => `Couldn't list serverless function webhook subscriptions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscriptions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2049
+ invalidUser: (parentAccountName) => `Couldn't list serverless function webhook subscriptions because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscriptions. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1941
2050
  scopes: {
1942
2051
  message: "The personal access key you provided doesn't include serverless function webhook subscription permissions.",
1943
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2052
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1944
2053
  },
1945
2054
  },
1946
2055
  },
@@ -1948,9 +2057,9 @@ exports.commands = {
1948
2057
  serverlessFunctionWebhookSubscriptionEvents: {
1949
2058
  add: {
1950
2059
  loading: {
1951
- add: functionName => `Adding serverless function webhook subscription events ${chalk_1.default.bold(functionName)}`,
1952
- fail: functionName => `Failed to add serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
1953
- succeed: functionName => `Successfully added serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
2060
+ add: (functionName) => `Adding serverless function webhook subscription events ${chalk_1.default.bold(functionName)}`,
2061
+ fail: (functionName) => `Failed to add serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
2062
+ succeed: (functionName) => `Successfully added serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
1954
2063
  },
1955
2064
  success: {
1956
2065
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription events "${functionName}" updated using "${authType}"`,
@@ -1965,9 +2074,9 @@ exports.commands = {
1965
2074
  },
1966
2075
  delete: {
1967
2076
  loading: {
1968
- add: functionName => `Deleting serverless function webhook subscription events ${chalk_1.default.bold(functionName)}`,
1969
- fail: functionName => `Failed to delete serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
1970
- succeed: functionName => `Successfully deleted serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
2077
+ add: (functionName) => `Deleting serverless function webhook subscription events ${chalk_1.default.bold(functionName)}`,
2078
+ fail: (functionName) => `Failed to delete serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
2079
+ succeed: (functionName) => `Successfully deleted serverless function webhook subscription events ${chalk_1.default.bold(functionName)}.`,
1971
2080
  },
1972
2081
  success: {
1973
2082
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription events "${functionName}" updated using "${authType}"`,
@@ -1987,13 +2096,13 @@ exports.commands = {
1987
2096
  succeed: () => `Successfully listed serverless function webhook subscription events.`,
1988
2097
  },
1989
2098
  success: {
1990
- configFileUpdated: authType => `Serverless function webhook subscription events updated using "${authType}"`,
2099
+ configFileUpdated: (authType) => `Serverless function webhook subscription events updated using "${authType}"`,
1991
2100
  },
1992
2101
  failure: {
1993
- invalidUser: parentAccountName => `Couldn't list serverless function webhook subscription events because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription events. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2102
+ invalidUser: (parentAccountName) => `Couldn't list serverless function webhook subscription events because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription events. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
1994
2103
  scopes: {
1995
2104
  message: "The personal access key you provided doesn't include serverless function webhook subscription event permissions.",
1996
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2105
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
1997
2106
  },
1998
2107
  },
1999
2108
  },
@@ -2001,9 +2110,9 @@ exports.commands = {
2001
2110
  serverlessFunctionWebhookSubscriptionEventTypes: {
2002
2111
  add: {
2003
2112
  loading: {
2004
- add: functionName => `Adding serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}`,
2005
- fail: functionName => `Failed to add serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2006
- succeed: functionName => `Successfully added serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2113
+ add: (functionName) => `Adding serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}`,
2114
+ fail: (functionName) => `Failed to add serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2115
+ succeed: (functionName) => `Successfully added serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2007
2116
  },
2008
2117
  success: {
2009
2118
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription event types "${functionName}" updated using "${authType}"`,
@@ -2018,9 +2127,9 @@ exports.commands = {
2018
2127
  },
2019
2128
  delete: {
2020
2129
  loading: {
2021
- add: functionName => `Deleting serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}`,
2022
- fail: functionName => `Failed to delete serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2023
- succeed: functionName => `Successfully deleted serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2130
+ add: (functionName) => `Deleting serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}`,
2131
+ fail: (functionName) => `Failed to delete serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2132
+ succeed: (functionName) => `Successfully deleted serverless function webhook subscription event types ${chalk_1.default.bold(functionName)}.`,
2024
2133
  },
2025
2134
  success: {
2026
2135
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription event types "${functionName}" updated using "${authType}"`,
@@ -2040,13 +2149,13 @@ exports.commands = {
2040
2149
  succeed: () => `Successfully listed serverless function webhook subscription event types.`,
2041
2150
  },
2042
2151
  success: {
2043
- configFileUpdated: authType => `Serverless function webhook subscription event types updated using "${authType}"`,
2152
+ configFileUpdated: (authType) => `Serverless function webhook subscription event types updated using "${authType}"`,
2044
2153
  },
2045
2154
  failure: {
2046
- invalidUser: parentAccountName => `Couldn't list serverless function webhook subscription event types because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription event types. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2155
+ invalidUser: (parentAccountName) => `Couldn't list serverless function webhook subscription event types because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription event types. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2047
2156
  scopes: {
2048
2157
  message: "The personal access key you provided doesn't include serverless function webhook subscription event type permissions.",
2049
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event type permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2158
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event type permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2050
2159
  },
2051
2160
  },
2052
2161
  },
@@ -2054,9 +2163,9 @@ exports.commands = {
2054
2163
  serverlessFunctionWebhookSubscriptionEventTypeOptions: {
2055
2164
  add: {
2056
2165
  loading: {
2057
- add: functionName => `Adding serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}`,
2058
- fail: functionName => `Failed to add serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2059
- succeed: functionName => `Successfully added serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2166
+ add: (functionName) => `Adding serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}`,
2167
+ fail: (functionName) => `Failed to add serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2168
+ succeed: (functionName) => `Successfully added serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2060
2169
  },
2061
2170
  success: {
2062
2171
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription event type options "${functionName}" updated using "${authType}"`,
@@ -2071,9 +2180,9 @@ exports.commands = {
2071
2180
  },
2072
2181
  delete: {
2073
2182
  loading: {
2074
- add: functionName => `Deleting serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}`,
2075
- fail: functionName => `Failed to delete serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2076
- succeed: functionName => `Successfully deleted serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2183
+ add: (functionName) => `Deleting serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}`,
2184
+ fail: (functionName) => `Failed to delete serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2185
+ succeed: (functionName) => `Successfully deleted serverless function webhook subscription event type options ${chalk_1.default.bold(functionName)}.`,
2077
2186
  },
2078
2187
  success: {
2079
2188
  configFileUpdated: (functionName, authType) => `Serverless function webhook subscription event type options "${functionName}" updated using "${authType}"`,
@@ -2093,36 +2202,89 @@ exports.commands = {
2093
2202
  succeed: () => `Successfully listed serverless function webhook subscription event type options.`,
2094
2203
  },
2095
2204
  success: {
2096
- configFileUpdated: authType => `Serverless function webhook subscription event type options updated using "${authType}"`,
2205
+ configFileUpdated: (authType) => `Serverless function webhook subscription event type options updated using "${authType}"`,
2097
2206
  },
2098
2207
  failure: {
2099
- invalidUser: parentAccountName => `Couldn't list serverless function webhook subscription event type options because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription event type options. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2208
+ invalidUser: (parentAccountName) => `Couldn't list serverless function webhook subscription event type options because your account has been removed from ${chalk_1.default.bold(parentAccountName)} or your permission set doesn't allow you to list serverless function webhook subscription event type options. To update your permissions, contact a super admin in ${chalk_1.default.bold(parentAccountName)}.`,
2100
2209
  scopes: {
2101
2210
  message: "The personal access key you provided doesn't include serverless function webhook subscription event type option permissions.",
2102
- instructions: url => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event type option permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2211
+ instructions: (url) => `To update CLI permissions: \n- Go to ${url}, deactivate the existing personal access key, and create a new one that includes serverless function webhook subscription event type option permissions. \n- Update the CLI config for this account by running ${chalk_1.default.bold('hs auth')} and entering the new key.\n`,
2103
2212
  },
2104
2213
  },
2105
2214
  },
2106
2215
  },
2216
+ setupMcp: {
2217
+ describe: 'Configure the HubSpot CLI MCP (Model Context Protocol) server for use with Cursor.',
2218
+ errors: {
2219
+ serverNotFound: 'hsmcp command not found. Please ensure the HubSpot CLI is properly installed and available in your PATH.',
2220
+ installHint: 'If you installed the CLI locally, make sure to install it globally with: npm install -g @hubspot/cli',
2221
+ configurationFailed: 'Failed to configure MCP server',
2222
+ },
2223
+ warnings: {
2224
+ alreadyConfigured: 'MCP server is already configured.',
2225
+ },
2226
+ success: {
2227
+ configured: 'MCP server successfully configured for Cursor.',
2228
+ restartCursor: 'Please restart Cursor to apply the changes.',
2229
+ },
2230
+ instructions: {
2231
+ title: 'Manual MCP Server Configuration Instructions:',
2232
+ step1: '1. Open or create the Cursor configuration file at:',
2233
+ step2: '2. Add the following configuration to the file:',
2234
+ step3: '3. Restart Cursor to apply the changes.',
2235
+ documentation: 'For more information, visit: https://docs.cursor.com/context/model-context-protocol',
2236
+ },
2237
+ options: {
2238
+ autoSetup: {
2239
+ describe: 'Automatically configure the MCP server in Cursor configuration',
2240
+ },
2241
+ showInstructions: {
2242
+ describe: 'Display manual configuration instructions instead of auto-setup',
2243
+ },
2244
+ global: {
2245
+ describe: 'Configure globally for all Cursor workspaces (default: true)',
2246
+ },
2247
+ },
2248
+ prompts: {
2249
+ selectAction: 'How would you like to configure the MCP server?',
2250
+ selectScope: 'Configure MCP server for:',
2251
+ overwrite: 'MCP server is already configured. Overwrite existing configuration?',
2252
+ },
2253
+ choices: {
2254
+ autoSetup: 'Automatically configure (recommended)',
2255
+ showInstructions: 'Show manual configuration instructions',
2256
+ global: 'Global (all Cursor workspaces)',
2257
+ project: 'Current project only',
2258
+ },
2259
+ examples: {
2260
+ default: 'Configure the MCP server interactively',
2261
+ autoSetup: 'Automatically configure the MCP server',
2262
+ autoSetupGlobal: 'Automatically configure the MCP server globally',
2263
+ autoSetupProject: 'Automatically configure for current project only',
2264
+ showInstructions: 'Display manual configuration instructions',
2265
+ },
2266
+ },
2107
2267
  };
2108
2268
  exports.lib = {
2109
2269
  process: {
2110
- exitDebug: signal => `Attempting to gracefully exit. Triggered by ${signal}`,
2270
+ exitDebug: (signal) => `Attempting to gracefully exit. Triggered by ${signal}`,
2111
2271
  },
2112
2272
  DevServerManager: {
2113
- portConflict: port => `The port ${port} is already in use.`,
2273
+ portConflict: (port) => `The port ${port} is already in use.`,
2114
2274
  notInitialized: 'The Dev Server Manager must be initialized before it is started.',
2115
- noCompatibleComponents: serverKey => `Skipping call to ${serverKey} because there are no compatible components in the project.`,
2275
+ noCompatibleComponents: (serverKey) => `Skipping call to ${serverKey} because there are no compatible components in the project.`,
2116
2276
  },
2117
2277
  LocalDevManager: {
2278
+ staticAuthAccountsMustMatch: 'You must test static auth apps in the account the project exists in',
2279
+ appNotFound: (accountId, appUid) => `Unable to find app with uid ${appUid} in account ${(0, ui_1.uiAccountDescription)(accountId)}`,
2118
2280
  failedToInitialize: 'Missing required arguments to initialize Local Dev',
2119
2281
  noDeployedBuild: (projectName, accountIdentifier, uploadCommand) => `Your project ${chalk_1.default.bold(projectName)} exists in ${accountIdentifier}, but has no deployed build. Projects must be successfully deployed to be developed locally. Address any build and deploy errors your project may have, then run ${uploadCommand} to upload and deploy your project.`,
2120
2282
  noComponents: 'There are no components in this project.',
2121
2283
  betaMessage: 'HubSpot projects local development',
2122
- learnMoreLocalDevServer: 'Learn more about the projects local dev server',
2123
- running: (projectName, accountIdentifier) => `Running ${chalk_1.default.bold(projectName)} locally on ${accountIdentifier}, waiting for changes ...`,
2284
+ learnMoreLocalDevServer: (0, ui_1.uiLink)('Learn more about the projects local dev server', 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'),
2285
+ running: (projectName, accountIdentifier) => chalk_1.default.hex(ui_2.UI_COLORS.SORBET)(`Running ${chalk_1.default.bold(projectName)} locally on ${accountIdentifier}, waiting for changes ...`),
2124
2286
  quitHelper: `Press ${chalk_1.default.bold('q')} to stop the local dev server`,
2125
- viewProjectLink: 'View project in HubSpot',
2287
+ viewProjectLink: (name, accountId) => (0, ui_1.uiLink)('View project in HubSpot', (0, urls_1.getProjectDetailUrl)(name, accountId) || ''),
2126
2288
  viewTestAccountLink: 'View developer test account in HubSpot',
2127
2289
  exitingStart: 'Stopping local dev server ...',
2128
2290
  exitingSucceed: 'Successfully exited',
@@ -2131,29 +2293,51 @@ exports.lib = {
2131
2293
  uploadWarning: {
2132
2294
  appLabel: '[App]',
2133
2295
  uiExtensionLabel: '[UI Extension]',
2134
- missingComponents: missingComponents => `Couldn't find the following components in the deployed build for this project: ${chalk_1.default.bold(missingComponents)}. This may cause issues in local development.`,
2296
+ missingComponents: (missingComponents) => `Couldn't find the following components in the deployed build for this project: ${chalk_1.default.bold(missingComponents)}. This may cause issues in local development.`,
2135
2297
  defaultWarning: chalk_1.default.bold('Changing project configuration requires a new project build.'),
2136
2298
  defaultPublicAppWarning: (installCount, installText) => `${chalk_1.default.bold('Changing project configuration requires a new project build.')}\n\nThis will affect your public app's ${chalk_1.default.bold(`${installCount} existing ${installText}`)}. If your app has users in production, we strongly recommend creating a copy of this app to test your changes before proceding.`,
2137
- header: warning => `${warning} To reflect these changes and continue testing:`,
2299
+ header: (warning) => `${warning} To reflect these changes and continue testing:`,
2300
+ instructionsHeader: 'To reflect these changes and continue testing:',
2138
2301
  stopDev: ` * Stop ${(0, ui_1.uiCommandReference)('hs project dev')}`,
2139
- runUpload: command => ` * Run ${command}`,
2302
+ runUpload: (command) => ` * Run ${command}`,
2140
2303
  restartDev: ` * Re-run ${(0, ui_1.uiCommandReference)('hs project dev')}`,
2141
2304
  pushToGithub: ' * Commit and push your changes to GitHub',
2142
2305
  defaultMarketplaceAppWarning: (installCount, accountText) => `${chalk_1.default.bold('Changing project configuration requires creating a new project build.')}\n\nYour marketplace app is currently installed in ${chalk_1.default.bold(`${installCount} ${accountText}`)}. Any uploaded changes will impact your app's users. We strongly recommend creating a copy of this app to test your changes before proceding.`,
2143
2306
  },
2144
2307
  activeInstallWarning: {
2145
- installCount: (appName, installCount, installText) => `${chalk_1.default.bold(`The app ${appName} has ${installCount} production ${installText}`)}`,
2308
+ installCount: (appName, installCount) => `${chalk_1.default.bold(`The app ${appName} is installed in ${installCount} production ${installCount === 1 ? 'account' : 'accounts'}`)}`,
2146
2309
  explanation: 'Some changes made during local development may need to be synced to HubSpot, which will impact those existing installs. We strongly recommend creating a copy of this app to use instead.',
2147
2310
  confirmation: `You will always be asked to confirm any permanent changes to your app's configuration before uploading them.`,
2148
2311
  confirmationPrompt: `Proceed with local development of this ${chalk_1.default.bold('production')} app?`,
2149
2312
  },
2150
2313
  devServer: {
2151
- cleanupError: message => `Failed to cleanup local dev server: ${message}`,
2152
- setupError: message => `Failed to setup local dev server: ${message}`,
2153
- startError: message => `Failed to start local dev server: ${message}`,
2154
- fileChangeError: message => `Failed to notify local dev server of file change: ${message}`,
2314
+ cleanupError: (message) => `Failed to cleanup local dev server: ${message}`,
2315
+ setupError: (message) => `Failed to setup local dev server: ${message}`,
2316
+ startError: (message) => `Failed to start local dev server: ${message}`,
2317
+ fileChangeError: (message) => `Failed to notify local dev server of file change: ${message}`,
2155
2318
  },
2156
2319
  },
2320
+ AppDevModeInterface: {
2321
+ defaultMarketplaceAppWarning: (installCount) => `\n\nYour marketplace app is currently installed in ${chalk_1.default.bold(`${installCount} ${installCount === 1 ? 'account' : 'accounts'}`)}. Any uploaded changes will impact your app's users. We strongly recommend creating a copy of this app to test your changes before proceding.`,
2322
+ },
2323
+ LocalDevWebsocketServer: {
2324
+ errors: {
2325
+ notInitialized: (prefix) => `${prefix}Error: Attempted to access websocket before initialization`,
2326
+ missingTypeField: (data) => `Unsupported message received. Missing type field: ${data}`,
2327
+ unknownMessageType: (type) => `Unsupported message received. Unknown message type: ${type}`,
2328
+ invalidJSON: (data) => `Unsupported message received. Invalid JSON: ${data}`,
2329
+ portManagerNotRunning: (prefix) => `${prefix}Error: PortManagerServing must be running before starting LocalDevWebsocketServer.`,
2330
+ },
2331
+ logs: {
2332
+ startup: (port) => `LocalDevWebsocketServer running on port ${port}`,
2333
+ },
2334
+ },
2335
+ LocalDevProcess: {
2336
+ projectConfigMismatch: `Unable to upload project. The project config has been modified since starting ${(0, ui_1.uiCommandReference)('hs project dev')}.`,
2337
+ uploadInitiated: 'Project upload initiated from Local Dev UI.',
2338
+ uploadFailed: 'Project upload failed. To proceed with local development, fix any necessary errors, then re-upload your project.',
2339
+ uploadSuccess: 'Project upload completed successfully. Resuming local dev...',
2340
+ },
2157
2341
  localDevHelpers: {
2158
2342
  confirmDefaultAccountIsTarget: {
2159
2343
  configError: `An error occurred while reading the default account from your config. Run ${(0, ui_1.uiCommandReference)('hs auth')} to re-auth this account`,
@@ -2170,8 +2354,8 @@ exports.lib = {
2170
2354
  publicAppNonDeveloperTestAccountWarning: `Local development of public apps is only supported in ${chalk_1.default.bold('developer test accounts')}.`,
2171
2355
  },
2172
2356
  createNewProjectForLocalDev: {
2173
- projectMustExistExplanation: (projectName, accountIdentifier) => `The project ${projectName} does not exist in the target account ${accountIdentifier}. This command requires the project to exist in the target account.`,
2174
- publicAppProjectMustExistExplanation: (projectName, accountIdentifier) => `The project ${projectName} does not exist in ${accountIdentifier}, the app developer account associated with your target account. This command requires the project to exist in this app developer account.`,
2357
+ projectMustExistExplanation: (projectName, accountId) => `The project ${projectName} does not exist in the target account ${(0, ui_1.uiAccountDescription)(accountId)}. This command requires the project to exist in the target account.`,
2358
+ publicAppProjectMustExistExplanation: (projectName, accountId) => `The project ${projectName} does not exist in ${(0, ui_1.uiAccountDescription)(accountId)}, the app developer account associated with your target account. This command requires the project to exist in this app developer account.`,
2175
2359
  createProject: (projectName, accountIdentifier) => `Create new project ${projectName} in ${accountIdentifier}?`,
2176
2360
  choseNotToCreateProject: 'Exiting because this command requires the project to exist in the target account.',
2177
2361
  creatingProject: (projectName, accountIdentifier) => `Creating project ${projectName} in ${accountIdentifier}`,
@@ -2186,6 +2370,46 @@ exports.lib = {
2186
2370
  checkIfParentAccountIsAuthed: {
2187
2371
  notAuthedError: (parentAccountId, accountIdentifier) => `To develop this project locally, run ${(0, ui_1.uiCommandReference)(`hs auth --account=${parentAccountId}`)} to authenticate the App Developer Account ${parentAccountId} associated with ${accountIdentifier}.`,
2188
2372
  },
2373
+ selectAccountTypePrompt: {
2374
+ message: '[--account] Choose the type of account to test on',
2375
+ developerTestAccountOption: 'Test on a developer test account',
2376
+ sandboxAccountOption: 'Test on a sandbox account',
2377
+ sandboxAccountOptionDisabled: 'Disabled - requires access to sandbox accounts',
2378
+ productionAccountOption: `<${chalk_1.default.red('!')} Test on this account ${chalk_1.default.red('!')}>`,
2379
+ },
2380
+ },
2381
+ middleware: {
2382
+ updateNotification: {
2383
+ notifyTitle: chalk_1.default.bold('Update available'),
2384
+ cmsUpdateNotification: (packageName) => `${chalk_1.default.bold('The CMS CLI is now the HubSpot CLI')}\n\nTo upgrade, uninstall ${chalk_1.default.bold(packageName)}\nand then run ${(0, ui_1.uiCommandReference)('{updateCommand}')}`,
2385
+ cliUpdateNotification: `HubSpot CLI version ${chalk_1.default.cyan(chalk_1.default.bold('{currentVersion}'))} is outdated.\nRun ${(0, ui_1.uiCommandReference)('{updateCommand}')} to upgrade to version ${chalk_1.default.cyan(chalk_1.default.bold('{latestVersion}'))}`,
2386
+ },
2387
+ autoUpdateCLI: {
2388
+ updateAvailable: (latestVersion) => `There's a new HubSpot CLI version available! Updating to version ${chalk_1.default.bold(latestVersion)}`,
2389
+ updateSucceeded: (latestVersion) => `Successfully updated HubSpot CLI to version ${chalk_1.default.bold(latestVersion)}`,
2390
+ notInstalledGlobally: 'Cannot auto-update the HubSpot CLI because NPM is not installed globally',
2391
+ updateFailed: (latestVersion) => `Failed to update HubSpot CLI to version ${chalk_1.default.bold(latestVersion)}`,
2392
+ },
2393
+ },
2394
+ projectProfiles: {
2395
+ logs: {
2396
+ usingProfile: (profileName) => `Using profile from ${chalk_1.default.bold(profileName)}`,
2397
+ profileTargetAccount: (accountId) => `Targeting ${(0, ui_1.uiAccountDescription)(accountId)}`,
2398
+ profileVariables: 'Profile variables',
2399
+ },
2400
+ exitIfUsingProfiles: {
2401
+ errors: {
2402
+ noProfileSpecified: `This project is configured to use profiles, but no profile was specified. Target a profile using the ${(0, ui_1.uiCommandReference)('--profile')} flag.`,
2403
+ },
2404
+ },
2405
+ loadProfile: {
2406
+ errors: {
2407
+ noProjectConfig: 'No project config found. Please run this command from a project directory.',
2408
+ profileNotFound: (profileName) => `Profile ${chalk_1.default.bold(profileName)} not found.`,
2409
+ missingAccountId: (profileName) => `Profile ${chalk_1.default.bold(profileName)} is missing an account id.`,
2410
+ failedToLoadProfile: (profileName) => `Failed to load profile ${chalk_1.default.bold(profileName)}.`,
2411
+ },
2412
+ },
2189
2413
  },
2190
2414
  projects: {
2191
2415
  create: {
@@ -2211,7 +2435,7 @@ exports.lib = {
2211
2435
  notFound: (projectName, accountIdentifier) => `Your project ${chalk_1.default.bold(projectName)} could not be found in ${chalk_1.default.bold(accountIdentifier)}.`,
2212
2436
  },
2213
2437
  pollFetchProject: {
2214
- checkingProject: accountIdentifier => `Checking if project exists in ${accountIdentifier}`,
2438
+ checkingProject: (accountIdentifier) => `Checking if project exists in ${accountIdentifier}`,
2215
2439
  },
2216
2440
  logFeedbackMessage: {
2217
2441
  feedbackHeader: "We'd love to hear your feedback!",
@@ -2222,15 +2446,15 @@ exports.lib = {
2222
2446
  makePollTaskStatusFunc: {
2223
2447
  errorSummary: 'See below for a summary of errors.',
2224
2448
  componentCountSingular: 'Found 1 component in this project\n',
2225
- componentCount: numComponents => `Found ${numComponents} components in this project\n`,
2449
+ componentCount: (numComponents) => `Found ${numComponents} components in this project\n`,
2226
2450
  successStatusText: 'DONE',
2227
2451
  failedStatusText: 'FAILED',
2228
- errorFetchingTaskStatus: taskType => `Error fetching ${taskType} status`,
2452
+ errorFetchingTaskStatus: (taskType) => `Error fetching ${taskType} status`,
2229
2453
  },
2230
- pollBuildAutodeployStatusError: buildId => `Error fetching autodeploy status for build #${buildId}`,
2454
+ pollBuildAutodeployStatusError: (buildId) => `Error fetching autodeploy status for build #${buildId}`,
2231
2455
  pollProjectBuildAndDeploy: {
2232
2456
  buildSucceededAutomaticallyDeploying: (buildId, accountIdentifier) => `Build #${buildId} succeeded. ${chalk_1.default.bold('Automatically deploying')} to ${accountIdentifier}\n`,
2233
- cleanedUpTempFile: path => `Cleaned up temporary file ${path}`,
2457
+ cleanedUpTempFile: (path) => `Cleaned up temporary file ${path}`,
2234
2458
  viewDeploys: 'View all deploys for this project in HubSpot',
2235
2459
  unableToFindAutodeployStatus: (buildId, viewDeploysLink) => `Unable to find the auto deploy for build #${buildId}. This deploy may have been skipped. ${viewDeploysLink}.`,
2236
2460
  },
@@ -2243,10 +2467,10 @@ exports.lib = {
2243
2467
  buildCreated: (projectName, buildId) => `Project "${projectName}" uploaded and build #${buildId} created`,
2244
2468
  },
2245
2469
  handleProjectUpload: {
2246
- emptySource: srcDir => `Source directory "${srcDir}" is empty. Add files to your project and rerun ${(0, ui_1.uiCommandReference)('hs project upload')} to upload them to HubSpot.`,
2247
- compressed: byteCount => `Project files compressed: ${byteCount} bytes`,
2248
- compressing: path => `Compressing build files to "${path}"`,
2249
- fileFiltered: filename => `Ignore rule triggered for "${filename}"`,
2470
+ emptySource: (srcDir) => `Source directory "${srcDir}" is empty. Add files to your project and rerun ${(0, ui_1.uiCommandReference)('hs project upload')} to upload them to HubSpot.`,
2471
+ compressed: (byteCount) => `Project files compressed: ${byteCount} bytes`,
2472
+ compressing: (path) => `Compressing build files to "${path}"`,
2473
+ fileFiltered: (filename) => `Ignore rule triggered for "${filename}"`,
2250
2474
  },
2251
2475
  },
2252
2476
  boxen: {
@@ -2271,74 +2495,100 @@ exports.lib = {
2271
2495
  featureKeys: {
2272
2496
  accountOption: {
2273
2497
  command: '--account',
2274
- message: command => `Use the ${command} option with any command to override the default account`,
2498
+ message: (command) => `Use the ${command} option with any command to override the default account`,
2275
2499
  },
2276
2500
  accountsListCommand: {
2277
2501
  command: 'hs accounts list',
2278
- message: command => `Run ${command} to see a list of configured HubSpot accounts`,
2502
+ message: (command) => `Run ${command} to see a list of configured HubSpot accounts`,
2279
2503
  },
2280
2504
  accountsUseCommand: {
2281
2505
  command: 'hs accounts use',
2282
- message: command => `Run ${command} to set the Hubspot account that the CLI will target by default`,
2506
+ message: (command) => `Run ${command} to set the Hubspot account that the CLI will target by default`,
2283
2507
  },
2284
2508
  authCommand: {
2285
2509
  command: 'hs auth',
2286
- message: command => `Run ${command} to connect the CLI to additional HubSpot accounts`,
2510
+ message: (command) => `Run ${command} to connect the CLI to additional HubSpot accounts`,
2287
2511
  },
2288
2512
  feedbackCommand: {
2289
2513
  command: 'hs feedback',
2290
- message: command => `Run ${command} to report a bug or leave feedback`,
2514
+ message: (command) => `Run ${command} to report a bug or leave feedback`,
2291
2515
  },
2292
2516
  helpCommand: {
2293
2517
  command: 'hs help',
2294
- message: command => `Run ${command} to see a list of available commands`,
2518
+ message: (command) => `Run ${command} to see a list of available commands`,
2295
2519
  },
2296
2520
  projectCreateCommand: {
2297
2521
  command: 'hs project create',
2298
- message: command => `Run ${command} to create a new project`,
2522
+ message: (command) => `Run ${command} to create a new project`,
2299
2523
  },
2300
2524
  projectDeployCommand: {
2301
2525
  command: 'hs project deploy',
2302
- message: command => `Ready to take your project live? Run ${command}`,
2526
+ message: (command) => `Ready to take your project live? Run ${command}`,
2303
2527
  },
2304
2528
  projectHelpCommand: {
2305
2529
  command: 'hs project --help',
2306
- message: command => `Run ${command} to learn more about available project commands`,
2530
+ message: (command) => `Run ${command} to learn more about available project commands`,
2307
2531
  },
2308
2532
  projectUploadCommand: {
2309
2533
  command: 'hs project upload',
2310
- message: command => `Run ${command} to upload your project to HubSpot and trigger builds`,
2534
+ message: (command) => `Run ${command} to upload your project to HubSpot and trigger builds`,
2311
2535
  },
2312
2536
  projectDevCommand: {
2313
2537
  command: 'hs project dev',
2314
- message: command => `Run ${command} to set up your test environment and start local development`,
2538
+ message: (command) => `Run ${command} to set up your test environment and start local development`,
2315
2539
  },
2316
2540
  projectInstallDepsCommand: {
2317
2541
  command: 'hs project install-deps',
2318
- message: command => `Run ${command} to install dependencies for your project components`,
2542
+ message: (command) => `Run ${command} to install dependencies for your project components`,
2319
2543
  },
2320
2544
  sampleProjects: {
2321
2545
  linkText: "HubSpot's sample projects",
2322
2546
  url: 'https://developers.hubspot.com/docs/platform/sample-projects?utm_source=cli&utm_content=project_create_whats_next',
2323
- message: link => `See ${link}`,
2547
+ message: (link) => `See ${link}`,
2324
2548
  },
2325
2549
  },
2326
2550
  },
2327
2551
  git: {
2328
2552
  securityIssue: 'Security Issue Detected',
2329
2553
  configFileTracked: 'The HubSpot config file can be tracked by git.',
2330
- fileName: configPath => `File: "${configPath}"`,
2554
+ fileName: (configPath) => `File: "${configPath}"`,
2331
2555
  remediate: 'To remediate:',
2332
- moveConfig: homeDir => `- Move the config file to your home directory: '${homeDir}'`,
2333
- addGitignore: configPath => `- Add gitignore pattern '${configPath}' to a .gitignore file in root of your repository.`,
2556
+ moveConfig: (homeDir) => `- Move the config file to your home directory: '${homeDir}'`,
2557
+ addGitignore: (configPath) => `- Add gitignore pattern '${configPath}' to a .gitignore file in root of your repository.`,
2334
2558
  noRemote: '- Ensure that the config file has not already been pushed to a remote repository.',
2335
2559
  checkFailed: 'Unable to determine if config file is properly ignored by git.',
2336
2560
  },
2337
2561
  serverlessFunctionLogs: {
2338
- unableToProcessLog: log => `Unable to process log ${log}`,
2562
+ unableToProcessLog: (log) => `Unable to process log ${log}`,
2339
2563
  noLogsFound: 'No logs found.',
2340
2564
  },
2341
2565
  },
2566
+ configOptions: {
2567
+ enableOrDisableBooleanFieldPrompt: {
2568
+ message: (fieldName) => `Choose to enable or disable ${fieldName}`,
2569
+ labels: {
2570
+ enabled: 'Enabled',
2571
+ disabled: 'Disabled',
2572
+ },
2573
+ },
2574
+ setAllowUsageTracking: {
2575
+ fieldName: 'usage tracking',
2576
+ success: (isEnabled) => `Allow usage tracking set to: "${isEnabled}"`,
2577
+ },
2578
+ setAllowAutoUpdates: {
2579
+ fieldName: 'auto updates',
2580
+ success: (isEnabled) => `Allow auto updates set to: "${isEnabled}"`,
2581
+ },
2582
+ setDefaultCmsPublishMode: {
2583
+ promptMessage: 'Select CMS publish mode to be used as the default',
2584
+ error: (validModes) => `The provided CMS publish mode is invalid. Valid values are ${validModes}.`,
2585
+ success: (mode) => `Default mode updated to: ${mode}`,
2586
+ },
2587
+ setHttpTimeout: {
2588
+ promptMessage: 'Enter http timeout duration',
2589
+ success: (timeout) => `HTTP timeout set to: ${timeout}`,
2590
+ },
2591
+ },
2342
2592
  commonOpts: {
2343
2593
  options: {
2344
2594
  account: {
@@ -2352,9 +2602,9 @@ exports.lib = {
2352
2602
  },
2353
2603
  modes: {
2354
2604
  describe: {
2355
- default: modes => `${modes}`,
2356
- read: modes => `Read from ${modes}`,
2357
- write: modes => `Write to ${modes}`,
2605
+ default: (modes) => `${modes}`,
2606
+ read: (modes) => `Read from ${modes}`,
2607
+ write: (modes) => `Write to ${modes}`,
2358
2608
  },
2359
2609
  },
2360
2610
  qa: {
@@ -2374,33 +2624,33 @@ exports.lib = {
2374
2624
  createNewDeveloperTestAccountOption: '<Test on a new developer test account>',
2375
2625
  chooseDefaultAccountOption: () => `<${chalk_1.default.bold('❗')} Test on this production account ${chalk_1.default.bold('❗')}>`,
2376
2626
  promptMessage: (accountType, accountIdentifier) => `[--account] Choose a ${accountType} under ${accountIdentifier} to test with:`,
2377
- sandboxLimit: limit => `Your account reached the limit of ${limit} development sandboxes`,
2627
+ sandboxLimit: (limit) => `Your account reached the limit of ${limit} development sandboxes`,
2378
2628
  sandboxLimitWithSuggestion: (limit, authCommand) => `Your account reached the limit of ${limit} development sandboxes. Run ${authCommand} to add an existing one to the config.`,
2379
- developerTestAccountLimit: limit => `Your account reached the limit of ${limit} developer test accounts.`,
2629
+ developerTestAccountLimit: (limit) => `Your account reached the limit of ${limit} developer test accounts.`,
2380
2630
  confirmDefaultAccount: (accountName, accountType) => `Continue testing on ${chalk_1.default.bold(`${accountName} (${accountType})`)}? (Y/n)`,
2381
- confirmUseExistingDeveloperTestAccount: accountName => `Continue with ${accountName}? This account isn't currently connected to the HubSpot CLI. By continuing, you'll be prompted to generate a personal access key and connect it.`,
2631
+ confirmUseExistingDeveloperTestAccount: (accountName) => `Continue with ${accountName}? This account isn't currently connected to the HubSpot CLI. By continuing, you'll be prompted to generate a personal access key and connect it.`,
2382
2632
  noAccountId: 'No account ID found for the selected account. Please try again.',
2383
2633
  },
2384
2634
  projectLogsPrompt: {
2385
- functionName: projectName => `[--function] Select function in ${chalk_1.default.bold(projectName)} project`,
2635
+ functionName: (projectName) => `[--function] Select function in ${chalk_1.default.bold(projectName)} project`,
2386
2636
  },
2387
2637
  setAsDefaultAccountPrompt: {
2388
2638
  setAsDefaultAccountMessage: 'Set this account as the default?',
2389
- setAsDefaultAccount: accountName => `Account "${accountName}" set as the default account`,
2390
- keepingCurrentDefault: accountName => `Account "${accountName}" will continue to be the default account`,
2639
+ setAsDefaultAccount: (accountName) => `Account "${accountName}" set as the default account`,
2640
+ keepingCurrentDefault: (accountName) => `Account "${accountName}" will continue to be the default account`,
2391
2641
  },
2392
2642
  accountNamePrompt: {
2393
2643
  enterAccountName: 'Enter a unique name to reference this account in the CLI:',
2394
2644
  enterDeveloperTestAccountName: 'Name your developer test account:',
2395
2645
  enterStandardSandboxName: 'Name your standard sandbox:',
2396
2646
  enterDevelopmentSandboxName: 'Name your development sandbox:',
2397
- sandboxDefaultName: sandboxType => `New ${sandboxType} sandbox`,
2398
- developerTestAccountDefaultName: count => `Developer test account ${count}`,
2647
+ sandboxDefaultName: (sandboxType) => `New ${sandboxType} sandbox`,
2648
+ developerTestAccountDefaultName: (count) => `Developer test account ${count}`,
2399
2649
  errors: {
2400
2650
  invalidName: 'You entered an invalid name. Please try again.',
2401
2651
  nameRequired: 'The name may not be blank. Please try again.',
2402
2652
  spacesInName: 'The name may not contain spaces. Please try again.',
2403
- accountNameExists: name => `Account with name "${name}" already exists in the CLI config, please enter a different name.`,
2653
+ accountNameExists: (name) => `Account with name "${name}" already exists in the CLI config, please enter a different name.`,
2404
2654
  },
2405
2655
  },
2406
2656
  personalAccessKeyPrompt: {
@@ -2413,7 +2663,7 @@ exports.lib = {
2413
2663
  personalAccessKeyBrowserOpenPrep: "A personal access key is required to authenticate the CLI to interact with your HubSpot account. We'll open a secure page in your default browser where you can view and copy your personal access key.",
2414
2664
  personalAccessKeyBrowserOpenPrompt: 'Open HubSpot to copy your personal access key?',
2415
2665
  logs: {
2416
- openingWebBrowser: url => `Opening ${url} in your web browser`,
2666
+ openingWebBrowser: (url) => `Opening ${url} in your web browser`,
2417
2667
  },
2418
2668
  errors: {
2419
2669
  invalidAccountId: 'You did not enter a valid account ID. Please try again.',
@@ -2469,19 +2719,26 @@ exports.lib = {
2469
2719
  destRequired: 'A project dest is required',
2470
2720
  invalidDest: 'There is an existing project at this destination. Please provide a new path for this project.',
2471
2721
  invalidCharacters: 'The selected destination contains invalid characters. Please provide a new path and try again.',
2472
- invalidTemplate: template => `[--template] Could not find template "${template}". Please choose an available template:`,
2722
+ invalidTemplate: (template) => `[--template] Could not find template "${template}". Please choose an available template:`,
2473
2723
  projectTemplateRequired: 'Project template is required when projectTemplates is provided',
2474
2724
  },
2475
2725
  },
2476
- selectPublicAppPrompt: {
2477
- selectAppIdMigrate: accountName => `[--appId] Choose an app under ${accountName} to migrate:`,
2478
- selectAppIdClone: accountName => `[--appId] Choose an app under ${accountName} to clone:`,
2726
+ selectAppPrompt: {
2727
+ selectAppId: '[--app] Select an app:',
2728
+ errors: {
2729
+ noApps: 'No apps were found for the given account.',
2730
+ invalidAppId: 'Invalid app id',
2731
+ },
2732
+ },
2733
+ selectPublicAppForMigrationPrompt: {
2734
+ selectAppIdMigrate: (accountName) => `[--appId] Choose an app under ${accountName} to migrate:`,
2735
+ selectAppIdClone: (accountName) => `[--appId] Choose an app under ${accountName} to clone:`,
2479
2736
  errors: {
2480
2737
  noAccountId: 'An account ID is required to select an app.',
2481
2738
  noAppsMigration: () => `${chalk_1.default.bold('No apps to migrate')}`,
2482
2739
  noAppsClone: () => `${chalk_1.default.bold('No apps to clone')}`,
2483
- noAppsMigrationMessage: accountName => `The selected developer account ${chalk_1.default.bold(accountName)} doesn't have any apps that can be migrated to the projects framework.`,
2484
- noAppsCloneMessage: accountName => `The selected developer account ${chalk_1.default.bold(accountName)} doesn't have any apps that can be cloned to the projects framework.`,
2740
+ noAppsMigrationMessage: (accountName) => `The selected developer account ${chalk_1.default.bold(accountName)} doesn't have any apps that can be migrated to the projects framework.`,
2741
+ noAppsCloneMessage: (accountName) => `The selected developer account ${chalk_1.default.bold(accountName)} doesn't have any apps that can be cloned to the projects framework.`,
2485
2742
  errorFetchingApps: 'There was an error fetching public apps.',
2486
2743
  cannotBeMigrated: 'Cannot be migrated',
2487
2744
  },
@@ -2498,12 +2755,12 @@ exports.lib = {
2498
2755
  enterName: '[--name] Give your component a name: ',
2499
2756
  errors: {
2500
2757
  nameRequired: 'A component name is required',
2501
- invalidType: type => `[--type] Could not find type "${type}". Please choose an available type:`,
2758
+ invalidType: (type) => `[--type] Could not find type "${type}". Please choose an available type:`,
2502
2759
  },
2503
2760
  },
2504
2761
  secretPrompt: {
2505
- enterValue: 'Enter a value for your secret: ',
2506
- enterName: 'Enter a name for your secret: ',
2762
+ enterValue: 'Enter a value for the secret: ',
2763
+ enterName: 'Enter the name of the secret to add: ',
2507
2764
  selectSecretUpdate: 'Select the secret you want to update',
2508
2765
  selectSecretDelete: 'Select the secret you want to delete',
2509
2766
  errors: {
@@ -2526,7 +2783,7 @@ exports.lib = {
2526
2783
  srcRequired: 'You must specify a source directory.',
2527
2784
  destRequired: 'You must specify a destination directory.',
2528
2785
  },
2529
- fieldsPrompt: dir => `Multiple fields files located in "${dir}". Please choose which to upload: `,
2786
+ fieldsPrompt: (dir) => `Multiple fields files located in "${dir}". Please choose which to upload: `,
2530
2787
  },
2531
2788
  projectNamePrompt: {
2532
2789
  enterName: '[--project] Enter project name:',
@@ -2544,19 +2801,19 @@ exports.lib = {
2544
2801
  destRequired: 'You must specify a destination directory.',
2545
2802
  },
2546
2803
  },
2547
- installPublicAppPrompt: {
2804
+ installAppPrompt: {
2548
2805
  explanation: 'Local development requires this app to be installed in the target test account',
2549
2806
  reinstallExplanation: "This app's required scopes have been updated since it was last installed on the target test account. To avoid issues with local development, we recommend reinstalling the app with the updated scopes.",
2550
2807
  prompt: 'Open HubSpot to install this app?',
2551
2808
  reinstallPrompt: 'Open HubSpot to reinstall this app?',
2552
- decline: () => `To continue local development of this app, install it in your target test account and re-run ${chalk_1.default.bold('`hs project dev`')}`,
2809
+ decline: `To continue local development of this app, install it in your target test account and re-run ${chalk_1.default.bold('`hs project dev`')}`,
2553
2810
  },
2554
2811
  selectHubDBTablePrompt: {
2555
2812
  selectTable: 'Select a HubDB table:',
2556
2813
  enterDest: 'Enter the destination path:',
2557
2814
  errors: {
2558
- noTables: accountId => `No HubDB tables found in account ${accountId}`,
2559
- errorFetchingTables: accountId => `Unable to fetch HubDB tables in account ${accountId}`,
2815
+ noTables: (accountId) => `No HubDB tables found in account ${accountId}`,
2816
+ errorFetchingTables: (accountId) => `Unable to fetch HubDB tables in account ${accountId}`,
2560
2817
  destRequired: 'A destination is required',
2561
2818
  invalidDest: 'The selected destination already exists. Please provide a new path.',
2562
2819
  invalidCharacters: 'The selected destination contains invalid characters. Please provide a new path and try again.',
@@ -2578,8 +2835,8 @@ exports.lib = {
2578
2835
  developerTestAccount: {
2579
2836
  create: {
2580
2837
  loading: {
2581
- add: accountName => `Creating developer test account ${chalk_1.default.bold(accountName)}`,
2582
- fail: accountName => `Failed to create a developer test account ${chalk_1.default.bold(accountName)}.`,
2838
+ add: (accountName) => `Creating developer test account ${chalk_1.default.bold(accountName)}`,
2839
+ fail: (accountName) => `Failed to create a developer test account ${chalk_1.default.bold(accountName)}.`,
2583
2840
  succeed: (accountName, accountId) => `Successfully created a developer test account ${chalk_1.default.bold(accountName)} with portalId ${chalk_1.default.bold(accountId)}.`,
2584
2841
  },
2585
2842
  success: {
@@ -2600,8 +2857,8 @@ exports.lib = {
2600
2857
  create: {
2601
2858
  developer: {
2602
2859
  loading: {
2603
- add: accountName => `Creating developer sandbox ${chalk_1.default.bold(accountName)}`,
2604
- fail: accountName => `Failed to create a developer sandbox ${chalk_1.default.bold(accountName)}.`,
2860
+ add: (accountName) => `Creating developer sandbox ${chalk_1.default.bold(accountName)}`,
2861
+ fail: (accountName) => `Failed to create a developer sandbox ${chalk_1.default.bold(accountName)}.`,
2605
2862
  succeed: (accountName, accountId) => `Successfully created a developer sandbox ${chalk_1.default.bold(accountName)} with portalId ${chalk_1.default.bold(accountId)}.`,
2606
2863
  },
2607
2864
  success: {
@@ -2620,8 +2877,8 @@ exports.lib = {
2620
2877
  },
2621
2878
  standard: {
2622
2879
  loading: {
2623
- add: accountName => `Creating standard sandbox ${chalk_1.default.bold(accountName)}`,
2624
- fail: accountName => `Failed to create a standard sandbox ${chalk_1.default.bold(accountName)}.`,
2880
+ add: (accountName) => `Creating standard sandbox ${chalk_1.default.bold(accountName)}`,
2881
+ fail: (accountName) => `Failed to create a standard sandbox ${chalk_1.default.bold(accountName)}.`,
2625
2882
  succeed: (accountName, accountId) => `Successfully created a standard sandbox ${chalk_1.default.bold(accountName)} with portalId ${chalk_1.default.bold(accountId)}.`,
2626
2883
  },
2627
2884
  success: {
@@ -2640,9 +2897,9 @@ exports.lib = {
2640
2897
  },
2641
2898
  sync: {
2642
2899
  loading: {
2643
- add: accountName => `Syncing sandbox ${chalk_1.default.bold(accountName)}`,
2644
- fail: accountName => `Failed to sync sandbox ${chalk_1.default.bold(accountName)}.`,
2645
- succeed: accountName => `Successfully synced sandbox ${chalk_1.default.bold(accountName)}.`,
2900
+ add: (accountName) => `Syncing sandbox ${chalk_1.default.bold(accountName)}`,
2901
+ fail: (accountName) => `Failed to sync sandbox ${chalk_1.default.bold(accountName)}.`,
2902
+ succeed: (accountName) => `Successfully synced sandbox ${chalk_1.default.bold(accountName)}.`,
2646
2903
  },
2647
2904
  success: {
2648
2905
  configFileUpdated: (accountName, authType) => `Account "${accountName}" updated using "${authType}"`,
@@ -2658,27 +2915,27 @@ exports.lib = {
2658
2915
  },
2659
2916
  errorHandlers: {
2660
2917
  index: {
2661
- errorOccurred: error => `Error: ${error}`,
2662
- errorContext: context => `Context: ${context}`,
2663
- errorCause: cause => `Cause: ${cause}`,
2918
+ errorOccurred: (error) => `Error: ${error}`,
2919
+ errorContext: (context) => `Context: ${context}`,
2920
+ errorCause: (cause) => `Cause: ${cause}`,
2664
2921
  unknownErrorOccurred: 'An unknown error has occurred.',
2665
2922
  },
2666
2923
  suppressErrors: {
2667
2924
  platformVersionErrors: {
2668
2925
  header: 'Platform version update required',
2669
- unspecifiedPlatformVersion: platformVersion => `Projects with an ${chalk_1.default.bold(platformVersion)} are no longer supported.`,
2670
- platformVersionRetired: platformVersion => `Projects with ${chalk_1.default.bold(`platformVersion ${platformVersion}`)} are no longer supported.`,
2671
- nonExistentPlatformVersion: platformVersion => `Projects with ${chalk_1.default.bold(`platformVersion ${platformVersion}`)} are not supported.`,
2926
+ unspecifiedPlatformVersion: (platformVersion) => `Projects with an ${chalk_1.default.bold(platformVersion)} are no longer supported.`,
2927
+ platformVersionRetired: (platformVersion) => `Projects with ${chalk_1.default.bold(`platformVersion ${platformVersion}`)} are no longer supported.`,
2928
+ nonExistentPlatformVersion: (platformVersion) => `Projects with ${chalk_1.default.bold(`platformVersion ${platformVersion}`)} are not supported.`,
2672
2929
  updateProject: 'Please update your project to the latest version and try again.',
2673
2930
  docsLink: 'Projects platform versioning (BETA)',
2674
- betaLink: docsLink => `For more info, see ${docsLink}.`,
2931
+ betaLink: (docsLink) => `For more info, see ${docsLink}.`,
2675
2932
  },
2676
2933
  missingScopeError: (request, accountName, authCommand) => `Couldn't execute the ${request} because the access key for ${accountName} is missing required scopes. To update scopes, run ${authCommand}. Then deactivate the existing key and generate a new one that includes the missing scopes.`,
2677
2934
  },
2678
2935
  },
2679
2936
  serverless: {
2680
2937
  verifyAccessKeyAndUserAccess: {
2681
- fetchScopeDataError: scopeGroup => `Error verifying access of scopeGroup ${scopeGroup}:`,
2938
+ fetchScopeDataError: (scopeGroup) => `Error verifying access of scopeGroup ${scopeGroup}:`,
2682
2939
  portalMissingScope: 'Your account does not have access to this action. Talk to an account admin to request it.',
2683
2940
  userMissingScope: "You don't have access to this action. Ask an account admin to change your permissions in Users & Teams settings.",
2684
2941
  genericMissingScope: 'Your access key does not allow this action. Please generate a new access key by running `hs auth personalaccesskey`.',
@@ -2690,49 +2947,49 @@ exports.lib = {
2690
2947
  accountChecks: {
2691
2948
  active: 'Default account active',
2692
2949
  inactive: "Default account isn't active",
2693
- inactiveSecondary: command => `Run ${command} to remove inactive accounts from your CLI config`,
2950
+ inactiveSecondary: (command) => `Run ${command} to remove inactive accounts from your CLI config`,
2694
2951
  unableToDetermine: 'Unable to determine if the portal is active',
2695
2952
  pak: {
2696
2953
  incomplete: 'Personal access key is valid, but there are more scopes available to your user that are not included in your key.',
2697
2954
  incompleteSecondary: (command, link) => `To add the available scopes, run ${command} and re-authenticate your account with a new key that has those scopes. Visit HubSpot to view selected and available scopes for your personal access key. ${link}`,
2698
2955
  invalid: 'Personal access key is invalid',
2699
- invalidSecondary: command => `To get a new key, run ${command}, deactivate your access key, and generate a new one. Then use that new key to authenticate your account.`,
2700
- valid: link => `Personal Access Key is valid. ${link}`,
2956
+ invalidSecondary: (command) => `To get a new key, run ${command}, deactivate your access key, and generate a new one. Then use that new key to authenticate your account.`,
2957
+ valid: (link) => `Personal Access Key is valid. ${link}`,
2701
2958
  viewScopes: 'View selected scopes',
2702
2959
  },
2703
2960
  },
2704
2961
  nodeChecks: {
2705
2962
  unableToDetermine: 'Unable to determine what version of node is installed',
2706
- minimumNotMet: nodeVersion => `Minimum Node version is not met. Upgrade to ${nodeVersion} or higher`,
2707
- success: nodeVersion => `node v${nodeVersion} is installed`,
2963
+ minimumNotMet: (nodeVersion) => `Minimum Node version is not met. Upgrade to ${nodeVersion} or higher`,
2964
+ success: (nodeVersion) => `node v${nodeVersion} is installed`,
2708
2965
  },
2709
2966
  npmChecks: {
2710
2967
  notInstalled: 'npm is not installed',
2711
- installed: npmVersion => `npm v${npmVersion} is installed`,
2968
+ installed: (npmVersion) => `npm v${npmVersion} is installed`,
2712
2969
  unableToDetermine: 'Unable to determine if npm is installed',
2713
2970
  },
2714
2971
  hsChecks: {
2715
- notLatest: hsVersion => `Version ${hsVersion} outdated`,
2972
+ notLatest: (hsVersion) => `Version ${hsVersion} outdated`,
2716
2973
  notLatestSecondary: (command, hsVersion) => `Run ${command} to upgrade to the latest version ${hsVersion}`,
2717
- latest: hsVersion => `HubSpot CLI v${hsVersion} up to date`,
2974
+ latest: (hsVersion) => `HubSpot CLI v${hsVersion} up to date`,
2718
2975
  unableToDetermine: 'Unable to determine if HubSpot CLI is up to date.',
2719
2976
  unableToDetermineSecondary: (command, link) => `Run ${command} to check your installed version; then visit the ${link} to validate whether you have the latest version`,
2720
2977
  unableToDetermineSecondaryLink: 'npm HubSpot CLI version history',
2721
2978
  },
2722
2979
  projectDependenciesChecks: {
2723
- missingDependencies: dir => `missing dependencies in ${chalk_1.default.bold(dir)}`,
2724
- missingDependenciesSecondary: command => `Run ${command} to install all project dependencies locally`,
2725
- unableToDetermine: dir => `Unable to determine if dependencies are installed ${dir}`,
2980
+ missingDependencies: (dir) => `missing dependencies in ${chalk_1.default.bold(dir)}`,
2981
+ missingDependenciesSecondary: (command) => `Run ${command} to install all project dependencies locally`,
2982
+ unableToDetermine: (dir) => `Unable to determine if dependencies are installed ${dir}`,
2726
2983
  success: 'App dependencies are installed and up to date',
2727
2984
  },
2728
2985
  files: {
2729
- invalidJson: filename => `invalid JSON in ${chalk_1.default.bold(filename)}`,
2986
+ invalidJson: (filename) => `invalid JSON in ${chalk_1.default.bold(filename)}`,
2730
2987
  validJson: 'JSON files valid',
2731
2988
  },
2732
2989
  port: {
2733
- inUse: port => `Port ${port} is in use`,
2734
- inUseSecondary: command => `Make sure it is available before running ${command}`,
2735
- available: port => `Port ${port} available for local development`,
2990
+ inUse: (port) => `Port ${port} is in use`,
2991
+ inUseSecondary: (command) => `Make sure it is available before running ${command}`,
2992
+ available: (port) => `Port ${port} available for local development`,
2736
2993
  },
2737
2994
  diagnosis: {
2738
2995
  cli: {
@@ -2740,19 +2997,19 @@ exports.lib = {
2740
2997
  },
2741
2998
  cliConfig: {
2742
2999
  header: 'CLI configuration',
2743
- configFileSubHeader: filename => `Config File: ${chalk_1.default.bold(filename)}`,
2744
- defaultAccountSubHeader: accountDetails => `Default Account: ${accountDetails}`,
3000
+ configFileSubHeader: (filename) => `Config File: ${chalk_1.default.bold(filename)}`,
3001
+ defaultAccountSubHeader: (accountDetails) => `Default Account: ${accountDetails}`,
2745
3002
  noConfigFile: 'CLI configuration not found',
2746
- noConfigFileSecondary: command => `Run ${command} and follow the prompts to create your CLI configuration file and connect it to your HubSpot account`,
3003
+ noConfigFileSecondary: (command) => `Run ${command} and follow the prompts to create your CLI configuration file and connect it to your HubSpot account`,
2747
3004
  },
2748
3005
  projectConfig: {
2749
3006
  header: 'Project configuration',
2750
- projectDirSubHeader: projectDir => `Project dir: ${chalk_1.default.bold(projectDir)}`,
2751
- projectNameSubHeader: projectName => `Project name: ${chalk_1.default.bold(projectName)}`,
3007
+ projectDirSubHeader: (projectDir) => `Project dir: ${chalk_1.default.bold(projectDir)}`,
3008
+ projectNameSubHeader: (projectName) => `Project name: ${chalk_1.default.bold(projectName)}`,
2752
3009
  },
2753
3010
  counts: {
2754
- errors: count => `${chalk_1.default.bold('Errors:')} ${count}`,
2755
- warnings: count => `${chalk_1.default.bold('Warning:')} ${count}`,
3011
+ errors: (count) => `${chalk_1.default.bold('Errors:')} ${count}`,
3012
+ warnings: (count) => `${chalk_1.default.bold('Warning:')} ${count}`,
2756
3013
  },
2757
3014
  },
2758
3015
  },
@@ -2760,8 +3017,8 @@ exports.lib = {
2760
3017
  missingClientId: 'Error building oauth URL: missing client ID.',
2761
3018
  },
2762
3019
  migrate: {
2763
- componentsToBeMigrated: components => `The following features will be migrated: ${components}`,
2764
- componentsThatWillNotBeMigrated: components => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
3020
+ componentsToBeMigrated: (components) => `The following features will be migrated: ${components}`,
3021
+ componentsThatWillNotBeMigrated: (components) => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
2765
3022
  sourceContentsMoved: (newLocation) => `The contents of your old source directory have been moved to ${newLocation}, move any required files to the new source directory.`,
2766
3023
  projectMigrationWarningTitle: '⚠️ Important: Migrating to platformVersion 2025.2 is irreversible ⚠️',
2767
3024
  projectMigrationWarning: (0, ui_1.uiBetaTag)(`Running the ${(0, ui_1.uiCommandReference)('hs project migrate')} command will permanently upgrade your project to platformVersion 2025.2. This action cannot be undone. To ensure you have access to your original files, they will be copied to a new directory (archive) for safekeeping.\n\nThis command will guide you through the process, prompting you to enter the required fields and will download the new project source code into your project source directory.`, false),
@@ -2770,7 +3027,7 @@ exports.lib = {
2770
3027
  invalidConfig: 'The project configuration file is invalid. Please check the config file and try again.',
2771
3028
  doesNotExist: (account) => `Project does not exist in ${(0, ui_1.uiAccountDescription)(account)}. Migrations are only supported for existing projects.`,
2772
3029
  multipleApps: 'Multiple apps found in project, this is not allowed in 2025.2',
2773
- alreadyExists: projectName => `A project with name ${projectName} already exists. Please choose another name.`,
3030
+ alreadyExists: (projectName) => `A project with name ${projectName} already exists. Please choose another name.`,
2774
3031
  },
2775
3032
  unmigratableReasons: {
2776
3033
  upToDate: 'App is already up to date',
@@ -2778,21 +3035,21 @@ exports.lib = {
2778
3035
  listedInMarketplace: 'Listed apps are not currently migratable',
2779
3036
  projectConnectedToGitHub: (projectName, accountId) => `The project is linked to a GitHub repository. ${(0, ui_1.uiLink)('Visit the project settings page to unlink it', (0, urls_1.getProjectSettingsUrl)(projectName, accountId))}`,
2780
3037
  partOfProjectAlready: `This app is part of a project, run ${(0, ui_1.uiCommandReference)('hs project migrate')} from the project directory to migrate it`,
2781
- generic: reasonCode => `Unable to migrate app: ${reasonCode}`,
3038
+ generic: (reasonCode) => `Unable to migrate app: ${reasonCode}`,
2782
3039
  },
2783
3040
  noAppsEligible: (accountId, reasons) => `No apps in account ${accountId} are currently migratable${reasons.length ? `\n - ${reasons.join('\n - ')}` : ''}`,
2784
3041
  invalidAccountTypeTitle: `${chalk_1.default.bold('Developer account not targeted')}`,
2785
3042
  invalidAccountTypeDescription: (useCommand, authCommand) => `Only public apps created in a developer account can be converted to a project component. Select a connected developer account with ${useCommand} or ${authCommand} and try again.`,
2786
- appWithAppIdNotFound: appId => `Could not find an app with the id ${appId} `,
3043
+ appWithAppIdNotFound: (appId) => `Could not find an app with the id ${appId} `,
2787
3044
  noAppsForProject: (projectName) => `No apps associated with project ${projectName}`,
2788
3045
  migrationFailed: 'Migration Failed',
2789
- notUngatedForUnifiedApps: account => `Your account ${account} isn't enrolled in the required product beta to access this command.`,
3046
+ notUngatedForUnifiedApps: (account) => `Your account ${account} isn't enrolled in the required product beta to access this command.`,
2790
3047
  },
2791
3048
  prompt: {
2792
3049
  chooseApp: 'Which app would you like to migrate?',
2793
3050
  inputName: '[--name] What would you like to name the project?',
2794
3051
  inputDest: '[--dest] Where would you like to save the project?',
2795
- uidForComponent: componentName => `What UID would you like to use for ${componentName}?`,
3052
+ uidForComponent: (componentName) => `What UID would you like to use for ${componentName}?`,
2796
3053
  proceed: 'Would you like to proceed?',
2797
3054
  },
2798
3055
  spinners: {