@hubspot/cli 6.2.1 → 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 (346) 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 -72
  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 +71 -104
  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 -178
  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/lib/DevServerManager.d.ts +35 -0
  180. package/lib/DevServerManager.js +97 -124
  181. package/lib/LocalDevManager.d.ts +41 -0
  182. package/lib/LocalDevManager.js +320 -490
  183. package/lib/accountTypes.d.ts +6 -0
  184. package/lib/accountTypes.js +16 -32
  185. package/lib/buildAccount.d.ts +22 -0
  186. package/lib/buildAccount.js +130 -179
  187. package/lib/commonOpts.d.ts +20 -0
  188. package/lib/commonOpts.js +58 -91
  189. package/lib/constants.d.ts +83 -0
  190. package/lib/constants.js +61 -71
  191. package/lib/debugInfo.d.ts +3 -0
  192. package/lib/debugInfo.js +12 -13
  193. package/lib/dependencyManagement.d.ts +7 -0
  194. package/lib/dependencyManagement.js +90 -132
  195. package/lib/developerTestAccounts.d.ts +7 -0
  196. package/lib/developerTestAccounts.js +65 -91
  197. package/lib/enums/exitCodes.d.ts +5 -0
  198. package/lib/enums/exitCodes.js +5 -7
  199. package/lib/environment.d.ts +1 -0
  200. package/lib/environment.js +10 -10
  201. package/lib/errorHandlers/index.d.ts +19 -0
  202. package/lib/errorHandlers/index.js +64 -80
  203. package/lib/errorHandlers/suppressError.d.ts +1 -0
  204. package/lib/errorHandlers/suppressError.js +64 -106
  205. package/lib/filesystem.d.ts +2 -0
  206. package/lib/filesystem.js +16 -24
  207. package/lib/generate-selectors.d.ts +6 -0
  208. package/lib/generate-selectors.js +99 -137
  209. package/lib/getFunctionArrays.d.ts +1 -0
  210. package/lib/getFunctionArrays.js +12 -13
  211. package/lib/hasFeature.d.ts +1 -0
  212. package/lib/hasFeature.js +5 -11
  213. package/lib/hasFlag.d.ts +2 -0
  214. package/lib/hasFlag.js +6 -10
  215. package/lib/hublValidate.d.ts +4 -0
  216. package/lib/hublValidate.js +20 -24
  217. package/lib/interpolation.d.ts +10 -0
  218. package/lib/interpolation.js +48 -92
  219. package/lib/interpolationHelpers.d.ts +6 -0
  220. package/lib/interpolationHelpers.js +19 -19
  221. package/lib/lang.d.ts +3 -0
  222. package/lib/lang.js +50 -78
  223. package/lib/links.d.ts +127 -0
  224. package/lib/links.js +92 -114
  225. package/lib/localDev.d.ts +11 -0
  226. package/lib/localDev.js +283 -439
  227. package/lib/marketplace-validate.d.ts +5 -0
  228. package/lib/marketplace-validate.js +103 -126
  229. package/lib/oauth.d.ts +1 -0
  230. package/lib/oauth.js +62 -78
  231. package/lib/polling.d.ts +1 -0
  232. package/lib/polling.js +24 -26
  233. package/lib/process.d.ts +2 -0
  234. package/lib/process.js +39 -53
  235. package/lib/projectLogsManager.d.ts +19 -0
  236. package/lib/projectLogsManager.js +76 -130
  237. package/lib/projectStructure.d.ts +13 -0
  238. package/lib/projectStructure.js +87 -109
  239. package/lib/projects.d.ts +40 -0
  240. package/lib/projects.js +589 -960
  241. package/lib/projectsWatch.d.ts +1 -0
  242. package/lib/projectsWatch.js +122 -228
  243. package/lib/prompts/accountNamePrompt.d.ts +11 -0
  244. package/lib/prompts/accountNamePrompt.js +58 -65
  245. package/lib/prompts/accountsPrompt.d.ts +3 -0
  246. package/lib/prompts/accountsPrompt.js +31 -37
  247. package/lib/prompts/activeInstallConfirmationPrompt.d.ts +1 -0
  248. package/lib/prompts/activeInstallConfirmationPrompt.js +11 -13
  249. package/lib/prompts/cleanUploadPrompt.d.ts +1 -0
  250. package/lib/prompts/cleanUploadPrompt.js +11 -13
  251. package/lib/prompts/cmsFieldPrompt.d.ts +1 -0
  252. package/lib/prompts/cmsFieldPrompt.js +35 -39
  253. package/lib/prompts/createApiSamplePrompt.d.ts +1 -0
  254. package/lib/prompts/createApiSamplePrompt.js +47 -52
  255. package/lib/prompts/createFunctionPrompt.d.ts +1 -0
  256. package/lib/prompts/createFunctionPrompt.js +55 -56
  257. package/lib/prompts/createModulePrompt.d.ts +1 -0
  258. package/lib/prompts/createModulePrompt.js +45 -50
  259. package/lib/prompts/createProjectPrompt.d.ts +1 -0
  260. package/lib/prompts/createProjectPrompt.js +88 -127
  261. package/lib/prompts/createTemplatePrompt.d.ts +1 -0
  262. package/lib/prompts/createTemplatePrompt.js +16 -19
  263. package/lib/prompts/deployBuildIdPrompt.d.ts +1 -0
  264. package/lib/prompts/deployBuildIdPrompt.js +13 -15
  265. package/lib/prompts/downloadProjectPrompt.d.ts +1 -0
  266. package/lib/prompts/downloadProjectPrompt.js +36 -40
  267. package/lib/prompts/feedbackPrompt.d.ts +2 -0
  268. package/lib/prompts/feedbackPrompt.js +27 -30
  269. package/lib/prompts/folderOverwritePrompt.d.ts +1 -0
  270. package/lib/prompts/folderOverwritePrompt.js +8 -10
  271. package/lib/prompts/installPublicAppPrompt.d.ts +1 -0
  272. package/lib/prompts/installPublicAppPrompt.js +27 -42
  273. package/lib/prompts/personalAccessKeyPrompt.d.ts +69 -0
  274. package/lib/prompts/personalAccessKeyPrompt.js +102 -110
  275. package/lib/prompts/previewPrompt.d.ts +2 -0
  276. package/lib/prompts/previewPrompt.js +44 -47
  277. package/lib/prompts/projectAddPrompt.d.ts +1 -0
  278. package/lib/prompts/projectAddPrompt.js +35 -38
  279. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +4 -0
  280. package/lib/prompts/projectDevTargetAccountPrompt.js +148 -193
  281. package/lib/prompts/projectNamePrompt.d.ts +1 -0
  282. package/lib/prompts/projectNamePrompt.js +23 -25
  283. package/lib/prompts/projectsLogsPrompt.d.ts +5 -0
  284. package/lib/prompts/projectsLogsPrompt.js +19 -27
  285. package/lib/prompts/promptUtils.d.ts +2 -0
  286. package/lib/prompts/promptUtils.js +15 -17
  287. package/lib/prompts/sandboxesPrompt.d.ts +2 -0
  288. package/lib/prompts/sandboxesPrompt.js +48 -59
  289. package/lib/prompts/secretPrompt.d.ts +1 -0
  290. package/lib/prompts/secretPrompt.js +13 -16
  291. package/lib/prompts/selectPublicAppPrompt.d.ts +5 -0
  292. package/lib/prompts/selectPublicAppPrompt.js +55 -83
  293. package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -0
  294. package/lib/prompts/setAsDefaultAccountPrompt.js +17 -24
  295. package/lib/prompts/uploadPrompt.d.ts +1 -0
  296. package/lib/prompts/uploadPrompt.js +28 -30
  297. package/lib/regex.d.ts +1 -0
  298. package/lib/regex.js +2 -2
  299. package/lib/sandboxSync.d.ts +8 -0
  300. package/lib/sandboxSync.js +98 -166
  301. package/lib/sandboxes.d.ts +40 -0
  302. package/lib/sandboxes.js +199 -316
  303. package/lib/schema.d.ts +2 -0
  304. package/lib/schema.js +20 -26
  305. package/lib/serverlessLogs.d.ts +8 -0
  306. package/lib/serverlessLogs.js +128 -172
  307. package/lib/ui/SpinniesManager.d.ts +61 -0
  308. package/lib/ui/SpinniesManager.js +196 -254
  309. package/lib/ui/git.d.ts +1 -0
  310. package/lib/ui/git.js +18 -19
  311. package/lib/ui/index.d.ts +36 -0
  312. package/lib/ui/index.js +115 -167
  313. package/lib/ui/serverlessFunctionLogs.d.ts +1 -0
  314. package/lib/ui/serverlessFunctionLogs.js +51 -70
  315. package/lib/ui/spinniesUtils.d.ts +60 -0
  316. package/lib/ui/spinniesUtils.js +109 -133
  317. package/lib/ui/supportHyperlinks.d.ts +3 -0
  318. package/lib/ui/supportHyperlinks.js +46 -61
  319. package/lib/ui/supportsColor.d.ts +13 -0
  320. package/lib/ui/supportsColor.js +78 -108
  321. package/lib/ui/table.d.ts +2 -0
  322. package/lib/ui/table.js +47 -55
  323. package/lib/upload.d.ts +1 -0
  324. package/lib/upload.js +37 -42
  325. package/lib/usageTracking.d.ts +6 -0
  326. package/lib/usageTracking.js +131 -155
  327. package/lib/validation.d.ts +16 -0
  328. package/lib/validation.js +142 -203
  329. package/package.json +78 -47
  330. package/CHANGELOG.md +0 -16
  331. package/LICENSE +0 -12
  332. package/README.md +0 -154
  333. package/commands/__tests__/projects.test.js +0 -105
  334. package/commands/project/__tests__/deploy.test.js +0 -443
  335. package/commands/project/__tests__/installDeps.test.js +0 -168
  336. package/commands/project/__tests__/logs.test.js +0 -304
  337. package/hubspot.sample.config.yml +0 -28
  338. package/jest.config.js +0 -4
  339. package/lib/__tests__/commonOpts.test.js +0 -83
  340. package/lib/__tests__/dependencyManagement.test.js +0 -243
  341. package/lib/__tests__/downloadProjectPrompt.test.js +0 -31
  342. package/lib/__tests__/projectLogsManager.test.js +0 -212
  343. package/lib/__tests__/projects.test.js +0 -140
  344. package/lib/__tests__/serverlessLogs.test.js +0 -162
  345. package/lib/__tests__/validation.test.js +0 -140
  346. 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]";