@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.
- package/bin/cli.d.ts +2 -0
- package/bin/cli.js +107 -128
- package/commands/accounts/clean.d.ts +4 -0
- package/commands/accounts/clean.js +80 -116
- package/commands/accounts/info.d.ts +4 -0
- package/commands/accounts/info.js +30 -43
- package/commands/accounts/list.d.ts +4 -0
- package/commands/accounts/list.js +63 -92
- package/commands/accounts/remove.d.ts +4 -0
- package/commands/accounts/remove.js +41 -73
- package/commands/accounts/rename.d.ts +4 -0
- package/commands/accounts/rename.js +24 -41
- package/commands/accounts/use.d.ts +4 -0
- package/commands/accounts/use.js +34 -57
- package/commands/accounts.d.ts +3 -0
- package/commands/accounts.js +14 -18
- package/commands/auth.d.ts +4 -0
- package/commands/auth.js +131 -200
- package/commands/cms/convertFields.d.ts +4 -0
- package/commands/cms/convertFields.js +64 -81
- package/commands/cms/lighthouseScore.d.ts +4 -0
- package/commands/cms/lighthouseScore.js +234 -298
- package/commands/cms/reactModules.d.ts +4 -0
- package/commands/cms/reactModules.js +44 -53
- package/commands/cms.d.ts +3 -0
- package/commands/cms.js +9 -13
- package/commands/config/set/allowUsageTracking.d.ts +4 -0
- package/commands/config/set/allowUsageTracking.js +31 -38
- package/commands/config/set/defaultMode.d.ts +4 -0
- package/commands/config/set/defaultMode.js +32 -43
- package/commands/config/set/httpTimeout.d.ts +4 -0
- package/commands/config/set/httpTimeout.js +21 -30
- package/commands/config/set.d.ts +4 -0
- package/commands/config/set.js +61 -76
- package/commands/config.d.ts +3 -0
- package/commands/config.js +5 -9
- package/commands/create/api-sample.d.ts +13 -0
- package/commands/create/api-sample.js +52 -74
- package/commands/create/app.d.ts +10 -0
- package/commands/create/app.js +6 -7
- package/commands/create/function.d.ts +6 -0
- package/commands/create/function.js +13 -14
- package/commands/create/index.d.ts +109 -0
- package/commands/create/index.js +10 -9
- package/commands/create/module.d.ts +11 -0
- package/commands/create/module.js +19 -19
- package/commands/create/react-app.d.ts +9 -0
- package/commands/create/react-app.js +5 -6
- package/commands/create/template.d.ts +12 -0
- package/commands/create/template.js +21 -24
- package/commands/create/vue-app.d.ts +9 -0
- package/commands/create/vue-app.js +5 -6
- package/commands/create/webpack-serverless.d.ts +9 -0
- package/commands/create/webpack-serverless.js +5 -6
- package/commands/create/website-theme.d.ts +9 -0
- package/commands/create/website-theme.js +13 -15
- package/commands/create.d.ts +4 -0
- package/commands/create.js +62 -80
- package/commands/customObject/create.d.ts +4 -0
- package/commands/customObject/create.js +31 -47
- package/commands/customObject/schema/create.d.ts +4 -0
- package/commands/customObject/schema/create.js +40 -67
- package/commands/customObject/schema/delete.d.ts +4 -0
- package/commands/customObject/schema/delete.js +26 -39
- package/commands/customObject/schema/fetch-all.d.ts +4 -0
- package/commands/customObject/schema/fetch-all.js +28 -39
- package/commands/customObject/schema/fetch.d.ts +4 -0
- package/commands/customObject/schema/fetch.js +46 -63
- package/commands/customObject/schema/list.d.ts +3 -0
- package/commands/customObject/schema/list.js +12 -17
- package/commands/customObject/schema/update.d.ts +4 -0
- package/commands/customObject/schema/update.js +44 -72
- package/commands/customObject/schema.d.ts +3 -0
- package/commands/customObject/schema.js +10 -12
- package/commands/customObject.d.ts +3 -0
- package/commands/customObject.js +12 -22
- package/commands/feedback.d.ts +4 -0
- package/commands/feedback.js +23 -33
- package/commands/fetch.d.ts +4 -0
- package/commands/fetch.js +51 -78
- package/commands/filemanager/fetch.d.ts +4 -0
- package/commands/filemanager/fetch.js +36 -56
- package/commands/filemanager/upload.d.ts +4 -0
- package/commands/filemanager/upload.js +86 -128
- package/commands/filemanager.d.ts +3 -0
- package/commands/filemanager.js +10 -18
- package/commands/functions/deploy.d.ts +4 -0
- package/commands/functions/deploy.js +74 -99
- package/commands/functions/list.d.ts +4 -0
- package/commands/functions/list.js +29 -47
- package/commands/functions/server.d.ts +4 -0
- package/commands/functions/server.js +48 -65
- package/commands/functions.d.ts +3 -0
- package/commands/functions.js +11 -15
- package/commands/hubdb/clear.d.ts +4 -0
- package/commands/hubdb/clear.js +35 -56
- package/commands/hubdb/create.d.ts +4 -0
- package/commands/hubdb/create.js +32 -57
- package/commands/hubdb/delete.d.ts +4 -0
- package/commands/hubdb/delete.js +27 -44
- package/commands/hubdb/fetch.d.ts +4 -0
- package/commands/hubdb/fetch.js +28 -46
- package/commands/hubdb.d.ts +3 -0
- package/commands/hubdb.js +10 -14
- package/commands/init.d.ts +4 -0
- package/commands/init.js +101 -160
- package/commands/lint.d.ts +4 -0
- package/commands/lint.js +32 -45
- package/commands/list.d.ts +4 -0
- package/commands/list.js +72 -101
- package/commands/logs.d.ts +4 -0
- package/commands/logs.js +96 -121
- package/commands/module/marketplace-validate.d.ts +4 -0
- package/commands/module/marketplace-validate.js +30 -57
- package/commands/module.d.ts +3 -0
- package/commands/module.js +5 -9
- package/commands/mv.d.ts +4 -0
- package/commands/mv.js +51 -71
- package/commands/open.d.ts +4 -0
- package/commands/open.js +46 -62
- package/commands/project/add.d.ts +4 -0
- package/commands/project/add.js +45 -70
- package/commands/project/cloneApp.d.ts +4 -0
- package/commands/project/cloneApp.js +117 -180
- package/commands/project/create.d.ts +4 -0
- package/commands/project/create.js +47 -81
- package/commands/project/deploy.d.ts +4 -0
- package/commands/project/deploy.js +103 -182
- package/commands/project/dev.d.ts +4 -0
- package/commands/project/dev.js +123 -227
- package/commands/project/download.d.ts +4 -0
- package/commands/project/download.js +71 -123
- package/commands/project/installDeps.d.ts +6 -0
- package/commands/project/installDeps.js +50 -59
- package/commands/project/listBuilds.d.ts +4 -0
- package/commands/project/listBuilds.js +95 -139
- package/commands/project/logs.d.ts +4 -0
- package/commands/project/logs.js +84 -128
- package/commands/project/migrateApp.d.ts +4 -0
- package/commands/project/migrateApp.js +156 -248
- package/commands/project/open.d.ts +4 -0
- package/commands/project/open.js +42 -68
- package/commands/project/upload.d.ts +4 -0
- package/commands/project/upload.js +70 -116
- package/commands/project/watch.d.ts +4 -0
- package/commands/project/watch.js +92 -152
- package/commands/project.d.ts +3 -0
- package/commands/project.js +19 -23
- package/commands/remove.d.ts +4 -0
- package/commands/remove.js +26 -43
- package/commands/sandbox/create.d.ts +4 -0
- package/commands/sandbox/create.js +141 -187
- package/commands/sandbox/delete.d.ts +4 -0
- package/commands/sandbox/delete.js +164 -221
- package/commands/sandbox.d.ts +3 -0
- package/commands/sandbox.js +8 -12
- package/commands/secrets/addSecret.d.ts +4 -0
- package/commands/secrets/addSecret.js +32 -52
- package/commands/secrets/deleteSecret.d.ts +4 -0
- package/commands/secrets/deleteSecret.js +31 -50
- package/commands/secrets/listSecrets.d.ts +4 -0
- package/commands/secrets/listSecrets.js +26 -42
- package/commands/secrets/updateSecret.d.ts +4 -0
- package/commands/secrets/updateSecret.js +33 -53
- package/commands/secrets.d.ts +3 -0
- package/commands/secrets.js +10 -13
- package/commands/theme/generate-selectors.d.ts +4 -0
- package/commands/theme/generate-selectors.js +127 -192
- package/commands/theme/marketplace-validate.d.ts +4 -0
- package/commands/theme/marketplace-validate.js +30 -57
- package/commands/theme/preview.d.ts +4 -0
- package/commands/theme/preview.js +161 -196
- package/commands/theme.d.ts +3 -0
- package/commands/theme.js +7 -11
- package/commands/upload.d.ts +4 -0
- package/commands/upload.js +197 -287
- package/commands/watch.d.ts +4 -0
- package/commands/watch.js +126 -172
- package/lang/en.lyaml +2 -3
- package/lib/DevServerManager.d.ts +35 -0
- package/lib/DevServerManager.js +97 -124
- package/lib/LocalDevManager.d.ts +41 -0
- package/lib/LocalDevManager.js +320 -490
- package/lib/accountTypes.d.ts +6 -0
- package/lib/accountTypes.js +16 -32
- package/lib/buildAccount.d.ts +22 -0
- package/lib/buildAccount.js +130 -179
- package/lib/commonOpts.d.ts +20 -0
- package/lib/commonOpts.js +58 -91
- package/lib/constants.d.ts +83 -0
- package/lib/constants.js +61 -71
- package/lib/debugInfo.d.ts +3 -0
- package/lib/debugInfo.js +12 -13
- package/lib/dependencyManagement.d.ts +7 -0
- package/lib/dependencyManagement.js +90 -132
- package/lib/developerTestAccounts.d.ts +7 -0
- package/lib/developerTestAccounts.js +65 -91
- package/lib/enums/exitCodes.d.ts +5 -0
- package/lib/enums/exitCodes.js +5 -7
- package/lib/environment.d.ts +1 -0
- package/lib/environment.js +10 -10
- package/lib/errorHandlers/index.d.ts +19 -0
- package/lib/errorHandlers/index.js +64 -80
- package/lib/errorHandlers/suppressError.d.ts +1 -0
- package/lib/errorHandlers/suppressError.js +64 -106
- package/lib/filesystem.d.ts +2 -0
- package/lib/filesystem.js +16 -24
- package/lib/generate-selectors.d.ts +6 -0
- package/lib/generate-selectors.js +99 -137
- package/lib/getFunctionArrays.d.ts +1 -0
- package/lib/getFunctionArrays.js +12 -13
- package/lib/hasFeature.d.ts +1 -0
- package/lib/hasFeature.js +5 -11
- package/lib/hasFlag.d.ts +2 -0
- package/lib/hasFlag.js +6 -10
- package/lib/hublValidate.d.ts +4 -0
- package/lib/hublValidate.js +20 -24
- package/lib/interpolation.d.ts +10 -0
- package/lib/interpolation.js +48 -92
- package/lib/interpolationHelpers.d.ts +6 -0
- package/lib/interpolationHelpers.js +19 -19
- package/lib/lang.d.ts +3 -0
- package/lib/lang.js +50 -78
- package/lib/links.d.ts +127 -0
- package/lib/links.js +92 -114
- package/lib/localDev.d.ts +11 -0
- package/lib/localDev.js +283 -433
- package/lib/marketplace-validate.d.ts +5 -0
- package/lib/marketplace-validate.js +103 -126
- package/lib/oauth.d.ts +1 -0
- package/lib/oauth.js +62 -78
- package/lib/polling.d.ts +1 -0
- package/lib/polling.js +24 -26
- package/lib/process.d.ts +2 -0
- package/lib/process.js +39 -53
- package/lib/projectLogsManager.d.ts +19 -0
- package/lib/projectLogsManager.js +76 -130
- package/lib/projectStructure.d.ts +13 -0
- package/lib/projectStructure.js +87 -109
- package/lib/projects.d.ts +40 -0
- package/lib/projects.js +589 -957
- package/lib/projectsWatch.d.ts +1 -0
- package/lib/projectsWatch.js +122 -228
- package/lib/prompts/accountNamePrompt.d.ts +11 -0
- package/lib/prompts/accountNamePrompt.js +58 -65
- package/lib/prompts/accountsPrompt.d.ts +3 -0
- package/lib/prompts/accountsPrompt.js +31 -37
- package/lib/prompts/activeInstallConfirmationPrompt.d.ts +1 -0
- package/lib/prompts/activeInstallConfirmationPrompt.js +11 -13
- package/lib/prompts/cleanUploadPrompt.d.ts +1 -0
- package/lib/prompts/cleanUploadPrompt.js +11 -13
- package/lib/prompts/cmsFieldPrompt.d.ts +1 -0
- package/lib/prompts/cmsFieldPrompt.js +35 -39
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -0
- package/lib/prompts/createApiSamplePrompt.js +47 -52
- package/lib/prompts/createFunctionPrompt.d.ts +1 -0
- package/lib/prompts/createFunctionPrompt.js +55 -56
- package/lib/prompts/createModulePrompt.d.ts +1 -0
- package/lib/prompts/createModulePrompt.js +45 -50
- package/lib/prompts/createProjectPrompt.d.ts +1 -0
- package/lib/prompts/createProjectPrompt.js +88 -127
- package/lib/prompts/createTemplatePrompt.d.ts +1 -0
- package/lib/prompts/createTemplatePrompt.js +16 -19
- package/lib/prompts/deployBuildIdPrompt.d.ts +1 -0
- package/lib/prompts/deployBuildIdPrompt.js +13 -15
- package/lib/prompts/downloadProjectPrompt.d.ts +1 -0
- package/lib/prompts/downloadProjectPrompt.js +36 -40
- package/lib/prompts/feedbackPrompt.d.ts +2 -0
- package/lib/prompts/feedbackPrompt.js +27 -30
- package/lib/prompts/folderOverwritePrompt.d.ts +1 -0
- package/lib/prompts/folderOverwritePrompt.js +8 -10
- package/lib/prompts/installPublicAppPrompt.d.ts +1 -0
- package/lib/prompts/installPublicAppPrompt.js +27 -42
- package/lib/prompts/personalAccessKeyPrompt.d.ts +69 -0
- package/lib/prompts/personalAccessKeyPrompt.js +102 -110
- package/lib/prompts/previewPrompt.d.ts +2 -0
- package/lib/prompts/previewPrompt.js +44 -47
- package/lib/prompts/projectAddPrompt.d.ts +1 -0
- package/lib/prompts/projectAddPrompt.js +35 -38
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +4 -0
- package/lib/prompts/projectDevTargetAccountPrompt.js +148 -193
- package/lib/prompts/projectNamePrompt.d.ts +1 -0
- package/lib/prompts/projectNamePrompt.js +23 -25
- package/lib/prompts/projectsLogsPrompt.d.ts +5 -0
- package/lib/prompts/projectsLogsPrompt.js +19 -27
- package/lib/prompts/promptUtils.d.ts +2 -0
- package/lib/prompts/promptUtils.js +15 -17
- package/lib/prompts/sandboxesPrompt.d.ts +2 -0
- package/lib/prompts/sandboxesPrompt.js +48 -59
- package/lib/prompts/secretPrompt.d.ts +1 -0
- package/lib/prompts/secretPrompt.js +13 -16
- package/lib/prompts/selectPublicAppPrompt.d.ts +5 -0
- package/lib/prompts/selectPublicAppPrompt.js +55 -81
- package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -0
- package/lib/prompts/setAsDefaultAccountPrompt.js +17 -24
- package/lib/prompts/uploadPrompt.d.ts +1 -0
- package/lib/prompts/uploadPrompt.js +28 -30
- package/lib/regex.d.ts +1 -0
- package/lib/regex.js +2 -2
- package/lib/sandboxSync.d.ts +8 -0
- package/lib/sandboxSync.js +98 -166
- package/lib/sandboxes.d.ts +40 -0
- package/lib/sandboxes.js +199 -316
- package/lib/schema.d.ts +2 -0
- package/lib/schema.js +20 -26
- package/lib/serverlessLogs.d.ts +8 -0
- package/lib/serverlessLogs.js +128 -172
- package/lib/ui/SpinniesManager.d.ts +61 -0
- package/lib/ui/SpinniesManager.js +196 -254
- package/lib/ui/git.d.ts +1 -0
- package/lib/ui/git.js +18 -19
- package/lib/ui/index.d.ts +36 -0
- package/lib/ui/index.js +115 -167
- package/lib/ui/serverlessFunctionLogs.d.ts +1 -0
- package/lib/ui/serverlessFunctionLogs.js +51 -70
- package/lib/ui/spinniesUtils.d.ts +60 -0
- package/lib/ui/spinniesUtils.js +109 -133
- package/lib/ui/supportHyperlinks.d.ts +3 -0
- package/lib/ui/supportHyperlinks.js +46 -61
- package/lib/ui/supportsColor.d.ts +13 -0
- package/lib/ui/supportsColor.js +78 -108
- package/lib/ui/table.d.ts +2 -0
- package/lib/ui/table.js +47 -55
- package/lib/upload.d.ts +1 -0
- package/lib/upload.js +37 -42
- package/lib/usageTracking.d.ts +6 -0
- package/lib/usageTracking.js +131 -155
- package/lib/validation.d.ts +16 -0
- package/lib/validation.js +142 -203
- package/package.json +78 -48
- package/CHANGELOG.md +0 -16
- package/LICENSE +0 -12
- package/README.md +0 -154
- package/commands/__tests__/projects.test.js +0 -105
- package/commands/project/__tests__/deploy.test.js +0 -443
- package/commands/project/__tests__/installDeps.test.js +0 -168
- package/commands/project/__tests__/logs.test.js +0 -304
- package/hubspot.sample.config.yml +0 -28
- package/jest.config.js +0 -4
- package/lib/__tests__/commonOpts.test.js +0 -83
- package/lib/__tests__/dependencyManagement.test.js +0 -243
- package/lib/__tests__/downloadProjectPrompt.test.js +0 -31
- package/lib/__tests__/projectLogsManager.test.js +0 -212
- package/lib/__tests__/projects.test.js +0 -140
- package/lib/__tests__/serverlessLogs.test.js +0 -162
- package/lib/__tests__/validation.test.js +0 -140
- 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
|
-
|
|
11
|
+
return maxFieldsDepth;
|
|
17
12
|
}
|
|
18
|
-
|
|
19
13
|
function findFieldsJsonPath(basePath) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
117
|
+
findFieldsJsonPath,
|
|
118
|
+
combineThemeCss,
|
|
119
|
+
setPreviewSelectors,
|
|
120
|
+
generateInheritedSelectors,
|
|
121
|
+
generateSelectorsMap,
|
|
122
|
+
getMaxFieldsDepth,
|
|
161
123
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function getFunctionArrays(resp: any): any;
|
package/lib/getFunctionArrays.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
const moment = require('moment');
|
|
2
|
-
|
|
3
3
|
const getFunctionArrays = resp => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
8
|
+
hasFeature,
|
|
15
9
|
};
|
package/lib/hasFlag.d.ts
ADDED
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
package/lib/hublValidate.js
CHANGED
|
@@ -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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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;
|
package/lib/interpolation.js
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
const helpers = require('./interpolationHelpers');
|
|
2
3
|
const delimiters = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
interpolation: {
|
|
5
|
+
start: '{{',
|
|
6
|
+
end: '}}',
|
|
7
|
+
},
|
|
8
|
+
helpers: {
|
|
9
|
+
start: '#',
|
|
10
|
+
end: '/',
|
|
11
|
+
},
|
|
11
12
|
};
|
|
12
|
-
|
|
13
13
|
const isHelperIdentifier = identifier => {
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
90
|
+
const interpolatedString = interpolation(stringValue, interpolationData);
|
|
91
|
+
const helperCompiledString = compileHelpers(interpolatedString);
|
|
92
|
+
return helperCompiledString;
|
|
136
93
|
};
|
|
137
|
-
|
|
138
94
|
module.exports = {
|
|
139
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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