@hubspot/cli 6.2.0 → 6.2.2-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 (347) hide show
  1. package/bin/cli.d.ts +2 -0
  2. package/bin/cli.js +107 -128
  3. package/commands/accounts/clean.d.ts +4 -0
  4. package/commands/accounts/clean.js +80 -116
  5. package/commands/accounts/info.d.ts +4 -0
  6. package/commands/accounts/info.js +30 -43
  7. package/commands/accounts/list.d.ts +4 -0
  8. package/commands/accounts/list.js +63 -92
  9. package/commands/accounts/remove.d.ts +4 -0
  10. package/commands/accounts/remove.js +41 -73
  11. package/commands/accounts/rename.d.ts +4 -0
  12. package/commands/accounts/rename.js +24 -41
  13. package/commands/accounts/use.d.ts +4 -0
  14. package/commands/accounts/use.js +34 -57
  15. package/commands/accounts.d.ts +3 -0
  16. package/commands/accounts.js +14 -18
  17. package/commands/auth.d.ts +4 -0
  18. package/commands/auth.js +131 -200
  19. package/commands/cms/convertFields.d.ts +4 -0
  20. package/commands/cms/convertFields.js +64 -81
  21. package/commands/cms/lighthouseScore.d.ts +4 -0
  22. package/commands/cms/lighthouseScore.js +234 -298
  23. package/commands/cms/reactModules.d.ts +4 -0
  24. package/commands/cms/reactModules.js +44 -53
  25. package/commands/cms.d.ts +3 -0
  26. package/commands/cms.js +9 -13
  27. package/commands/config/set/allowUsageTracking.d.ts +4 -0
  28. package/commands/config/set/allowUsageTracking.js +31 -38
  29. package/commands/config/set/defaultMode.d.ts +4 -0
  30. package/commands/config/set/defaultMode.js +32 -43
  31. package/commands/config/set/httpTimeout.d.ts +4 -0
  32. package/commands/config/set/httpTimeout.js +21 -30
  33. package/commands/config/set.d.ts +4 -0
  34. package/commands/config/set.js +61 -76
  35. package/commands/config.d.ts +3 -0
  36. package/commands/config.js +5 -9
  37. package/commands/create/api-sample.d.ts +13 -0
  38. package/commands/create/api-sample.js +52 -74
  39. package/commands/create/app.d.ts +10 -0
  40. package/commands/create/app.js +6 -7
  41. package/commands/create/function.d.ts +6 -0
  42. package/commands/create/function.js +13 -14
  43. package/commands/create/index.d.ts +109 -0
  44. package/commands/create/index.js +10 -9
  45. package/commands/create/module.d.ts +11 -0
  46. package/commands/create/module.js +19 -19
  47. package/commands/create/react-app.d.ts +9 -0
  48. package/commands/create/react-app.js +5 -6
  49. package/commands/create/template.d.ts +12 -0
  50. package/commands/create/template.js +21 -24
  51. package/commands/create/vue-app.d.ts +9 -0
  52. package/commands/create/vue-app.js +5 -6
  53. package/commands/create/webpack-serverless.d.ts +9 -0
  54. package/commands/create/webpack-serverless.js +5 -6
  55. package/commands/create/website-theme.d.ts +9 -0
  56. package/commands/create/website-theme.js +13 -15
  57. package/commands/create.d.ts +4 -0
  58. package/commands/create.js +62 -80
  59. package/commands/customObject/create.d.ts +4 -0
  60. package/commands/customObject/create.js +31 -47
  61. package/commands/customObject/schema/create.d.ts +4 -0
  62. package/commands/customObject/schema/create.js +40 -67
  63. package/commands/customObject/schema/delete.d.ts +4 -0
  64. package/commands/customObject/schema/delete.js +26 -39
  65. package/commands/customObject/schema/fetch-all.d.ts +4 -0
  66. package/commands/customObject/schema/fetch-all.js +28 -39
  67. package/commands/customObject/schema/fetch.d.ts +4 -0
  68. package/commands/customObject/schema/fetch.js +46 -63
  69. package/commands/customObject/schema/list.d.ts +3 -0
  70. package/commands/customObject/schema/list.js +12 -17
  71. package/commands/customObject/schema/update.d.ts +4 -0
  72. package/commands/customObject/schema/update.js +44 -72
  73. package/commands/customObject/schema.d.ts +3 -0
  74. package/commands/customObject/schema.js +10 -12
  75. package/commands/customObject.d.ts +3 -0
  76. package/commands/customObject.js +12 -22
  77. package/commands/feedback.d.ts +4 -0
  78. package/commands/feedback.js +23 -33
  79. package/commands/fetch.d.ts +4 -0
  80. package/commands/fetch.js +51 -78
  81. package/commands/filemanager/fetch.d.ts +4 -0
  82. package/commands/filemanager/fetch.js +36 -56
  83. package/commands/filemanager/upload.d.ts +4 -0
  84. package/commands/filemanager/upload.js +86 -128
  85. package/commands/filemanager.d.ts +3 -0
  86. package/commands/filemanager.js +10 -18
  87. package/commands/functions/deploy.d.ts +4 -0
  88. package/commands/functions/deploy.js +74 -99
  89. package/commands/functions/list.d.ts +4 -0
  90. package/commands/functions/list.js +29 -47
  91. package/commands/functions/server.d.ts +4 -0
  92. package/commands/functions/server.js +48 -65
  93. package/commands/functions.d.ts +3 -0
  94. package/commands/functions.js +11 -15
  95. package/commands/hubdb/clear.d.ts +4 -0
  96. package/commands/hubdb/clear.js +35 -56
  97. package/commands/hubdb/create.d.ts +4 -0
  98. package/commands/hubdb/create.js +32 -57
  99. package/commands/hubdb/delete.d.ts +4 -0
  100. package/commands/hubdb/delete.js +27 -44
  101. package/commands/hubdb/fetch.d.ts +4 -0
  102. package/commands/hubdb/fetch.js +28 -46
  103. package/commands/hubdb.d.ts +3 -0
  104. package/commands/hubdb.js +10 -14
  105. package/commands/init.d.ts +4 -0
  106. package/commands/init.js +101 -160
  107. package/commands/lint.d.ts +4 -0
  108. package/commands/lint.js +32 -45
  109. package/commands/list.d.ts +4 -0
  110. package/commands/list.js +72 -101
  111. package/commands/logs.d.ts +4 -0
  112. package/commands/logs.js +96 -121
  113. package/commands/module/marketplace-validate.d.ts +4 -0
  114. package/commands/module/marketplace-validate.js +30 -57
  115. package/commands/module.d.ts +3 -0
  116. package/commands/module.js +5 -9
  117. package/commands/mv.d.ts +4 -0
  118. package/commands/mv.js +51 -71
  119. package/commands/open.d.ts +4 -0
  120. package/commands/open.js +46 -62
  121. package/commands/project/add.d.ts +4 -0
  122. package/commands/project/add.js +45 -70
  123. package/commands/project/cloneApp.d.ts +4 -0
  124. package/commands/project/cloneApp.js +117 -180
  125. package/commands/project/create.d.ts +4 -0
  126. package/commands/project/create.js +47 -81
  127. package/commands/project/deploy.d.ts +4 -0
  128. package/commands/project/deploy.js +103 -182
  129. package/commands/project/dev.d.ts +4 -0
  130. package/commands/project/dev.js +123 -227
  131. package/commands/project/download.d.ts +4 -0
  132. package/commands/project/download.js +71 -123
  133. package/commands/project/installDeps.d.ts +6 -0
  134. package/commands/project/installDeps.js +50 -59
  135. package/commands/project/listBuilds.d.ts +4 -0
  136. package/commands/project/listBuilds.js +95 -139
  137. package/commands/project/logs.d.ts +4 -0
  138. package/commands/project/logs.js +84 -128
  139. package/commands/project/migrateApp.d.ts +4 -0
  140. package/commands/project/migrateApp.js +156 -248
  141. package/commands/project/open.d.ts +4 -0
  142. package/commands/project/open.js +42 -68
  143. package/commands/project/upload.d.ts +4 -0
  144. package/commands/project/upload.js +70 -116
  145. package/commands/project/watch.d.ts +4 -0
  146. package/commands/project/watch.js +92 -152
  147. package/commands/project.d.ts +3 -0
  148. package/commands/project.js +19 -23
  149. package/commands/remove.d.ts +4 -0
  150. package/commands/remove.js +26 -43
  151. package/commands/sandbox/create.d.ts +4 -0
  152. package/commands/sandbox/create.js +141 -187
  153. package/commands/sandbox/delete.d.ts +4 -0
  154. package/commands/sandbox/delete.js +164 -221
  155. package/commands/sandbox.d.ts +3 -0
  156. package/commands/sandbox.js +8 -12
  157. package/commands/secrets/addSecret.d.ts +4 -0
  158. package/commands/secrets/addSecret.js +32 -52
  159. package/commands/secrets/deleteSecret.d.ts +4 -0
  160. package/commands/secrets/deleteSecret.js +31 -50
  161. package/commands/secrets/listSecrets.d.ts +4 -0
  162. package/commands/secrets/listSecrets.js +26 -42
  163. package/commands/secrets/updateSecret.d.ts +4 -0
  164. package/commands/secrets/updateSecret.js +33 -53
  165. package/commands/secrets.d.ts +3 -0
  166. package/commands/secrets.js +10 -13
  167. package/commands/theme/generate-selectors.d.ts +4 -0
  168. package/commands/theme/generate-selectors.js +127 -192
  169. package/commands/theme/marketplace-validate.d.ts +4 -0
  170. package/commands/theme/marketplace-validate.js +30 -57
  171. package/commands/theme/preview.d.ts +4 -0
  172. package/commands/theme/preview.js +161 -196
  173. package/commands/theme.d.ts +3 -0
  174. package/commands/theme.js +7 -11
  175. package/commands/upload.d.ts +4 -0
  176. package/commands/upload.js +197 -287
  177. package/commands/watch.d.ts +4 -0
  178. package/commands/watch.js +126 -172
  179. package/lang/en.lyaml +2 -3
  180. package/lib/DevServerManager.d.ts +35 -0
  181. package/lib/DevServerManager.js +97 -124
  182. package/lib/LocalDevManager.d.ts +41 -0
  183. package/lib/LocalDevManager.js +320 -490
  184. package/lib/accountTypes.d.ts +6 -0
  185. package/lib/accountTypes.js +16 -32
  186. package/lib/buildAccount.d.ts +22 -0
  187. package/lib/buildAccount.js +130 -179
  188. package/lib/commonOpts.d.ts +20 -0
  189. package/lib/commonOpts.js +58 -91
  190. package/lib/constants.d.ts +83 -0
  191. package/lib/constants.js +61 -71
  192. package/lib/debugInfo.d.ts +3 -0
  193. package/lib/debugInfo.js +12 -13
  194. package/lib/dependencyManagement.d.ts +7 -0
  195. package/lib/dependencyManagement.js +90 -132
  196. package/lib/developerTestAccounts.d.ts +7 -0
  197. package/lib/developerTestAccounts.js +65 -91
  198. package/lib/enums/exitCodes.d.ts +5 -0
  199. package/lib/enums/exitCodes.js +5 -7
  200. package/lib/environment.d.ts +1 -0
  201. package/lib/environment.js +10 -10
  202. package/lib/errorHandlers/index.d.ts +19 -0
  203. package/lib/errorHandlers/index.js +64 -80
  204. package/lib/errorHandlers/suppressError.d.ts +1 -0
  205. package/lib/errorHandlers/suppressError.js +64 -106
  206. package/lib/filesystem.d.ts +2 -0
  207. package/lib/filesystem.js +16 -24
  208. package/lib/generate-selectors.d.ts +6 -0
  209. package/lib/generate-selectors.js +99 -137
  210. package/lib/getFunctionArrays.d.ts +1 -0
  211. package/lib/getFunctionArrays.js +12 -13
  212. package/lib/hasFeature.d.ts +1 -0
  213. package/lib/hasFeature.js +5 -11
  214. package/lib/hasFlag.d.ts +2 -0
  215. package/lib/hasFlag.js +6 -10
  216. package/lib/hublValidate.d.ts +4 -0
  217. package/lib/hublValidate.js +20 -24
  218. package/lib/interpolation.d.ts +10 -0
  219. package/lib/interpolation.js +48 -92
  220. package/lib/interpolationHelpers.d.ts +6 -0
  221. package/lib/interpolationHelpers.js +19 -19
  222. package/lib/lang.d.ts +3 -0
  223. package/lib/lang.js +50 -78
  224. package/lib/links.d.ts +127 -0
  225. package/lib/links.js +92 -114
  226. package/lib/localDev.d.ts +11 -0
  227. package/lib/localDev.js +283 -433
  228. package/lib/marketplace-validate.d.ts +5 -0
  229. package/lib/marketplace-validate.js +103 -126
  230. package/lib/oauth.d.ts +1 -0
  231. package/lib/oauth.js +62 -78
  232. package/lib/polling.d.ts +1 -0
  233. package/lib/polling.js +24 -26
  234. package/lib/process.d.ts +2 -0
  235. package/lib/process.js +39 -53
  236. package/lib/projectLogsManager.d.ts +19 -0
  237. package/lib/projectLogsManager.js +76 -130
  238. package/lib/projectStructure.d.ts +13 -0
  239. package/lib/projectStructure.js +87 -109
  240. package/lib/projects.d.ts +40 -0
  241. package/lib/projects.js +589 -957
  242. package/lib/projectsWatch.d.ts +1 -0
  243. package/lib/projectsWatch.js +122 -228
  244. package/lib/prompts/accountNamePrompt.d.ts +11 -0
  245. package/lib/prompts/accountNamePrompt.js +58 -65
  246. package/lib/prompts/accountsPrompt.d.ts +3 -0
  247. package/lib/prompts/accountsPrompt.js +31 -37
  248. package/lib/prompts/activeInstallConfirmationPrompt.d.ts +1 -0
  249. package/lib/prompts/activeInstallConfirmationPrompt.js +11 -13
  250. package/lib/prompts/cleanUploadPrompt.d.ts +1 -0
  251. package/lib/prompts/cleanUploadPrompt.js +11 -13
  252. package/lib/prompts/cmsFieldPrompt.d.ts +1 -0
  253. package/lib/prompts/cmsFieldPrompt.js +35 -39
  254. package/lib/prompts/createApiSamplePrompt.d.ts +1 -0
  255. package/lib/prompts/createApiSamplePrompt.js +47 -52
  256. package/lib/prompts/createFunctionPrompt.d.ts +1 -0
  257. package/lib/prompts/createFunctionPrompt.js +55 -56
  258. package/lib/prompts/createModulePrompt.d.ts +1 -0
  259. package/lib/prompts/createModulePrompt.js +45 -50
  260. package/lib/prompts/createProjectPrompt.d.ts +1 -0
  261. package/lib/prompts/createProjectPrompt.js +88 -127
  262. package/lib/prompts/createTemplatePrompt.d.ts +1 -0
  263. package/lib/prompts/createTemplatePrompt.js +16 -19
  264. package/lib/prompts/deployBuildIdPrompt.d.ts +1 -0
  265. package/lib/prompts/deployBuildIdPrompt.js +13 -15
  266. package/lib/prompts/downloadProjectPrompt.d.ts +1 -0
  267. package/lib/prompts/downloadProjectPrompt.js +36 -40
  268. package/lib/prompts/feedbackPrompt.d.ts +2 -0
  269. package/lib/prompts/feedbackPrompt.js +27 -30
  270. package/lib/prompts/folderOverwritePrompt.d.ts +1 -0
  271. package/lib/prompts/folderOverwritePrompt.js +8 -10
  272. package/lib/prompts/installPublicAppPrompt.d.ts +1 -0
  273. package/lib/prompts/installPublicAppPrompt.js +27 -42
  274. package/lib/prompts/personalAccessKeyPrompt.d.ts +69 -0
  275. package/lib/prompts/personalAccessKeyPrompt.js +102 -110
  276. package/lib/prompts/previewPrompt.d.ts +2 -0
  277. package/lib/prompts/previewPrompt.js +44 -47
  278. package/lib/prompts/projectAddPrompt.d.ts +1 -0
  279. package/lib/prompts/projectAddPrompt.js +35 -38
  280. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +4 -0
  281. package/lib/prompts/projectDevTargetAccountPrompt.js +148 -193
  282. package/lib/prompts/projectNamePrompt.d.ts +1 -0
  283. package/lib/prompts/projectNamePrompt.js +23 -25
  284. package/lib/prompts/projectsLogsPrompt.d.ts +5 -0
  285. package/lib/prompts/projectsLogsPrompt.js +19 -27
  286. package/lib/prompts/promptUtils.d.ts +2 -0
  287. package/lib/prompts/promptUtils.js +15 -17
  288. package/lib/prompts/sandboxesPrompt.d.ts +2 -0
  289. package/lib/prompts/sandboxesPrompt.js +48 -59
  290. package/lib/prompts/secretPrompt.d.ts +1 -0
  291. package/lib/prompts/secretPrompt.js +13 -16
  292. package/lib/prompts/selectPublicAppPrompt.d.ts +5 -0
  293. package/lib/prompts/selectPublicAppPrompt.js +55 -81
  294. package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -0
  295. package/lib/prompts/setAsDefaultAccountPrompt.js +17 -24
  296. package/lib/prompts/uploadPrompt.d.ts +1 -0
  297. package/lib/prompts/uploadPrompt.js +28 -30
  298. package/lib/regex.d.ts +1 -0
  299. package/lib/regex.js +2 -2
  300. package/lib/sandboxSync.d.ts +8 -0
  301. package/lib/sandboxSync.js +98 -166
  302. package/lib/sandboxes.d.ts +40 -0
  303. package/lib/sandboxes.js +199 -316
  304. package/lib/schema.d.ts +2 -0
  305. package/lib/schema.js +20 -26
  306. package/lib/serverlessLogs.d.ts +8 -0
  307. package/lib/serverlessLogs.js +128 -172
  308. package/lib/ui/SpinniesManager.d.ts +61 -0
  309. package/lib/ui/SpinniesManager.js +196 -254
  310. package/lib/ui/git.d.ts +1 -0
  311. package/lib/ui/git.js +18 -19
  312. package/lib/ui/index.d.ts +36 -0
  313. package/lib/ui/index.js +115 -167
  314. package/lib/ui/serverlessFunctionLogs.d.ts +1 -0
  315. package/lib/ui/serverlessFunctionLogs.js +51 -70
  316. package/lib/ui/spinniesUtils.d.ts +60 -0
  317. package/lib/ui/spinniesUtils.js +109 -133
  318. package/lib/ui/supportHyperlinks.d.ts +3 -0
  319. package/lib/ui/supportHyperlinks.js +46 -61
  320. package/lib/ui/supportsColor.d.ts +13 -0
  321. package/lib/ui/supportsColor.js +78 -108
  322. package/lib/ui/table.d.ts +2 -0
  323. package/lib/ui/table.js +47 -55
  324. package/lib/upload.d.ts +1 -0
  325. package/lib/upload.js +37 -42
  326. package/lib/usageTracking.d.ts +6 -0
  327. package/lib/usageTracking.js +131 -155
  328. package/lib/validation.d.ts +16 -0
  329. package/lib/validation.js +142 -203
  330. package/package.json +78 -48
  331. package/CHANGELOG.md +0 -16
  332. package/LICENSE +0 -12
  333. package/README.md +0 -154
  334. package/commands/__tests__/projects.test.js +0 -105
  335. package/commands/project/__tests__/deploy.test.js +0 -443
  336. package/commands/project/__tests__/installDeps.test.js +0 -168
  337. package/commands/project/__tests__/logs.test.js +0 -304
  338. package/hubspot.sample.config.yml +0 -28
  339. package/jest.config.js +0 -4
  340. package/lib/__tests__/commonOpts.test.js +0 -83
  341. package/lib/__tests__/dependencyManagement.test.js +0 -243
  342. package/lib/__tests__/downloadProjectPrompt.test.js +0 -31
  343. package/lib/__tests__/projectLogsManager.test.js +0 -212
  344. package/lib/__tests__/projects.test.js +0 -140
  345. package/lib/__tests__/serverlessLogs.test.js +0 -162
  346. package/lib/__tests__/validation.test.js +0 -140
  347. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -46
@@ -1,161 +1,123 @@
1
+ "use strict";
1
2
  const fs = require('fs');
2
3
  const { EXIT_CODES } = require('./enums/exitCodes');
3
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
4
5
  const { i18n } = require('../lib/lang');
5
-
6
6
  const CSS_COMMENTS_REGEX = new RegExp(/\/\*.*\*\//, 'g');
7
- const CSS_PSEUDO_CLASS_REGEX = new RegExp(
8
- /:active|:checked|:disabled|:empty|:enabled|:first-of-type|:focus|:hover|:in-range|:invalid|:link|:optional|:out-of-range|:read-only|:read-write|:required|:target|:valid|:visited/,
9
- 'g'
10
- );
7
+ const CSS_PSEUDO_CLASS_REGEX = new RegExp(/:active|:checked|:disabled|:empty|:enabled|:first-of-type|:focus|:hover|:in-range|:invalid|:link|:optional|:out-of-range|:read-only|:read-write|:required|:target|:valid|:visited/, 'g');
11
8
  const i18nKey = 'commands.theme.subcommands.generateSelectors';
12
-
13
9
  let maxFieldsDepth = 0;
14
-
15
10
  function getMaxFieldsDepth() {
16
- return maxFieldsDepth;
11
+ return maxFieldsDepth;
17
12
  }
18
-
19
13
  function findFieldsJsonPath(basePath) {
20
- const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
21
- if (!fs.existsSync(_path)) {
22
- logger.error(
23
- i18n(`${i18nKey}.errors.invalidPath`, {
24
- themePath: basePath,
25
- })
26
- );
27
- process.exit(EXIT_CODES.ERROR);
28
- }
29
- const files = fs.readdirSync(_path);
30
-
31
- if (files.includes('fields.json')) {
32
- return `${_path}/fields.json`;
33
- }
34
-
35
- for (let i = 0; i < files.length; i++) {
36
- const fileName = files[i];
37
- const isDirectory = fs.lstatSync(`${_path}/${fileName}`).isDirectory();
38
-
39
- if (isDirectory && !fileName.includes('.module')) {
40
- const fieldsJsonPath = findFieldsJsonPath(`${_path}/${fileName}`);
41
- if (fieldsJsonPath) return fieldsJsonPath;
14
+ const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
15
+ if (!fs.existsSync(_path)) {
16
+ logger.error(i18n(`${i18nKey}.errors.invalidPath`, {
17
+ themePath: basePath,
18
+ }));
19
+ process.exit(EXIT_CODES.ERROR);
42
20
  }
43
- }
44
-
45
- return null;
21
+ const files = fs.readdirSync(_path);
22
+ if (files.includes('fields.json')) {
23
+ return `${_path}/fields.json`;
24
+ }
25
+ for (let i = 0; i < files.length; i++) {
26
+ const fileName = files[i];
27
+ const isDirectory = fs.lstatSync(`${_path}/${fileName}`).isDirectory();
28
+ if (isDirectory && !fileName.includes('.module')) {
29
+ const fieldsJsonPath = findFieldsJsonPath(`${_path}/${fileName}`);
30
+ if (fieldsJsonPath)
31
+ return fieldsJsonPath;
32
+ }
33
+ }
34
+ return null;
46
35
  }
47
-
48
36
  function combineThemeCss(basePath, cssString = '') {
49
- const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
50
- const isDirectory = fs.lstatSync(_path).isDirectory();
51
-
52
- if (isDirectory) {
53
- const filesList = fs.readdirSync(_path);
54
- return filesList.reduce((css, fileName) => {
55
- const newCss = combineThemeCss(`${_path}/${fileName}`);
56
- return newCss ? `${css}\n${newCss}` : css;
57
- }, cssString);
58
- } else if (_path.includes('.css') && !_path.includes('.module')) {
59
- return `${cssString}\n${fs.readFileSync(_path, 'utf8')}`;
60
- }
61
-
62
- return null;
37
+ const _path = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
38
+ const isDirectory = fs.lstatSync(_path).isDirectory();
39
+ if (isDirectory) {
40
+ const filesList = fs.readdirSync(_path);
41
+ return filesList.reduce((css, fileName) => {
42
+ const newCss = combineThemeCss(`${_path}/${fileName}`);
43
+ return newCss ? `${css}\n${newCss}` : css;
44
+ }, cssString);
45
+ }
46
+ else if (_path.includes('.css') && !_path.includes('.module')) {
47
+ return `${cssString}\n${fs.readFileSync(_path, 'utf8')}`;
48
+ }
49
+ return null;
63
50
  }
64
-
65
51
  function setPreviewSelectors(fields, fieldPath, selectors, depth = 0) {
66
- fields.forEach((field, index) => {
67
- if (field.name === fieldPath[0]) {
68
- if (field.children && fieldPath.length > 0) {
69
- fields[index].children = setPreviewSelectors(
70
- fields[index].children,
71
- fieldPath.splice(1),
72
- selectors,
73
- (depth += 1)
74
- );
75
- } else {
76
- if (!field.selectors) field.selectors = [];
77
-
78
- if (depth > maxFieldsDepth) {
79
- maxFieldsDepth = depth;
52
+ fields.forEach((field, index) => {
53
+ if (field.name === fieldPath[0]) {
54
+ if (field.children && fieldPath.length > 0) {
55
+ fields[index].children = setPreviewSelectors(fields[index].children, fieldPath.splice(1), selectors, (depth += 1));
56
+ }
57
+ else {
58
+ if (!field.selectors)
59
+ field.selectors = [];
60
+ if (depth > maxFieldsDepth) {
61
+ maxFieldsDepth = depth;
62
+ }
63
+ selectors.forEach(selector => {
64
+ const fieldSelectors = field.selectors;
65
+ selector = selector.replace(CSS_COMMENTS_REGEX, '');
66
+ selector = selector.replace(CSS_PSEUDO_CLASS_REGEX, '').trim();
67
+ if (!fieldSelectors.includes(selector) &&
68
+ !selector.includes('@media')) {
69
+ field.selectors = fieldSelectors.concat(selector);
70
+ }
71
+ });
72
+ }
80
73
  }
81
-
82
- selectors.forEach(selector => {
83
- const fieldSelectors = field.selectors;
84
- selector = selector.replace(CSS_COMMENTS_REGEX, '');
85
- selector = selector.replace(CSS_PSEUDO_CLASS_REGEX, '').trim();
86
-
87
- if (
88
- !fieldSelectors.includes(selector) &&
89
- !selector.includes('@media')
90
- ) {
91
- field.selectors = fieldSelectors.concat(selector);
92
- }
93
- });
94
- }
95
- }
96
- });
97
-
98
- return fields;
74
+ });
75
+ return fields;
99
76
  }
100
-
101
77
  function generateInheritedSelectors(fields) {
102
- let finalFieldsJson = [...fields];
103
-
104
- const _generateInheritedSelectors = fieldsToCheck => {
105
- fieldsToCheck.forEach(field => {
106
- if (field.children) {
107
- _generateInheritedSelectors(field.children);
108
- }
109
-
110
- const fieldInheritance =
111
- field.inherited_value && field.inherited_value.property_value_paths;
112
- const fieldSelectors = field.selectors;
113
-
114
- if (fieldSelectors && fieldInheritance) {
115
- Object.values(fieldInheritance).forEach(path => {
116
- const fieldPath = path.split('.');
117
- if (fieldPath[0] === 'theme') {
118
- finalFieldsJson = setPreviewSelectors(
119
- finalFieldsJson,
120
- fieldPath.splice(1),
121
- fieldSelectors
122
- );
123
- }
78
+ let finalFieldsJson = [...fields];
79
+ const _generateInheritedSelectors = fieldsToCheck => {
80
+ fieldsToCheck.forEach(field => {
81
+ if (field.children) {
82
+ _generateInheritedSelectors(field.children);
83
+ }
84
+ const fieldInheritance = field.inherited_value && field.inherited_value.property_value_paths;
85
+ const fieldSelectors = field.selectors;
86
+ if (fieldSelectors && fieldInheritance) {
87
+ Object.values(fieldInheritance).forEach(path => {
88
+ const fieldPath = path.split('.');
89
+ if (fieldPath[0] === 'theme') {
90
+ finalFieldsJson = setPreviewSelectors(finalFieldsJson, fieldPath.splice(1), fieldSelectors);
91
+ }
92
+ });
93
+ }
124
94
  });
125
- }
126
- });
127
- };
128
-
129
- _generateInheritedSelectors(fields);
130
-
131
- return finalFieldsJson;
95
+ };
96
+ _generateInheritedSelectors(fields);
97
+ return finalFieldsJson;
132
98
  }
133
-
134
99
  function generateSelectorsMap(fields, fieldKey = []) {
135
- let selectorsMap = {};
136
-
137
- fields.forEach(field => {
138
- const { children, name, selectors } = field;
139
- const _fieldKey = [...fieldKey, name];
140
-
141
- if (field.children) {
142
- selectorsMap = {
143
- ...selectorsMap,
144
- ...generateSelectorsMap(children, _fieldKey),
145
- };
146
- } else {
147
- selectorsMap[_fieldKey.join('.')] = selectors;
148
- }
149
- });
150
-
151
- return selectorsMap;
100
+ let selectorsMap = {};
101
+ fields.forEach(field => {
102
+ const { children, name, selectors } = field;
103
+ const _fieldKey = [...fieldKey, name];
104
+ if (field.children) {
105
+ selectorsMap = {
106
+ ...selectorsMap,
107
+ ...generateSelectorsMap(children, _fieldKey),
108
+ };
109
+ }
110
+ else {
111
+ selectorsMap[_fieldKey.join('.')] = selectors;
112
+ }
113
+ });
114
+ return selectorsMap;
152
115
  }
153
-
154
116
  module.exports = {
155
- findFieldsJsonPath,
156
- combineThemeCss,
157
- setPreviewSelectors,
158
- generateInheritedSelectors,
159
- generateSelectorsMap,
160
- getMaxFieldsDepth,
117
+ findFieldsJsonPath,
118
+ combineThemeCss,
119
+ setPreviewSelectors,
120
+ generateInheritedSelectors,
121
+ generateSelectorsMap,
122
+ getMaxFieldsDepth,
161
123
  };
@@ -0,0 +1 @@
1
+ export function getFunctionArrays(resp: any): any;
@@ -1,18 +1,17 @@
1
+ "use strict";
1
2
  const moment = require('moment');
2
-
3
3
  const getFunctionArrays = resp => {
4
- return resp.objects.map(func => {
5
- const { route, method, created, updated, secretNames } = func;
6
- return [
7
- route,
8
- method,
9
- secretNames.join(', '),
10
- moment(created).format(),
11
- moment(updated).format(),
12
- ];
13
- });
4
+ return resp.objects.map(func => {
5
+ const { route, method, created, updated, secretNames } = func;
6
+ return [
7
+ route,
8
+ method,
9
+ secretNames.join(', '),
10
+ moment(created).format(),
11
+ moment(updated).format(),
12
+ ];
13
+ });
14
14
  };
15
-
16
15
  module.exports = {
17
- getFunctionArrays,
16
+ getFunctionArrays,
18
17
  };
@@ -0,0 +1 @@
1
+ export function hasFeature(accountId: any, feature: any): Promise<boolean>;
package/lib/hasFeature.js CHANGED
@@ -1,15 +1,9 @@
1
- const {
2
- fetchEnabledFeatures,
3
- } = require('@hubspot/local-dev-lib/api/localDevAuth');
4
-
1
+ "use strict";
2
+ const { fetchEnabledFeatures, } = require('@hubspot/local-dev-lib/api/localDevAuth');
5
3
  const hasFeature = async (accountId, feature) => {
6
- const {
7
- data: { enabledFeatures },
8
- } = await fetchEnabledFeatures(accountId);
9
-
10
- return enabledFeatures[feature];
4
+ const { data: { enabledFeatures }, } = await fetchEnabledFeatures(accountId);
5
+ return enabledFeatures[feature];
11
6
  };
12
-
13
7
  module.exports = {
14
- hasFeature,
8
+ hasFeature,
15
9
  };
@@ -0,0 +1,2 @@
1
+ export = hasFlag;
2
+ declare function hasFlag(flag: any, argv?: string[]): boolean;
package/lib/hasFlag.js CHANGED
@@ -1,15 +1,11 @@
1
+ "use strict";
1
2
  const process = require('process');
2
-
3
3
  // See https://github.com/sindresorhus/has-flag/blob/main/index.js (License: https://github.com/sindresorhus/has-flag/blob/main/license)
4
-
5
4
  function hasFlag(flag, argv = process.argv) {
6
- const prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
7
- const position = argv.indexOf(prefix + flag);
8
- const terminatorPosition = argv.indexOf('--');
9
- return (
10
- position !== -1 &&
11
- (terminatorPosition === -1 || position < terminatorPosition)
12
- );
5
+ const prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
6
+ const position = argv.indexOf(prefix + flag);
7
+ const terminatorPosition = argv.indexOf('--');
8
+ return (position !== -1 &&
9
+ (terminatorPosition === -1 || position < terminatorPosition));
13
10
  }
14
-
15
11
  module.exports = hasFlag;
@@ -0,0 +1,4 @@
1
+ export function printHublValidationResult({ file, validation }: {
2
+ file: any;
3
+ validation: any;
4
+ }): number;
@@ -1,32 +1,28 @@
1
+ "use strict";
1
2
  const { logger } = require('@hubspot/local-dev-lib/logger');
2
-
3
- const getErrorsFromHublValidationObject = validation =>
4
- (validation && validation.meta && validation.meta.template_errors) || [];
5
-
3
+ const getErrorsFromHublValidationObject = validation => (validation && validation.meta && validation.meta.template_errors) || [];
6
4
  function printHublValidationError(err) {
7
- const { severity, message, lineno, startPosition } = err;
8
- const method = severity === 'FATAL' ? 'error' : 'warn';
9
- logger[method]('[%d, %d]: %s', lineno, startPosition, message);
5
+ const { severity, message, lineno, startPosition } = err;
6
+ const method = severity === 'FATAL' ? 'error' : 'warn';
7
+ logger[method]('[%d, %d]: %s', lineno, startPosition, message);
10
8
  }
11
-
12
9
  function printHublValidationResult({ file, validation }) {
13
- let count = 0;
14
- const errors = getErrorsFromHublValidationObject(validation);
15
- if (!errors.length) {
16
- return count;
17
- }
18
- logger.group(file);
19
- errors.forEach(err => {
20
- if (err.reason !== 'SYNTAX_ERROR') {
21
- return;
10
+ let count = 0;
11
+ const errors = getErrorsFromHublValidationObject(validation);
12
+ if (!errors.length) {
13
+ return count;
22
14
  }
23
- ++count;
24
- printHublValidationError(err);
25
- });
26
- logger.groupEnd(file);
27
- return count;
15
+ logger.group(file);
16
+ errors.forEach(err => {
17
+ if (err.reason !== 'SYNTAX_ERROR') {
18
+ return;
19
+ }
20
+ ++count;
21
+ printHublValidationError(err);
22
+ });
23
+ logger.groupEnd(file);
24
+ return count;
28
25
  }
29
-
30
26
  module.exports = {
31
- printHublValidationResult,
27
+ printHublValidationResult,
32
28
  };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Interpolate a string with data and compile helpers on the string
3
+ * @param {string} stringValue - The string to interpolate
4
+ * @param {object} interpolationData - The data to interpolate with
5
+ * @returns {string} - The interpolated and helper-compiled string
6
+ * @example
7
+ * interpolateAndCompile('Some {{#bold}}{{text}}{{/bold}} text', { text: 'awesomely bold' })
8
+ * // 'Some awsomely bold text' (with the words 'awesomely bold' in bold)
9
+ */
10
+ export function interpolate(stringValue: string, interpolationData: object): string;
@@ -1,31 +1,24 @@
1
+ "use strict";
1
2
  const helpers = require('./interpolationHelpers');
2
3
  const delimiters = {
3
- interpolation: {
4
- start: '{{',
5
- end: '}}',
6
- },
7
- helpers: {
8
- start: '#',
9
- end: '/',
10
- },
4
+ interpolation: {
5
+ start: '{{',
6
+ end: '}}',
7
+ },
8
+ helpers: {
9
+ start: '#',
10
+ end: '/',
11
+ },
11
12
  };
12
-
13
13
  const isHelperIdentifier = identifier => {
14
- return (
15
- identifier.startsWith(delimiters.helpers.start) ||
16
- identifier.startsWith(delimiters.helpers.end)
17
- );
14
+ return (identifier.startsWith(delimiters.helpers.start) ||
15
+ identifier.startsWith(delimiters.helpers.end));
18
16
  };
19
-
20
17
  const generateReplaceFn = (matchedText, startIndex, replacementString) => {
21
- return currentStringValue =>
22
- `${currentStringValue.slice(0, startIndex)}${
23
- replacementString !== null && replacementString !== undefined
18
+ return currentStringValue => `${currentStringValue.slice(0, startIndex)}${replacementString !== null && replacementString !== undefined
24
19
  ? replacementString
25
- : ''
26
- }${currentStringValue.slice(startIndex + matchedText.length)}`;
20
+ : ''}${currentStringValue.slice(startIndex + matchedText.length)}`;
27
21
  };
28
-
29
22
  /**
30
23
  * Interpolate a string with data
31
24
  * @param {string} stringValue - The string to interpolate
@@ -36,34 +29,21 @@ const generateReplaceFn = (matchedText, startIndex, replacementString) => {
36
29
  * // 'Hello World'
37
30
  */
38
31
  const interpolation = (stringValue, interpolationData) => {
39
- const interpolationIdentifierRegEx = new RegExp(
40
- `${delimiters.interpolation.start}(.*?)${delimiters.interpolation.end}`,
41
- 'g'
42
- );
43
- const replaceQueue = [];
44
- let match;
45
-
46
- // while & reduce necessary because RegExp.exec is stateful and only runs
47
- // from beginning to end of string
48
- while ((match = interpolationIdentifierRegEx.exec(stringValue)) != null) {
49
- const { 0: matchedText, 1: rawIdentifier, index } = match;
50
- const identifier = rawIdentifier.trim();
51
-
52
- if (identifier && !isHelperIdentifier(identifier)) {
53
- replaceQueue.unshift(
54
- generateReplaceFn(matchedText, index, interpolationData[identifier])
55
- );
32
+ const interpolationIdentifierRegEx = new RegExp(`${delimiters.interpolation.start}(.*?)${delimiters.interpolation.end}`, 'g');
33
+ const replaceQueue = [];
34
+ let match;
35
+ // while & reduce necessary because RegExp.exec is stateful and only runs
36
+ // from beginning to end of string
37
+ while ((match = interpolationIdentifierRegEx.exec(stringValue)) != null) {
38
+ const { 0: matchedText, 1: rawIdentifier, index } = match;
39
+ const identifier = rawIdentifier.trim();
40
+ if (identifier && !isHelperIdentifier(identifier)) {
41
+ replaceQueue.unshift(generateReplaceFn(matchedText, index, interpolationData[identifier]));
42
+ }
56
43
  }
57
- }
58
-
59
- const compiledString = replaceQueue.reduce(
60
- (currentValue, replaceFn) => replaceFn(currentValue),
61
- stringValue
62
- );
63
-
64
- return compiledString;
44
+ const compiledString = replaceQueue.reduce((currentValue, replaceFn) => replaceFn(currentValue), stringValue);
45
+ return compiledString;
65
46
  };
66
-
67
47
  /**
68
48
  * Compile a string using a specified helper function
69
49
  * @param {string} stringValue - The string to modify
@@ -75,51 +55,28 @@ const interpolation = (stringValue, interpolationData) => {
75
55
  * // 'White yellow' (with 'yellow' colored yellow)
76
56
  */
77
57
  const compileHelper = (stringValue, helperIdentifier, helperFn) => {
78
- const helperIdentifierRegEx = new RegExp(
79
- `${delimiters.interpolation.start}(${delimiters.helpers.start}${helperIdentifier})${delimiters.interpolation.end}(.*?)${delimiters.interpolation.start}(${delimiters.helpers.end}${helperIdentifier})${delimiters.interpolation.end}`,
80
- 'g'
81
- );
82
- const replaceQueue = [];
83
- let match;
84
-
85
- // while & reduce necessary because RegExp.exec is stateful and only runs
86
- // from beginning to end of string
87
- while ((match = helperIdentifierRegEx.exec(stringValue)) != null) {
88
- const {
89
- 0: matchedText,
90
- 1: rawHelperIdentifierStart,
91
- 2: innerText,
92
- index,
93
- } = match;
94
- const identifier = rawHelperIdentifierStart
95
- .replace(delimiters.helpers.start, '')
96
- .trim();
97
-
98
- if (identifier && helperFn) {
99
- replaceQueue.unshift(
100
- generateReplaceFn(matchedText, index, helperFn(innerText))
101
- );
58
+ const helperIdentifierRegEx = new RegExp(`${delimiters.interpolation.start}(${delimiters.helpers.start}${helperIdentifier})${delimiters.interpolation.end}(.*?)${delimiters.interpolation.start}(${delimiters.helpers.end}${helperIdentifier})${delimiters.interpolation.end}`, 'g');
59
+ const replaceQueue = [];
60
+ let match;
61
+ // while & reduce necessary because RegExp.exec is stateful and only runs
62
+ // from beginning to end of string
63
+ while ((match = helperIdentifierRegEx.exec(stringValue)) != null) {
64
+ const { 0: matchedText, 1: rawHelperIdentifierStart, 2: innerText, index, } = match;
65
+ const identifier = rawHelperIdentifierStart
66
+ .replace(delimiters.helpers.start, '')
67
+ .trim();
68
+ if (identifier && helperFn) {
69
+ replaceQueue.unshift(generateReplaceFn(matchedText, index, helperFn(innerText)));
70
+ }
102
71
  }
103
- }
104
-
105
- const compiledString = replaceQueue.reduce(
106
- (currentValue, replaceFn) => replaceFn(currentValue),
107
- stringValue
108
- );
109
-
110
- return compiledString;
72
+ const compiledString = replaceQueue.reduce((currentValue, replaceFn) => replaceFn(currentValue), stringValue);
73
+ return compiledString;
111
74
  };
112
-
113
75
  const compileHelpers = stringValue => {
114
- return Object.keys(helpers).reduce((currentStringValue, helperIdentifier) => {
115
- return compileHelper(
116
- currentStringValue,
117
- helperIdentifier,
118
- helpers[helperIdentifier]
119
- );
120
- }, stringValue);
76
+ return Object.keys(helpers).reduce((currentStringValue, helperIdentifier) => {
77
+ return compileHelper(currentStringValue, helperIdentifier, helpers[helperIdentifier]);
78
+ }, stringValue);
121
79
  };
122
-
123
80
  /**
124
81
  * Interpolate a string with data and compile helpers on the string
125
82
  * @param {string} stringValue - The string to interpolate
@@ -130,11 +87,10 @@ const compileHelpers = stringValue => {
130
87
  * // 'Some awsomely bold text' (with the words 'awesomely bold' in bold)
131
88
  */
132
89
  const interpolate = (stringValue, interpolationData) => {
133
- const interpolatedString = interpolation(stringValue, interpolationData);
134
- const helperCompiledString = compileHelpers(interpolatedString);
135
- return helperCompiledString;
90
+ const interpolatedString = interpolation(stringValue, interpolationData);
91
+ const helperCompiledString = compileHelpers(interpolatedString);
92
+ return helperCompiledString;
136
93
  };
137
-
138
94
  module.exports = {
139
- interpolate,
95
+ interpolate,
140
96
  };
@@ -0,0 +1,6 @@
1
+ export function bold(stringValue: any): string;
2
+ export function yellow(stringValue: any): string;
3
+ export function green(stringValue: any): string;
4
+ export function red(stringValue: any): string;
5
+ export function cyan(stringValue: any): string;
6
+ export function orange(stringValue: any): string;
@@ -1,26 +1,26 @@
1
+ "use strict";
1
2
  const chalk = require('chalk');
2
-
3
3
  /**
4
4
  * These helper methods are used to modify text output within the CLI. They
5
5
  * should all take in a string value and output a modified string value.
6
6
  */
7
7
  module.exports = {
8
- bold: function(stringValue) {
9
- return chalk.bold(stringValue);
10
- },
11
- yellow: function(stringValue) {
12
- return chalk.reset.yellow(stringValue);
13
- },
14
- green: function(stringValue) {
15
- return chalk.reset.green(stringValue);
16
- },
17
- red: function(stringValue) {
18
- return chalk.reset.red(stringValue);
19
- },
20
- cyan: function(stringValue) {
21
- return chalk.cyan(stringValue);
22
- },
23
- orange: function(stringValue) {
24
- return chalk.hex('#FC9900')(stringValue);
25
- },
8
+ bold: function (stringValue) {
9
+ return chalk.bold(stringValue);
10
+ },
11
+ yellow: function (stringValue) {
12
+ return chalk.reset.yellow(stringValue);
13
+ },
14
+ green: function (stringValue) {
15
+ return chalk.reset.green(stringValue);
16
+ },
17
+ red: function (stringValue) {
18
+ return chalk.reset.red(stringValue);
19
+ },
20
+ cyan: function (stringValue) {
21
+ return chalk.cyan(stringValue);
22
+ },
23
+ orange: function (stringValue) {
24
+ return chalk.hex('#FC9900')(stringValue);
25
+ },
26
26
  };
package/lib/lang.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export function i18n(lookupDotNotation: any, options?: {}): any;
2
+ export function setLangData(newLocale: any, newLangObj: any): void;
3
+ export const MISSING_LANGUAGE_DATA_PREFIX: "[Missing language data]";