@hubspot/cli 7.4.8 → 7.4.9-beta.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 (206) hide show
  1. package/commands/account/auth.d.ts +3 -7
  2. package/commands/account/auth.js +19 -9
  3. package/commands/account/clean.d.ts +3 -7
  4. package/commands/account/clean.js +16 -9
  5. package/commands/account/createOverride.d.ts +3 -7
  6. package/commands/account/createOverride.js +23 -6
  7. package/commands/account/info.d.ts +3 -7
  8. package/commands/account/info.js +13 -5
  9. package/commands/account/list.d.ts +3 -7
  10. package/commands/account/list.js +15 -8
  11. package/commands/account/remove.d.ts +3 -7
  12. package/commands/account/remove.js +21 -9
  13. package/commands/account/removeOverride.d.ts +3 -7
  14. package/commands/account/removeOverride.js +23 -6
  15. package/commands/account/rename.d.ts +3 -7
  16. package/commands/account/rename.js +16 -9
  17. package/commands/account/use.d.ts +5 -9
  18. package/commands/account/use.js +14 -6
  19. package/commands/account.d.ts +3 -4
  20. package/commands/account.js +35 -58
  21. package/commands/cms/convertFields.d.ts +7 -1
  22. package/commands/cms/convertFields.js +57 -41
  23. package/commands/cms/getReactModule.d.ts +7 -1
  24. package/commands/cms/getReactModule.js +52 -34
  25. package/commands/cms/lighthouseScore.d.ts +8 -1
  26. package/commands/cms/lighthouseScore.js +129 -100
  27. package/commands/cms.d.ts +3 -1
  28. package/commands/cms.js +24 -15
  29. package/commands/completion.d.ts +3 -1
  30. package/commands/completion.js +25 -12
  31. package/commands/config/migrate.d.ts +1 -1
  32. package/commands/config/migrate.js +16 -12
  33. package/commands/create/api-sample.d.ts +3 -1
  34. package/commands/create/api-sample.js +34 -38
  35. package/commands/create/app.d.ts +3 -1
  36. package/commands/create/app.js +9 -7
  37. package/commands/create/function.d.ts +3 -1
  38. package/commands/create/function.js +11 -10
  39. package/commands/create/index.d.ts +5 -1
  40. package/commands/create/index.js +23 -11
  41. package/commands/create/module.d.ts +3 -1
  42. package/commands/create/module.js +14 -13
  43. package/commands/create/react-app.d.ts +3 -1
  44. package/commands/create/react-app.js +10 -7
  45. package/commands/create/template.d.ts +3 -1
  46. package/commands/create/template.js +14 -14
  47. package/commands/create/vue-app.d.ts +3 -1
  48. package/commands/create/vue-app.js +10 -7
  49. package/commands/create/webpack-serverless.d.ts +3 -1
  50. package/commands/create/webpack-serverless.js +10 -7
  51. package/commands/create/website-theme.d.ts +3 -1
  52. package/commands/create/website-theme.js +10 -9
  53. package/commands/create.d.ts +4 -24
  54. package/commands/create.js +63 -74
  55. package/commands/customObject/create.d.ts +4 -9
  56. package/commands/customObject/create.js +17 -10
  57. package/commands/customObject/schema/create.d.ts +4 -9
  58. package/commands/customObject/schema/create.js +18 -11
  59. package/commands/customObject/schema/delete.d.ts +4 -9
  60. package/commands/customObject/schema/delete.js +17 -10
  61. package/commands/customObject/schema/fetch-all.d.ts +4 -9
  62. package/commands/customObject/schema/fetch-all.js +17 -10
  63. package/commands/customObject/schema/fetch.d.ts +4 -9
  64. package/commands/customObject/schema/fetch.js +17 -10
  65. package/commands/customObject/schema/list.d.ts +4 -8
  66. package/commands/customObject/schema/list.js +17 -10
  67. package/commands/customObject/schema/update.d.ts +4 -9
  68. package/commands/customObject/schema/update.js +18 -11
  69. package/commands/customObject/schema.d.ts +3 -5
  70. package/commands/customObject/schema.js +27 -54
  71. package/commands/customObject.d.ts +3 -4
  72. package/commands/customObject.js +20 -45
  73. package/commands/feedback.d.ts +4 -1
  74. package/commands/feedback.js +40 -47
  75. package/commands/fetch.d.ts +12 -1
  76. package/commands/fetch.js +49 -33
  77. package/commands/filemanager/fetch.d.ts +4 -9
  78. package/commands/filemanager/fetch.js +18 -11
  79. package/commands/filemanager/upload.d.ts +4 -9
  80. package/commands/filemanager/upload.js +17 -11
  81. package/commands/filemanager.d.ts +3 -4
  82. package/commands/filemanager.js +20 -41
  83. package/commands/function/deploy.d.ts +6 -1
  84. package/commands/function/deploy.js +70 -50
  85. package/commands/function/list.d.ts +6 -1
  86. package/commands/function/list.js +44 -32
  87. package/commands/function/server.d.ts +10 -1
  88. package/commands/function/server.js +49 -38
  89. package/commands/function.d.ts +5 -1
  90. package/commands/function.js +24 -10
  91. package/commands/hubdb/clear.d.ts +4 -9
  92. package/commands/hubdb/clear.js +17 -10
  93. package/commands/hubdb/create.d.ts +4 -9
  94. package/commands/hubdb/create.js +17 -10
  95. package/commands/hubdb/delete.d.ts +4 -9
  96. package/commands/hubdb/delete.js +17 -10
  97. package/commands/hubdb/fetch.d.ts +4 -9
  98. package/commands/hubdb/fetch.js +17 -10
  99. package/commands/hubdb.d.ts +3 -2
  100. package/commands/hubdb.js +23 -45
  101. package/commands/lint.d.ts +6 -4
  102. package/commands/lint.js +44 -43
  103. package/commands/logs.d.ts +10 -1
  104. package/commands/logs.js +53 -44
  105. package/commands/module/marketplace-validate.d.ts +6 -1
  106. package/commands/module/marketplace-validate.js +39 -27
  107. package/commands/module.d.ts +3 -1
  108. package/commands/module.js +22 -10
  109. package/commands/project/cloneApp.d.ts +1 -1
  110. package/commands/project/create.js +3 -3
  111. package/commands/project/deploy.d.ts +1 -0
  112. package/commands/project/deploy.js +40 -12
  113. package/commands/project/dev/index.d.ts +1 -4
  114. package/commands/project/dev/index.js +44 -15
  115. package/commands/project/dev/unifiedFlow.d.ts +2 -1
  116. package/commands/project/dev/unifiedFlow.js +52 -20
  117. package/commands/project/migrate.d.ts +1 -0
  118. package/commands/project/profile/add.d.ts +7 -0
  119. package/commands/project/profile/add.js +190 -0
  120. package/commands/project/profile/remove.d.ts +6 -0
  121. package/commands/project/profile/remove.js +119 -0
  122. package/commands/project/profile.d.ts +3 -0
  123. package/commands/project/profile.js +25 -0
  124. package/commands/project/upload.d.ts +1 -0
  125. package/commands/project/upload.js +38 -8
  126. package/commands/project.js +2 -0
  127. package/commands/sandbox/create.d.ts +4 -9
  128. package/commands/sandbox/create.js +18 -11
  129. package/commands/sandbox/delete.d.ts +4 -9
  130. package/commands/sandbox/delete.js +18 -11
  131. package/commands/sandbox.d.ts +3 -4
  132. package/commands/sandbox.js +20 -43
  133. package/commands/secret/addSecret.d.ts +4 -9
  134. package/commands/secret/addSecret.js +17 -10
  135. package/commands/secret/deleteSecret.d.ts +4 -9
  136. package/commands/secret/deleteSecret.js +17 -10
  137. package/commands/secret/listSecret.d.ts +4 -9
  138. package/commands/secret/listSecret.js +17 -10
  139. package/commands/secret/updateSecret.d.ts +4 -9
  140. package/commands/secret/updateSecret.js +17 -10
  141. package/commands/secret.d.ts +3 -4
  142. package/commands/secret.js +25 -48
  143. package/commands/theme/generate-selectors.d.ts +3 -7
  144. package/commands/theme/generate-selectors.js +14 -6
  145. package/commands/theme/marketplace-validate.d.ts +4 -9
  146. package/commands/theme/marketplace-validate.js +17 -10
  147. package/commands/theme/preview.d.ts +4 -9
  148. package/commands/theme/preview.js +16 -9
  149. package/commands/theme.d.ts +3 -4
  150. package/commands/theme.js +23 -46
  151. package/commands/upload.d.ts +12 -1
  152. package/commands/upload.js +118 -97
  153. package/commands/watch.d.ts +14 -1
  154. package/commands/watch.js +76 -65
  155. package/lang/en.d.ts +654 -558
  156. package/lang/en.js +443 -353
  157. package/lang/en.lyaml +23 -13
  158. package/lib/app/migrate.d.ts +23 -0
  159. package/lib/app/migrate.js +14 -3
  160. package/lib/app/migrate_legacy.js +5 -5
  161. package/lib/configMigrate.js +24 -10
  162. package/lib/constants.d.ts +6 -0
  163. package/lib/constants.js +7 -1
  164. package/lib/errorHandlers/suppressError.js +12 -19
  165. package/lib/filesystem.d.ts +1 -1
  166. package/lib/interpolation.d.ts +2 -3
  167. package/lib/lang.d.ts +2 -3
  168. package/lib/middleware/configMiddleware.js +8 -0
  169. package/lib/projectProfiles.d.ts +6 -0
  170. package/lib/projectProfiles.js +65 -0
  171. package/lib/projects/buildAndDeploy.js +17 -2
  172. package/lib/projects/localDev/AppDevModeInterface.d.ts +25 -0
  173. package/lib/projects/localDev/AppDevModeInterface.js +117 -0
  174. package/lib/projects/localDev/DevServerManagerV2.d.ts +11 -22
  175. package/lib/projects/localDev/DevServerManagerV2.js +19 -15
  176. package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
  177. package/lib/projects/localDev/LocalDevLogger.js +158 -0
  178. package/lib/projects/localDev/LocalDevManager.js +2 -3
  179. package/lib/projects/localDev/LocalDevProcess.d.ts +27 -0
  180. package/lib/projects/localDev/LocalDevProcess.js +171 -0
  181. package/lib/projects/localDev/LocalDevState.d.ts +37 -0
  182. package/lib/projects/localDev/LocalDevState.js +78 -0
  183. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  184. package/lib/projects/localDev/LocalDevWatcher.js +56 -0
  185. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +17 -0
  186. package/lib/projects/localDev/LocalDevWebsocketServer.js +92 -0
  187. package/lib/projects/localDev/helpers.d.ts +1 -1
  188. package/lib/projects/localDev/helpers.js +2 -1
  189. package/lib/projects/upload.d.ts +2 -1
  190. package/lib/projects/upload.js +2 -2
  191. package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
  192. package/lib/prompts/createTemplatePrompt.d.ts +22 -4
  193. package/lib/testUtils.d.ts +3 -3
  194. package/lib/testUtils.js +8 -9
  195. package/lib/upload.d.ts +1 -1
  196. package/lib/validation.js +4 -5
  197. package/lib/yargsUtils.d.ts +4 -0
  198. package/lib/yargsUtils.js +6 -0
  199. package/package.json +5 -3
  200. package/types/Cms.d.ts +30 -0
  201. package/types/Cms.js +2 -0
  202. package/types/LocalDev.d.ts +24 -0
  203. package/types/LocalDev.js +2 -0
  204. package/types/Yargs.d.ts +8 -1
  205. package/lib/projects/localDev/LocalDevManagerV2.d.ts +0 -64
  206. package/lib/projects/localDev/LocalDevManagerV2.js +0 -345
@@ -1,107 +1,112 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const fs = require('fs');
5
- const path = require('path');
6
- const { uploadFolder, hasUploadErrors, } = require('@hubspot/local-dev-lib/cms/uploadFolder');
7
- const { getFileMapperQueryValues, } = require('@hubspot/local-dev-lib/fileMapper');
8
- const { upload, deleteFile } = require('@hubspot/local-dev-lib/api/fileMapper');
9
- const { getCwd, convertToUnixPath, isAllowedExtension, } = require('@hubspot/local-dev-lib/path');
10
- const { logger } = require('@hubspot/local-dev-lib/logger');
11
- const { ApiErrorContext, logError } = require('../lib/errorHandlers/index');
12
- const { validateSrcAndDestPaths, } = require('@hubspot/local-dev-lib/cms/modules');
13
- const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
14
- const { getThemePreviewUrl, getThemeJSONPath, } = require('@hubspot/local-dev-lib/cms/themes');
15
- const { addConfigOptions, addAccountOptions, addCmsPublishModeOptions, addUseEnvironmentOptions, addGlobalOptions, getCmsPublishMode, } = require('../lib/commonOpts');
16
- const { uploadPrompt } = require('../lib/prompts/uploadPrompt');
17
- const { confirmPrompt } = require('../lib/prompts/promptUtils');
18
- const { validateCmsPublishMode } = require('../lib/validation');
19
- const { trackCommandUsage } = require('../lib/usageTracking');
20
- const { getUploadableFileList } = require('../lib/upload');
21
- const { i18n } = require('../lib/lang');
22
- const { EXIT_CODES } = require('../lib/enums/exitCodes');
23
- const { FieldsJs, isConvertableFieldJs, cleanupTmpDirSync, } = require('@hubspot/local-dev-lib/cms/handleFieldsJS');
24
- exports.command = 'upload [src] [dest]';
25
- exports.describe = i18n('commands.upload.describe');
26
- const logThemePreview = (filePath, accountId) => {
27
- const previewUrl = getThemePreviewUrl(filePath, accountId);
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const uploadFolder_1 = require("@hubspot/local-dev-lib/cms/uploadFolder");
9
+ const fileMapper_1 = require("@hubspot/local-dev-lib/fileMapper");
10
+ const fileMapper_2 = require("@hubspot/local-dev-lib/api/fileMapper");
11
+ const path_2 = require("@hubspot/local-dev-lib/path");
12
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
13
+ const modules_1 = require("@hubspot/local-dev-lib/cms/modules");
14
+ const ignoreRules_1 = require("@hubspot/local-dev-lib/ignoreRules");
15
+ const themes_1 = require("@hubspot/local-dev-lib/cms/themes");
16
+ const handleFieldsJS_1 = require("@hubspot/local-dev-lib/cms/handleFieldsJS");
17
+ const index_1 = require("../lib/errorHandlers/index");
18
+ const commonOpts_1 = require("../lib/commonOpts");
19
+ const uploadPrompt_1 = require("../lib/prompts/uploadPrompt");
20
+ const promptUtils_1 = require("../lib/prompts/promptUtils");
21
+ const validation_1 = require("../lib/validation");
22
+ const usageTracking_1 = require("../lib/usageTracking");
23
+ const upload_1 = require("../lib/upload");
24
+ const lang_1 = require("../lib/lang");
25
+ const exitCodes_1 = require("../lib/enums/exitCodes");
26
+ const yargsUtils_1 = require("../lib/yargsUtils");
27
+ const command = 'upload [src] [dest]';
28
+ const describe = (0, lang_1.i18n)('commands.upload.describe');
29
+ function logThemePreview(filePath, accountId) {
30
+ const previewUrl = (0, themes_1.getThemePreviewUrl)(filePath, accountId);
28
31
  // Only log if we are actually in a theme
29
32
  if (previewUrl) {
30
- logger.log(i18n('commands.upload.previewUrl', {
33
+ logger_1.logger.log((0, lang_1.i18n)('commands.upload.previewUrl', {
31
34
  previewUrl,
32
35
  }));
33
36
  }
34
- };
35
- exports.handler = async (options) => {
36
- if (!validateCmsPublishMode(options)) {
37
- process.exit(EXIT_CODES.WARNING);
37
+ }
38
+ async function handler(args) {
39
+ if (!(0, validation_1.validateCmsPublishMode)(args)) {
40
+ process.exit(exitCodes_1.EXIT_CODES.WARNING);
38
41
  }
39
- const { derivedAccountId } = options;
40
- const cmsPublishMode = getCmsPublishMode(options);
41
- const uploadPromptAnswers = await uploadPrompt(options);
42
- const src = options.src || uploadPromptAnswers.src;
43
- const saveOutput = options.saveOutput;
44
- let dest = options.dest || uploadPromptAnswers.dest;
45
- let absoluteSrcPath = path.resolve(getCwd(), src);
42
+ const { derivedAccountId } = args;
43
+ const cmsPublishMode = (0, commonOpts_1.getCmsPublishMode)(args);
44
+ const uploadPromptAnswers = await (0, uploadPrompt_1.uploadPrompt)(args);
45
+ const src = args.src || uploadPromptAnswers.src;
46
+ const saveOutput = args.saveOutput;
47
+ let dest = args.dest || uploadPromptAnswers.dest;
48
+ let absoluteSrcPath = path_1.default.resolve((0, path_2.getCwd)(), src);
46
49
  if (!dest) {
47
- logger.error(i18n('commands.upload.errors.destinationRequired'));
50
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.destinationRequired'));
48
51
  return;
49
52
  }
50
53
  // Check for theme.json file and determine the root path for the project based on it if it exists
51
- const themeJsonPath = getThemeJSONPath(absoluteSrcPath);
54
+ const themeJsonPath = (0, themes_1.getThemeJSONPath)(absoluteSrcPath);
52
55
  const projectRoot = themeJsonPath
53
- ? path.dirname(themeJsonPath)
54
- : path.dirname(getCwd());
56
+ ? path_1.default.dirname(themeJsonPath)
57
+ : path_1.default.dirname((0, path_2.getCwd)());
55
58
  const convertFields = projectRoot &&
56
- isConvertableFieldJs(projectRoot, absoluteSrcPath, options.convertFields);
59
+ (0, handleFieldsJS_1.isConvertableFieldJs)(projectRoot, absoluteSrcPath, args.convertFields);
57
60
  let fieldsJs;
58
61
  if (convertFields) {
59
- fieldsJs = await new FieldsJs(projectRoot, absoluteSrcPath, undefined, options.fieldOptions).init();
62
+ fieldsJs = await new handleFieldsJS_1.FieldsJs(projectRoot, absoluteSrcPath, undefined, args.fieldOptions).init();
60
63
  if (fieldsJs.rejected)
61
64
  return;
62
65
  // Ensures that the dest path is a .json. The user might pass '.js' accidentally - this ensures it just works.
63
- absoluteSrcPath = fieldsJs.outputPath;
64
- dest = path.join(path.dirname(dest), 'fields.json');
66
+ if (fieldsJs.outputPath) {
67
+ absoluteSrcPath = fieldsJs.outputPath;
68
+ }
69
+ dest = path_1.default.join(path_1.default.dirname(dest), 'fields.json');
65
70
  }
66
71
  let stats;
67
72
  try {
68
- stats = fs.statSync(absoluteSrcPath);
73
+ stats = fs_1.default.statSync(absoluteSrcPath);
69
74
  if (!stats.isFile() && !stats.isDirectory()) {
70
- logger.error(i18n('commands.upload.errors.invalidPath', {
75
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
71
76
  path: src,
72
77
  }));
73
78
  return;
74
79
  }
75
80
  }
76
81
  catch (e) {
77
- logger.error(i18n('commands.upload.errors.invalidPath', {
82
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
78
83
  path: src,
79
84
  }));
80
85
  return;
81
86
  }
82
- const normalizedDest = convertToUnixPath(dest);
83
- trackCommandUsage('upload', { mode: cmsPublishMode, type: stats.isFile() ? 'file' : 'folder' }, derivedAccountId);
84
- const srcDestIssues = await validateSrcAndDestPaths({ isLocal: true, path: src }, { isHubSpot: true, path: dest });
87
+ const normalizedDest = (0, path_2.convertToUnixPath)(dest);
88
+ (0, usageTracking_1.trackCommandUsage)('upload', { mode: cmsPublishMode, type: stats.isFile() ? 'file' : 'folder' }, derivedAccountId);
89
+ const srcDestIssues = await (0, modules_1.validateSrcAndDestPaths)({ isLocal: true, path: src }, { isHubSpot: true, path: dest });
85
90
  if (srcDestIssues.length) {
86
- srcDestIssues.forEach(({ message }) => logger.error(message));
87
- process.exit(EXIT_CODES.WARNING);
91
+ srcDestIssues.forEach(({ message }) => logger_1.logger.error(message));
92
+ process.exit(exitCodes_1.EXIT_CODES.WARNING);
88
93
  }
89
94
  if (stats.isFile()) {
90
- if (!isAllowedExtension(src) && !convertFields) {
91
- logger.error(i18n('commands.upload.errors.invalidPath', {
95
+ if (!(0, path_2.isAllowedExtension)(src) && !convertFields) {
96
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
92
97
  path: src,
93
98
  }));
94
99
  return;
95
100
  }
96
- if (shouldIgnoreFile(absoluteSrcPath)) {
97
- logger.error(i18n('commands.upload.errors.fileIgnored', {
101
+ if ((0, ignoreRules_1.shouldIgnoreFile)(absoluteSrcPath)) {
102
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.fileIgnored', {
98
103
  path: src,
99
104
  }));
100
105
  return;
101
106
  }
102
- upload(derivedAccountId, absoluteSrcPath, normalizedDest, getFileMapperQueryValues(cmsPublishMode, options))
107
+ (0, fileMapper_2.upload)(derivedAccountId, absoluteSrcPath, normalizedDest, (0, fileMapper_1.getFileMapperQueryValues)(cmsPublishMode))
103
108
  .then(() => {
104
- logger.success(i18n('commands.upload.success.fileUploaded', {
109
+ logger_1.logger.success((0, lang_1.i18n)('commands.upload.success.fileUploaded', {
105
110
  accountId: derivedAccountId,
106
111
  dest: normalizedDest,
107
112
  src,
@@ -109,127 +114,143 @@ exports.handler = async (options) => {
109
114
  logThemePreview(src, derivedAccountId);
110
115
  })
111
116
  .catch(error => {
112
- logger.error(i18n('commands.upload.errors.uploadFailed', {
117
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.uploadFailed', {
113
118
  dest: normalizedDest,
114
119
  src,
115
120
  }));
116
- logError(error, new ApiErrorContext({
121
+ (0, index_1.logError)(error, new index_1.ApiErrorContext({
117
122
  accountId: derivedAccountId,
118
123
  request: normalizedDest,
119
124
  payload: src,
120
125
  }));
121
- process.exit(EXIT_CODES.WARNING);
126
+ process.exit(exitCodes_1.EXIT_CODES.WARNING);
122
127
  })
123
128
  .finally(() => {
124
129
  if (!convertFields)
125
130
  return;
126
- if (saveOutput) {
131
+ if (saveOutput && fieldsJs) {
127
132
  fieldsJs.saveOutput();
128
133
  }
129
- cleanupTmpDirSync(fieldsJs.rootWriteDir);
134
+ if (fieldsJs) {
135
+ (0, handleFieldsJS_1.cleanupTmpDirSync)(fieldsJs.rootWriteDir);
136
+ }
130
137
  });
131
138
  }
132
139
  else {
133
- logger.log(i18n('commands.upload.uploading', {
140
+ logger_1.logger.log((0, lang_1.i18n)('commands.upload.uploading', {
134
141
  accountId: derivedAccountId,
135
142
  dest,
136
143
  src,
137
144
  }));
138
145
  // Generate the first-pass file list in here, and pass to uploadFolder.
139
- const filePaths = await getUploadableFileList(absoluteSrcPath, options.convertFields);
140
- if (options.clean) {
146
+ const filePaths = await (0, upload_1.getUploadableFileList)(absoluteSrcPath, args.convertFields ?? false);
147
+ if (args.clean) {
141
148
  // If clean is true, will first delete the dest folder and then upload src. Cleans up files that only exist on HS.
142
- let cleanUpload = options.force;
143
- if (!options.force) {
144
- cleanUpload = await confirmPrompt(i18n('commands.upload.confirmCleanUpload', {
149
+ let cleanUpload = args.force;
150
+ if (!args.force) {
151
+ cleanUpload = await (0, promptUtils_1.confirmPrompt)((0, lang_1.i18n)('commands.upload.confirmCleanUpload', {
145
152
  accountId: derivedAccountId,
146
153
  path: dest,
147
154
  }), { defaultAnswer: false });
148
155
  }
149
156
  if (cleanUpload) {
150
157
  try {
151
- await deleteFile(derivedAccountId, dest);
152
- logger.log(i18n('commands.upload.cleaning', {
158
+ await (0, fileMapper_2.deleteFile)(derivedAccountId, dest);
159
+ logger_1.logger.log((0, lang_1.i18n)('commands.upload.cleaning', {
153
160
  accountId: derivedAccountId,
154
161
  filePath: dest,
155
162
  }));
156
163
  }
157
164
  catch (error) {
158
- logger.error(i18n('commands.upload.errors.deleteFailed', {
165
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.deleteFailed', {
159
166
  accountId: derivedAccountId,
160
167
  path: dest,
161
168
  }));
162
169
  }
163
170
  }
164
171
  }
165
- uploadFolder(derivedAccountId, absoluteSrcPath, dest, {
166
- cmsPublishMode,
167
- }, options, filePaths)
172
+ (0, uploadFolder_1.uploadFolder)(derivedAccountId, absoluteSrcPath, dest, {}, {
173
+ convertFields: args.convertFields,
174
+ // @ts-expect-error - fieldOptions is a string or string[]
175
+ fieldOptions: args.fieldOptions ?? undefined,
176
+ saveOutput: args.saveOutput,
177
+ }, filePaths)
168
178
  .then(results => {
169
- if (!hasUploadErrors(results)) {
170
- logger.success(i18n('commands.upload.success.uploadComplete', {
179
+ if (!(0, uploadFolder_1.hasUploadErrors)(results)) {
180
+ logger_1.logger.success((0, lang_1.i18n)('commands.upload.success.uploadComplete', {
171
181
  dest,
172
182
  }));
173
183
  logThemePreview(src, derivedAccountId);
174
184
  }
175
185
  else {
176
- logger.error(i18n('commands.upload.errors.someFilesFailed', {
186
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.someFilesFailed', {
177
187
  dest,
178
188
  }));
179
- process.exit(EXIT_CODES.WARNING);
189
+ process.exit(exitCodes_1.EXIT_CODES.WARNING);
180
190
  }
181
191
  })
182
192
  .catch(error => {
183
- logger.error(i18n('commands.upload.errors.uploadFailed', {
193
+ logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.uploadFailed', {
184
194
  dest,
185
195
  src,
186
196
  }));
187
- logError(error, {
197
+ (0, index_1.logError)(error, {
188
198
  accountId: derivedAccountId,
189
199
  });
190
- process.exit(EXIT_CODES.WARNING);
200
+ process.exit(exitCodes_1.EXIT_CODES.WARNING);
191
201
  });
192
202
  }
193
- };
194
- exports.builder = yargs => {
203
+ }
204
+ function uploadBuilder(yargs) {
195
205
  yargs.positional('src', {
196
- describe: i18n('commands.upload.positionals.src.describe'),
206
+ describe: (0, lang_1.i18n)('commands.upload.positionals.src.describe'),
197
207
  type: 'string',
198
208
  });
199
209
  yargs.positional('dest', {
200
- describe: i18n('commands.upload.positionals.dest.describe'),
210
+ describe: (0, lang_1.i18n)('commands.upload.positionals.dest.describe'),
201
211
  type: 'string',
202
212
  });
203
213
  yargs.option('fieldOptions', {
204
- describe: i18n('commands.upload.options.options.describe'),
214
+ describe: (0, lang_1.i18n)('commands.upload.options.options.describe'),
205
215
  type: 'array',
206
216
  default: [''],
207
217
  hidden: true,
208
218
  });
209
219
  yargs.option('saveOutput', {
210
- describe: i18n('commands.upload.options.saveOutput.describe'),
220
+ describe: (0, lang_1.i18n)('commands.upload.options.saveOutput.describe'),
211
221
  type: 'boolean',
212
222
  default: false,
213
223
  });
214
224
  yargs.option('convertFields', {
215
- describe: i18n('commands.upload.options.convertFields.describe'),
225
+ describe: (0, lang_1.i18n)('commands.upload.options.convertFields.describe'),
216
226
  type: 'boolean',
217
227
  default: false,
218
228
  });
219
229
  yargs.option('clean', {
220
- describe: i18n('commands.upload.options.clean.describe'),
230
+ describe: (0, lang_1.i18n)('commands.upload.options.clean.describe'),
221
231
  type: 'boolean',
222
232
  default: false,
223
233
  });
224
234
  yargs.option('force', {
225
- describe: i18n('commands.upload.options.force.describe'),
235
+ describe: (0, lang_1.i18n)('commands.upload.options.force.describe'),
226
236
  type: 'boolean',
227
237
  default: false,
228
238
  });
229
- addConfigOptions(yargs);
230
- addAccountOptions(yargs);
231
- addCmsPublishModeOptions(yargs, { write: true });
232
- addUseEnvironmentOptions(yargs);
233
- addGlobalOptions(yargs);
234
239
  return yargs;
240
+ }
241
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(uploadBuilder, command, describe, {
242
+ useGlobalOptions: true,
243
+ useConfigOptions: true,
244
+ useAccountOptions: true,
245
+ useEnvironmentOptions: true,
246
+ useCmsPublishModeOptions: true,
247
+ });
248
+ const uploadCommand = {
249
+ command,
250
+ describe,
251
+ handler,
252
+ builder,
235
253
  };
254
+ exports.default = uploadCommand;
255
+ // TODO remove this after cli.ts is ported to TS
256
+ module.exports = uploadCommand;
@@ -1 +1,14 @@
1
- export {};
1
+ import { AccountArgs, CmsPublishModeArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../types/Yargs';
2
+ type WatchCommandArgs = ConfigArgs & AccountArgs & EnvironmentArgs & CommonArgs & CmsPublishModeArgs & {
3
+ src?: string;
4
+ dest?: string;
5
+ fieldOptions?: string[];
6
+ remove?: boolean;
7
+ initialUpload?: boolean;
8
+ disableInitial?: boolean;
9
+ notify?: string;
10
+ convertFields?: boolean;
11
+ saveOutput?: boolean;
12
+ };
13
+ declare const watchCommand: YargsCommandModule<unknown, WatchCommandArgs>;
14
+ export default watchCommand;
package/commands/watch.js CHANGED
@@ -1,145 +1,156 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const fs = require('fs');
5
- const path = require('path');
6
- const { watch } = require('@hubspot/local-dev-lib/cms/watch');
7
- const { getCwd } = require('@hubspot/local-dev-lib/path');
8
- const { logger } = require('@hubspot/local-dev-lib/logger');
9
- const { addConfigOptions, addAccountOptions, addCmsPublishModeOptions, addUseEnvironmentOptions, addGlobalOptions, getCmsPublishMode, } = require('../lib/commonOpts');
10
- const { uploadPrompt } = require('../lib/prompts/uploadPrompt');
11
- const { validateCmsPublishMode } = require('../lib/validation');
12
- const { trackCommandUsage } = require('../lib/usageTracking');
13
- const { i18n } = require('../lib/lang');
14
- const { getUploadableFileList } = require('../lib/upload');
15
- const { logError, ApiErrorContext } = require('../lib/errorHandlers/index');
16
- const { EXIT_CODES } = require('../lib/enums/exitCodes');
17
- exports.command = 'watch [src] [dest]';
18
- exports.describe = i18n(`commands.watch.describe`);
19
- exports.handler = async (options) => {
20
- const { remove, initialUpload, disableInitial, notify, derivedAccountId } = options;
21
- if (!validateCmsPublishMode(options)) {
22
- process.exit(EXIT_CODES.ERROR);
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const watch_1 = require("@hubspot/local-dev-lib/cms/watch");
9
+ const path_2 = require("@hubspot/local-dev-lib/path");
10
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
11
+ const commonOpts_1 = require("../lib/commonOpts");
12
+ const uploadPrompt_1 = require("../lib/prompts/uploadPrompt");
13
+ const validation_1 = require("../lib/validation");
14
+ const usageTracking_1 = require("../lib/usageTracking");
15
+ const lang_1 = require("../lib/lang");
16
+ const upload_1 = require("../lib/upload");
17
+ const errorHandlers_1 = require("../lib/errorHandlers");
18
+ const exitCodes_1 = require("../lib/enums/exitCodes");
19
+ const yargsUtils_1 = require("../lib/yargsUtils");
20
+ const command = 'watch [src] [dest]';
21
+ const describe = (0, lang_1.i18n)(`commands.watch.describe`);
22
+ const handler = async (args) => {
23
+ const { remove, initialUpload, disableInitial, notify, derivedAccountId } = args;
24
+ if (!(0, validation_1.validateCmsPublishMode)(args)) {
25
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
23
26
  }
24
- const cmsPublishMode = getCmsPublishMode(options);
25
- const uploadPromptAnswers = await uploadPrompt(options);
26
- const src = options.src || uploadPromptAnswers.src;
27
- const dest = options.dest || uploadPromptAnswers.dest;
28
- const absoluteSrcPath = path.resolve(getCwd(), src);
27
+ const cmsPublishMode = (0, commonOpts_1.getCmsPublishMode)(args);
28
+ const uploadPromptAnswers = await (0, uploadPrompt_1.uploadPrompt)(args);
29
+ const src = args.src || uploadPromptAnswers.src;
30
+ const dest = args.dest || uploadPromptAnswers.dest;
31
+ const absoluteSrcPath = path_1.default.resolve((0, path_2.getCwd)(), src);
29
32
  try {
30
- const stats = fs.statSync(absoluteSrcPath);
33
+ const stats = fs_1.default.statSync(absoluteSrcPath);
31
34
  if (!stats.isDirectory()) {
32
- logger.log(i18n(`commands.watch.errors.invalidPath`, {
35
+ logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.invalidPath`, {
33
36
  path: src,
34
37
  }));
35
38
  return;
36
39
  }
37
40
  }
38
41
  catch (e) {
39
- logger.log(i18n(`commands.watch.errors.invalidPath`, {
42
+ logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.invalidPath`, {
40
43
  path: src,
41
44
  }));
42
45
  return;
43
46
  }
44
47
  if (!dest) {
45
- logger.log(i18n(`commands.watch.errors.destinationRequired`));
48
+ logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.destinationRequired`));
46
49
  return;
47
50
  }
48
51
  let filesToUpload = [];
49
52
  if (disableInitial) {
50
- logger.info(i18n(`commands.watch.warnings.disableInitial`));
53
+ logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.disableInitial`));
51
54
  }
52
55
  else if (!initialUpload) {
53
- logger.info(i18n(`commands.watch.warnings.notUploaded`, { path: src }));
54
- logger.info(i18n(`commands.watch.warnings.initialUpload`));
56
+ logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.notUploaded`, { path: src }));
57
+ logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.initialUpload`));
55
58
  }
56
59
  if (initialUpload) {
57
- filesToUpload = await getUploadableFileList(absoluteSrcPath, options.convertFields);
60
+ filesToUpload = await (0, upload_1.getUploadableFileList)(absoluteSrcPath, args.convertFields);
58
61
  }
59
- trackCommandUsage('watch', { mode: cmsPublishMode }, derivedAccountId);
60
- const postInitialUploadCallback = null;
61
- const onUploadFolderError = error => {
62
- logger.error(i18n(`commands.watch.errors.folderFailed`, {
62
+ (0, usageTracking_1.trackCommandUsage)('watch', { mode: cmsPublishMode }, derivedAccountId);
63
+ const onUploadFolderError = (error) => {
64
+ logger_1.logger.error((0, lang_1.i18n)(`commands.watch.errors.folderFailed`, {
63
65
  src,
64
66
  dest,
65
67
  accountId: derivedAccountId,
66
68
  }));
67
- logError(error, {
69
+ (0, errorHandlers_1.logError)(error, {
68
70
  accountId: derivedAccountId,
69
71
  });
70
72
  };
71
- const onQueueAddError = null;
72
- const onUploadFileError = (file, dest, derivedAccountId) => error => {
73
- logger.error(i18n(`commands.watch.errors.fileFailed`, {
73
+ const onUploadFileError = (file, destPath, accountId) => (error) => {
74
+ logger_1.logger.error((0, lang_1.i18n)(`commands.watch.errors.fileFailed`, {
74
75
  file,
75
- dest,
76
- accountId: derivedAccountId,
76
+ dest: destPath,
77
+ accountId,
77
78
  }));
78
- logError(error, new ApiErrorContext({
79
- accountId: derivedAccountId,
80
- request: dest,
79
+ (0, errorHandlers_1.logError)(error, new errorHandlers_1.ApiErrorContext({
80
+ accountId,
81
+ request: destPath,
81
82
  payload: file,
82
83
  }));
83
84
  };
84
- watch(derivedAccountId, absoluteSrcPath, dest, {
85
+ (0, watch_1.watch)(derivedAccountId, absoluteSrcPath, dest, {
85
86
  cmsPublishMode,
86
87
  remove,
87
- disableInitial: initialUpload ? false : true,
88
+ disableInitial: !initialUpload,
88
89
  notify,
89
- commandOptions: options,
90
+ commandOptions: args,
90
91
  filePaths: filesToUpload,
91
- }, postInitialUploadCallback, onUploadFolderError, onQueueAddError, onUploadFileError);
92
+ }, null, onUploadFolderError, undefined, onUploadFileError);
92
93
  };
93
- exports.builder = yargs => {
94
+ function watchBuilder(yargs) {
94
95
  yargs.positional('src', {
95
- describe: i18n(`commands.watch.positionals.src.describe`),
96
+ describe: (0, lang_1.i18n)(`commands.watch.positionals.src.describe`),
96
97
  type: 'string',
97
98
  });
98
99
  yargs.positional('dest', {
99
- describe: i18n(`commands.watch.positionals.dest.describe`),
100
+ describe: (0, lang_1.i18n)(`commands.watch.positionals.dest.describe`),
100
101
  type: 'string',
101
102
  });
102
103
  yargs.option('fieldOptions', {
103
- describe: i18n(`commands.watch.options.options.describe`),
104
+ describe: (0, lang_1.i18n)(`commands.watch.options.options.describe`),
104
105
  type: 'array',
105
106
  default: [''],
106
107
  hidden: true,
107
108
  });
108
109
  yargs.option('remove', {
109
110
  alias: 'r',
110
- describe: i18n(`commands.watch.options.remove.describe`),
111
+ describe: (0, lang_1.i18n)(`commands.watch.options.remove.describe`),
111
112
  type: 'boolean',
112
113
  });
113
114
  yargs.option('initial-upload', {
114
115
  alias: 'i',
115
- describe: i18n(`commands.watch.options.initialUpload.describe`),
116
+ describe: (0, lang_1.i18n)(`commands.watch.options.initialUpload.describe`),
116
117
  type: 'boolean',
117
118
  });
118
119
  yargs.option('disable-initial', {
119
- describe: i18n(`commands.watch.options.disableInitial.describe`),
120
+ describe: (0, lang_1.i18n)(`commands.watch.options.disableInitial.describe`),
120
121
  type: 'boolean',
121
122
  hidden: true,
122
123
  });
123
124
  yargs.option('notify', {
124
125
  alias: 'n',
125
- describe: i18n(`commands.watch.options.notify.describe`),
126
+ describe: (0, lang_1.i18n)(`commands.watch.options.notify.describe`),
126
127
  type: 'string',
127
128
  requiresArg: true,
128
129
  });
129
130
  yargs.option('convertFields', {
130
- describe: i18n(`commands.watch.options.convertFields.describe`),
131
+ describe: (0, lang_1.i18n)(`commands.watch.options.convertFields.describe`),
131
132
  type: 'boolean',
132
133
  default: false,
133
134
  });
134
135
  yargs.option('saveOutput', {
135
- describe: i18n(`commands.watch.options.saveOutput.describe`),
136
+ describe: (0, lang_1.i18n)(`commands.watch.options.saveOutput.describe`),
136
137
  type: 'boolean',
137
138
  default: false,
138
139
  });
139
- addConfigOptions(yargs);
140
- addAccountOptions(yargs);
141
- addCmsPublishModeOptions(yargs, { write: true });
142
- addUseEnvironmentOptions(yargs);
143
- addGlobalOptions(yargs);
144
140
  return yargs;
141
+ }
142
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(watchBuilder, command, describe, {
143
+ useConfigOptions: true,
144
+ useAccountOptions: true,
145
+ useGlobalOptions: true,
146
+ useEnvironmentOptions: true,
147
+ useCmsPublishModeOptions: { write: true },
148
+ });
149
+ const watchCommand = {
150
+ command,
151
+ describe,
152
+ handler,
153
+ builder,
145
154
  };
155
+ exports.default = watchCommand;
156
+ module.exports = watchCommand;