@hubspot/cli 7.0.0-experimental.0 → 7.0.0-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/bin/cli.js +15 -36
  2. package/commands/{account → accounts}/clean.js +9 -10
  3. package/commands/{account → accounts}/info.js +14 -10
  4. package/commands/{account → accounts}/list.js +13 -16
  5. package/commands/{account → accounts}/remove.js +8 -8
  6. package/commands/{account → accounts}/rename.js +5 -4
  7. package/commands/{account → accounts}/use.js +8 -5
  8. package/commands/accounts.js +30 -0
  9. package/commands/auth.js +23 -30
  10. package/commands/cms/lighthouseScore.js +19 -19
  11. package/commands/cms/reactModules.js +60 -0
  12. package/commands/cms.js +3 -4
  13. package/commands/config/set.js +22 -22
  14. package/commands/config.js +2 -2
  15. package/commands/create.js +3 -5
  16. package/commands/customObject/create.js +13 -18
  17. package/commands/customObject/schema/create.js +14 -14
  18. package/commands/customObject/schema/delete.js +9 -29
  19. package/commands/customObject/schema/fetch-all.js +9 -14
  20. package/commands/customObject/schema/fetch.js +12 -22
  21. package/commands/customObject/schema/list.js +4 -3
  22. package/commands/customObject/schema/update.js +16 -27
  23. package/commands/customObject/schema.js +1 -1
  24. package/commands/customObject.js +4 -3
  25. package/commands/doctor.js +0 -2
  26. package/commands/feedback.js +0 -2
  27. package/commands/fetch.js +12 -13
  28. package/commands/filemanager/fetch.js +5 -6
  29. package/commands/filemanager/upload.js +10 -10
  30. package/commands/filemanager.js +4 -0
  31. package/commands/{function → functions}/deploy.js +11 -13
  32. package/commands/{function → functions}/list.js +7 -7
  33. package/commands/{function → functions}/server.js +6 -5
  34. package/commands/functions.js +24 -0
  35. package/commands/hubdb/clear.js +8 -14
  36. package/commands/hubdb/create.js +11 -36
  37. package/commands/hubdb/delete.js +8 -31
  38. package/commands/hubdb/fetch.js +7 -14
  39. package/commands/hubdb.js +3 -2
  40. package/commands/init.js +14 -37
  41. package/commands/lint.js +5 -6
  42. package/commands/list.js +5 -5
  43. package/commands/logs.js +13 -24
  44. package/commands/module/marketplace-validate.js +7 -6
  45. package/commands/module.js +1 -2
  46. package/commands/mv.js +11 -11
  47. package/commands/open.js +10 -11
  48. package/commands/project/add.js +3 -2
  49. package/commands/project/cloneApp.js +30 -28
  50. package/commands/project/create.js +8 -8
  51. package/commands/project/deploy.js +13 -16
  52. package/commands/project/dev.js +14 -14
  53. package/commands/project/download.js +13 -18
  54. package/commands/project/listBuilds.js +29 -34
  55. package/commands/project/logs.js +5 -5
  56. package/commands/project/migrateApp.js +25 -27
  57. package/commands/project/open.js +8 -7
  58. package/commands/project/upload.js +29 -27
  59. package/commands/project/watch.js +19 -12
  60. package/commands/project.js +4 -3
  61. package/commands/remove.js +11 -14
  62. package/commands/sandbox/create.js +13 -12
  63. package/commands/sandbox/delete.js +13 -15
  64. package/commands/sandbox.js +4 -3
  65. package/commands/{secret → secrets}/addSecret.js +9 -24
  66. package/commands/secrets/deleteSecret.js +46 -0
  67. package/commands/{secret → secrets}/listSecrets.js +6 -6
  68. package/commands/{secret → secrets}/updateSecret.js +10 -20
  69. package/commands/secrets.js +23 -0
  70. package/commands/theme/generate-selectors.js +8 -8
  71. package/commands/theme/marketplace-validate.js +11 -10
  72. package/commands/theme/preview.js +7 -6
  73. package/commands/theme.js +1 -3
  74. package/commands/upload.js +24 -28
  75. package/commands/watch.js +19 -19
  76. package/lang/en.lyaml +111 -177
  77. package/lib/LocalDevManager.js +1 -1
  78. package/lib/buildAccount.js +1 -3
  79. package/lib/commonOpts.d.ts +6 -15
  80. package/lib/commonOpts.js +38 -54
  81. package/lib/configOptions.js +18 -19
  82. package/lib/dependencyManagement.d.ts +4 -1
  83. package/lib/dependencyManagement.js +2 -2
  84. package/lib/developerTestAccounts.js +5 -8
  85. package/lib/doctor/Doctor.js +7 -3
  86. package/lib/localDev.js +1 -1
  87. package/lib/oauth.js +1 -3
  88. package/lib/projects.js +5 -10
  89. package/lib/prompts/accountsPrompt.js +5 -9
  90. package/lib/prompts/createModulePrompt.js +2 -17
  91. package/lib/prompts/createProjectPrompt.js +5 -5
  92. package/lib/prompts/projectDevTargetAccountPrompt.js +2 -3
  93. package/lib/prompts/promptUtils.d.ts +0 -3
  94. package/lib/prompts/promptUtils.js +2 -14
  95. package/lib/prompts/sandboxesPrompt.js +7 -10
  96. package/lib/prompts/secretPrompt.d.ts +1 -3
  97. package/lib/prompts/secretPrompt.js +19 -32
  98. package/lib/prompts/setAsDefaultAccountPrompt.js +2 -4
  99. package/lib/sandboxSync.js +2 -5
  100. package/lib/sandboxes.js +7 -12
  101. package/lib/validation.js +13 -14
  102. package/package.json +5 -6
  103. package/commands/account.js +0 -26
  104. package/commands/cms/getReactModule.js +0 -70
  105. package/commands/completion.js +0 -22
  106. package/commands/function.js +0 -20
  107. package/commands/secret/deleteSecret.js +0 -71
  108. package/commands/secret.d.ts +0 -1
  109. package/commands/secret.js +0 -22
  110. package/lib/prompts/selectHubDBTablePrompt.d.ts +0 -8
  111. package/lib/prompts/selectHubDBTablePrompt.js +0 -69
  112. /package/commands/{account → accounts}/clean.d.ts +0 -0
  113. /package/commands/{account → accounts}/info.d.ts +0 -0
  114. /package/commands/{account → accounts}/list.d.ts +0 -0
  115. /package/commands/{account → accounts}/remove.d.ts +0 -0
  116. /package/commands/{account → accounts}/rename.d.ts +0 -0
  117. /package/commands/{account → accounts}/use.d.ts +0 -0
  118. /package/commands/{account.d.ts → accounts.d.ts} +0 -0
  119. /package/commands/cms/{getReactModule.d.ts → reactModules.d.ts} +0 -0
  120. /package/commands/{function → functions}/deploy.d.ts +0 -0
  121. /package/commands/{function → functions}/list.d.ts +0 -0
  122. /package/commands/{function → functions}/server.d.ts +0 -0
  123. /package/commands/{completion.d.ts → functions.d.ts} +0 -0
  124. /package/commands/{secret → secrets}/addSecret.d.ts +0 -0
  125. /package/commands/{secret → secrets}/deleteSecret.d.ts +0 -0
  126. /package/commands/{secret → secrets}/listSecrets.d.ts +0 -0
  127. /package/commands/{secret → secrets}/updateSecret.d.ts +0 -0
  128. /package/commands/{function.d.ts → secrets.d.ts} +0 -0
@@ -12,17 +12,17 @@ const { ApiErrorContext, logError } = require('../lib/errorHandlers/index');
12
12
  const { validateSrcAndDestPaths, } = require('@hubspot/local-dev-lib/cms/modules');
13
13
  const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
14
14
  const { getThemePreviewUrl, getThemeJSONPath, } = require('@hubspot/local-dev-lib/cms/themes');
15
- const { addConfigOptions, addAccountOptions, addCmsPublishModeOptions, addUseEnvironmentOptions, addGlobalOptions, getCmsPublishMode, } = require('../lib/commonOpts');
15
+ const { addConfigOptions, addAccountOptions, addModeOptions, addUseEnvironmentOptions, getAccountId, getMode, } = require('../lib/commonOpts');
16
16
  const { uploadPrompt } = require('../lib/prompts/uploadPrompt');
17
17
  const { cleanUploadPrompt } = require('../lib/prompts/cleanUploadPrompt');
18
- const { validateCmsPublishMode, loadAndValidateOptions, } = require('../lib/validation');
18
+ const { validateMode, loadAndValidateOptions } = require('../lib/validation');
19
19
  const { trackCommandUsage } = require('../lib/usageTracking');
20
20
  const { getUploadableFileList } = require('../lib/upload');
21
21
  const { i18n } = require('../lib/lang');
22
22
  const i18nKey = 'commands.upload';
23
23
  const { EXIT_CODES } = require('../lib/enums/exitCodes');
24
24
  const { FieldsJs, isConvertableFieldJs, cleanupTmpDirSync, } = require('@hubspot/local-dev-lib/cms/handleFieldsJS');
25
- exports.command = 'upload [src] [dest]';
25
+ exports.command = 'upload [--src] [--dest]';
26
26
  exports.describe = i18n(`${i18nKey}.describe`);
27
27
  const logThemePreview = (filePath, accountId) => {
28
28
  const previewUrl = getThemePreviewUrl(filePath, accountId);
@@ -35,11 +35,11 @@ const logThemePreview = (filePath, accountId) => {
35
35
  };
36
36
  exports.handler = async (options) => {
37
37
  await loadAndValidateOptions(options);
38
- if (!validateCmsPublishMode(options)) {
38
+ if (!validateMode(options)) {
39
39
  process.exit(EXIT_CODES.WARNING);
40
40
  }
41
- const { derivedAccountId } = options;
42
- const cmsPublishMode = getCmsPublishMode(options);
41
+ const accountId = getAccountId(options);
42
+ const mode = getMode(options);
43
43
  const uploadPromptAnswers = await uploadPrompt(options);
44
44
  const src = options.src || uploadPromptAnswers.src;
45
45
  const saveOutput = options.saveOutput;
@@ -82,7 +82,7 @@ exports.handler = async (options) => {
82
82
  return;
83
83
  }
84
84
  const normalizedDest = convertToUnixPath(dest);
85
- trackCommandUsage('upload', { mode: cmsPublishMode, type: stats.isFile() ? 'file' : 'folder' }, derivedAccountId);
85
+ trackCommandUsage('upload', { mode, type: stats.isFile() ? 'file' : 'folder' }, accountId);
86
86
  const srcDestIssues = await validateSrcAndDestPaths({ isLocal: true, path: src }, { isHubSpot: true, path: dest });
87
87
  if (srcDestIssues.length) {
88
88
  srcDestIssues.forEach(({ message }) => logger.error(message));
@@ -101,14 +101,14 @@ exports.handler = async (options) => {
101
101
  }));
102
102
  return;
103
103
  }
104
- upload(derivedAccountId, absoluteSrcPath, normalizedDest, getFileMapperQueryValues(cmsPublishMode, options))
104
+ upload(accountId, absoluteSrcPath, normalizedDest, getFileMapperQueryValues(mode, options))
105
105
  .then(() => {
106
106
  logger.success(i18n(`${i18nKey}.success.fileUploaded`, {
107
- accountId: derivedAccountId,
107
+ accountId,
108
108
  dest: normalizedDest,
109
109
  src,
110
110
  }));
111
- logThemePreview(src, derivedAccountId);
111
+ logThemePreview(src, accountId);
112
112
  })
113
113
  .catch(error => {
114
114
  logger.error(i18n(`${i18nKey}.errors.uploadFailed`, {
@@ -116,7 +116,7 @@ exports.handler = async (options) => {
116
116
  src,
117
117
  }));
118
118
  logError(error, new ApiErrorContext({
119
- accountId: derivedAccountId,
119
+ accountId,
120
120
  request: normalizedDest,
121
121
  payload: src,
122
122
  }));
@@ -133,7 +133,7 @@ exports.handler = async (options) => {
133
133
  }
134
134
  else {
135
135
  logger.log(i18n(`${i18nKey}.uploading`, {
136
- accountId: derivedAccountId,
136
+ accountId,
137
137
  dest,
138
138
  src,
139
139
  }));
@@ -143,33 +143,30 @@ exports.handler = async (options) => {
143
143
  // If clean is true, will first delete the dest folder and then upload src. Cleans up files that only exist on HS.
144
144
  let cleanUpload = options.force;
145
145
  if (!options.force) {
146
- cleanUpload = await cleanUploadPrompt(derivedAccountId, dest);
146
+ cleanUpload = await cleanUploadPrompt(accountId, dest);
147
147
  }
148
148
  if (cleanUpload) {
149
149
  try {
150
- await deleteFile(derivedAccountId, dest);
151
- logger.log(i18n(`${i18nKey}.cleaning`, {
152
- accountId: derivedAccountId,
153
- filePath: dest,
154
- }));
150
+ await deleteFile(accountId, dest);
151
+ logger.log(i18n(`${i18nKey}.cleaning`, { accountId, filePath: dest }));
155
152
  }
156
153
  catch (error) {
157
154
  logger.error(i18n(`${i18nKey}.errors.deleteFailed`, {
158
- accountId: derivedAccountId,
155
+ accountId,
159
156
  path: dest,
160
157
  }));
161
158
  }
162
159
  }
163
160
  }
164
- uploadFolder(derivedAccountId, absoluteSrcPath, dest, {
165
- cmsPublishMode,
161
+ uploadFolder(accountId, absoluteSrcPath, dest, {
162
+ mode,
166
163
  }, options, filePaths)
167
164
  .then(results => {
168
165
  if (!hasUploadErrors(results)) {
169
166
  logger.success(i18n(`${i18nKey}.success.uploadComplete`, {
170
167
  dest,
171
168
  }));
172
- logThemePreview(src, derivedAccountId);
169
+ logThemePreview(src, accountId);
173
170
  }
174
171
  else {
175
172
  logger.error(i18n(`${i18nKey}.errors.someFilesFailed`, {
@@ -184,13 +181,17 @@ exports.handler = async (options) => {
184
181
  src,
185
182
  }));
186
183
  logError(error, {
187
- accountId: derivedAccountId,
184
+ accountId,
188
185
  });
189
186
  process.exit(EXIT_CODES.WARNING);
190
187
  });
191
188
  }
192
189
  };
193
190
  exports.builder = yargs => {
191
+ addConfigOptions(yargs);
192
+ addAccountOptions(yargs);
193
+ addModeOptions(yargs, { write: true });
194
+ addUseEnvironmentOptions(yargs);
194
195
  yargs.positional('src', {
195
196
  describe: i18n(`${i18nKey}.positionals.src.describe`),
196
197
  type: 'string',
@@ -225,10 +226,5 @@ exports.builder = yargs => {
225
226
  type: 'boolean',
226
227
  default: false,
227
228
  });
228
- addConfigOptions(yargs);
229
- addAccountOptions(yargs);
230
- addCmsPublishModeOptions(yargs, { write: true });
231
- addUseEnvironmentOptions(yargs);
232
- addGlobalOptions(yargs);
233
229
  return yargs;
234
230
  };
package/commands/watch.js CHANGED
@@ -6,24 +6,25 @@ const path = require('path');
6
6
  const { watch } = require('@hubspot/local-dev-lib/cms/watch');
7
7
  const { getCwd } = require('@hubspot/local-dev-lib/path');
8
8
  const { logger } = require('@hubspot/local-dev-lib/logger');
9
- const { addConfigOptions, addAccountOptions, addCmsPublishModeOptions, addUseEnvironmentOptions, addGlobalOptions, getCmsPublishMode, } = require('../lib/commonOpts');
9
+ const { addConfigOptions, addAccountOptions, addModeOptions, addUseEnvironmentOptions, getAccountId, getMode, } = require('../lib/commonOpts');
10
10
  const { uploadPrompt } = require('../lib/prompts/uploadPrompt');
11
- const { validateCmsPublishMode, loadAndValidateOptions, } = require('../lib/validation');
11
+ const { validateMode, loadAndValidateOptions } = require('../lib/validation');
12
12
  const { trackCommandUsage } = require('../lib/usageTracking');
13
13
  const { i18n } = require('../lib/lang');
14
14
  const { getUploadableFileList } = require('../lib/upload');
15
15
  const { logError, ApiErrorContext } = require('../lib/errorHandlers/index');
16
16
  const i18nKey = 'commands.watch';
17
17
  const { EXIT_CODES } = require('../lib/enums/exitCodes');
18
- exports.command = 'watch [src] [dest]';
18
+ exports.command = 'watch [--src] [--dest]';
19
19
  exports.describe = i18n(`${i18nKey}.describe`);
20
20
  exports.handler = async (options) => {
21
- const { remove, initialUpload, disableInitial, notify, derivedAccountId, } = options;
21
+ const { remove, initialUpload, disableInitial, notify } = options;
22
22
  await loadAndValidateOptions(options);
23
- if (!validateCmsPublishMode(options)) {
23
+ if (!validateMode(options)) {
24
24
  process.exit(EXIT_CODES.ERROR);
25
25
  }
26
- const cmsPublishMode = getCmsPublishMode(options);
26
+ const accountId = getAccountId(options);
27
+ const mode = getMode(options);
27
28
  const uploadPromptAnswers = await uploadPrompt(options);
28
29
  const src = options.src || uploadPromptAnswers.src;
29
30
  const dest = options.dest || uploadPromptAnswers.dest;
@@ -58,33 +59,33 @@ exports.handler = async (options) => {
58
59
  if (initialUpload) {
59
60
  filesToUpload = await getUploadableFileList(absoluteSrcPath, options.convertFields);
60
61
  }
61
- trackCommandUsage('watch', { mode: cmsPublishMode }, derivedAccountId);
62
+ trackCommandUsage('watch', { mode }, accountId);
62
63
  const postInitialUploadCallback = null;
63
64
  const onUploadFolderError = error => {
64
65
  logger.error(i18n(`${i18nKey}.errors.folderFailed`, {
65
66
  src,
66
67
  dest,
67
- accountId: derivedAccountId,
68
+ accountId,
68
69
  }));
69
70
  logError(error, {
70
- accountId: derivedAccountId,
71
+ accountId,
71
72
  });
72
73
  };
73
74
  const onQueueAddError = null;
74
- const onUploadFileError = (file, dest, derivedAccountId) => error => {
75
+ const onUploadFileError = (file, dest, accountId) => error => {
75
76
  logger.error(i18n(`${i18nKey}.errors.fileFailed`, {
76
77
  file,
77
78
  dest,
78
- accountId: derivedAccountId,
79
+ accountId,
79
80
  }));
80
81
  logError(error, new ApiErrorContext({
81
- accountId: derivedAccountId,
82
+ accountId,
82
83
  request: dest,
83
84
  payload: file,
84
85
  }));
85
86
  };
86
- watch(derivedAccountId, absoluteSrcPath, dest, {
87
- cmsPublishMode,
87
+ watch(accountId, absoluteSrcPath, dest, {
88
+ mode,
88
89
  remove,
89
90
  disableInitial: initialUpload ? false : true,
90
91
  notify,
@@ -93,6 +94,10 @@ exports.handler = async (options) => {
93
94
  }, postInitialUploadCallback, onUploadFolderError, onQueueAddError, onUploadFileError);
94
95
  };
95
96
  exports.builder = yargs => {
97
+ addConfigOptions(yargs);
98
+ addAccountOptions(yargs);
99
+ addModeOptions(yargs, { write: true });
100
+ addUseEnvironmentOptions(yargs);
96
101
  yargs.positional('src', {
97
102
  describe: i18n(`${i18nKey}.positionals.src.describe`),
98
103
  type: 'string',
@@ -138,10 +143,5 @@ exports.builder = yargs => {
138
143
  type: 'boolean',
139
144
  default: false,
140
145
  });
141
- addConfigOptions(yargs);
142
- addAccountOptions(yargs);
143
- addCmsPublishModeOptions(yargs, { write: true });
144
- addUseEnvironmentOptions(yargs);
145
- addGlobalOptions(yargs);
146
146
  return yargs;
147
147
  };