@hubspot/cli 7.4.9-experimental.0 → 7.4.10-beta.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/api/migrate.d.ts +14 -4
- package/api/migrate.js +16 -2
- package/bin/cli.js +9 -187
- package/commands/account/auth.d.ts +6 -0
- package/commands/account/auth.js +198 -0
- package/commands/account/clean.d.ts +3 -7
- package/commands/account/clean.js +54 -14
- package/commands/account/createOverride.d.ts +6 -0
- package/commands/account/createOverride.js +121 -0
- package/commands/account/info.d.ts +3 -7
- package/commands/account/info.js +51 -9
- package/commands/account/list.d.ts +3 -7
- package/commands/account/list.js +38 -13
- package/commands/account/remove.d.ts +3 -7
- package/commands/account/remove.js +57 -11
- package/commands/account/removeOverride.d.ts +6 -0
- package/commands/account/removeOverride.js +93 -0
- package/commands/account/rename.d.ts +3 -7
- package/commands/account/rename.js +16 -9
- package/commands/account/use.d.ts +5 -9
- package/commands/account/use.js +39 -9
- package/commands/account.d.ts +3 -4
- package/commands/account.js +35 -53
- package/commands/app/migrate.d.ts +5 -6
- package/commands/app/migrate.js +60 -44
- package/commands/app.d.ts +2 -5
- package/commands/app.js +9 -9
- package/commands/auth.d.ts +3 -7
- package/commands/auth.js +25 -15
- package/commands/cms/convertFields.d.ts +7 -1
- package/commands/cms/convertFields.js +57 -41
- package/commands/cms/getReactModule.d.ts +7 -1
- package/commands/cms/getReactModule.js +52 -34
- package/commands/cms/lighthouseScore.d.ts +8 -1
- package/commands/cms/lighthouseScore.js +133 -100
- package/commands/cms.d.ts +3 -1
- package/commands/cms.js +24 -16
- package/commands/completion.d.ts +3 -1
- package/commands/completion.js +25 -13
- package/commands/config/migrate.d.ts +6 -0
- package/commands/config/migrate.js +94 -0
- package/commands/config/set.d.ts +10 -1
- package/commands/config/set.js +61 -32
- package/commands/config.d.ts +3 -1
- package/commands/config.js +21 -11
- package/commands/create/api-sample.d.ts +3 -1
- package/commands/create/api-sample.js +34 -36
- package/commands/create/app.d.ts +3 -1
- package/commands/create/app.js +9 -7
- package/commands/create/function.d.ts +3 -1
- package/commands/create/function.js +11 -10
- package/commands/create/index.d.ts +5 -1
- package/commands/create/index.js +23 -11
- package/commands/create/module.d.ts +3 -1
- package/commands/create/module.js +14 -13
- package/commands/create/react-app.d.ts +3 -1
- package/commands/create/react-app.js +10 -7
- package/commands/create/template.d.ts +3 -1
- package/commands/create/template.js +14 -14
- package/commands/create/vue-app.d.ts +3 -1
- package/commands/create/vue-app.js +10 -7
- package/commands/create/webpack-serverless.d.ts +3 -1
- package/commands/create/webpack-serverless.js +10 -7
- package/commands/create/website-theme.d.ts +3 -1
- package/commands/create/website-theme.js +10 -9
- package/commands/create.d.ts +4 -24
- package/commands/create.js +64 -75
- package/commands/customObject/create.d.ts +4 -9
- package/commands/customObject/create.js +17 -10
- package/commands/customObject/schema/create.d.ts +4 -9
- package/commands/customObject/schema/create.js +18 -11
- package/commands/customObject/schema/delete.d.ts +4 -9
- package/commands/customObject/schema/delete.js +21 -11
- package/commands/customObject/schema/fetch-all.d.ts +4 -9
- package/commands/customObject/schema/fetch-all.js +19 -11
- package/commands/customObject/schema/fetch.d.ts +4 -9
- package/commands/customObject/schema/fetch.js +19 -11
- package/commands/customObject/schema/list.d.ts +4 -8
- package/commands/customObject/schema/list.js +17 -10
- package/commands/customObject/schema/update.d.ts +4 -9
- package/commands/customObject/schema/update.js +18 -11
- package/commands/customObject/schema.d.ts +3 -5
- package/commands/customObject/schema.js +27 -54
- package/commands/customObject.d.ts +3 -4
- package/commands/customObject.js +22 -48
- package/commands/doctor.d.ts +6 -8
- package/commands/doctor.js +32 -22
- package/commands/feedback.d.ts +4 -1
- package/commands/feedback.js +40 -48
- package/commands/fetch.d.ts +12 -1
- package/commands/fetch.js +49 -34
- package/commands/filemanager/fetch.d.ts +4 -9
- package/commands/filemanager/fetch.js +18 -11
- package/commands/filemanager/upload.d.ts +4 -9
- package/commands/filemanager/upload.js +17 -11
- package/commands/filemanager.d.ts +3 -4
- package/commands/filemanager.js +20 -42
- package/commands/function/deploy.d.ts +6 -1
- package/commands/function/deploy.js +70 -50
- package/commands/function/list.d.ts +6 -1
- package/commands/function/list.js +44 -32
- package/commands/function/server.d.ts +10 -1
- package/commands/function/server.js +49 -38
- package/commands/function.d.ts +5 -1
- package/commands/function.js +24 -11
- package/commands/hubdb/clear.d.ts +4 -9
- package/commands/hubdb/clear.js +21 -15
- package/commands/hubdb/create.d.ts +4 -9
- package/commands/hubdb/create.js +23 -17
- package/commands/hubdb/delete.d.ts +4 -9
- package/commands/hubdb/delete.js +24 -16
- package/commands/hubdb/fetch.d.ts +4 -9
- package/commands/hubdb/fetch.js +20 -14
- package/commands/hubdb.d.ts +3 -2
- package/commands/hubdb.js +24 -47
- package/commands/init.d.ts +3 -7
- package/commands/init.js +28 -23
- package/commands/lint.d.ts +6 -4
- package/commands/lint.js +44 -44
- package/commands/list.d.ts +3 -7
- package/commands/list.js +23 -16
- package/commands/logs.d.ts +10 -1
- package/commands/logs.js +53 -45
- package/commands/module/marketplace-validate.d.ts +6 -1
- package/commands/module/marketplace-validate.js +39 -28
- package/commands/module.d.ts +3 -1
- package/commands/module.js +22 -12
- package/commands/mv.d.ts +3 -7
- package/commands/mv.js +22 -15
- package/commands/open.d.ts +3 -7
- package/commands/open.js +22 -15
- package/commands/project/add.d.ts +3 -7
- package/commands/project/add.js +28 -23
- package/commands/project/cloneApp.d.ts +6 -8
- package/commands/project/cloneApp.js +49 -45
- package/commands/project/create.d.ts +10 -1
- package/commands/project/create.js +85 -63
- package/commands/project/deploy.d.ts +4 -6
- package/commands/project/deploy.js +66 -36
- package/commands/project/dev/deprecatedFlow.js +32 -25
- package/commands/project/dev/index.d.ts +4 -5
- package/commands/project/dev/index.js +70 -25
- package/commands/project/dev/unifiedFlow.d.ts +2 -1
- package/commands/project/dev/unifiedFlow.js +58 -27
- package/commands/project/download.d.ts +3 -7
- package/commands/project/download.js +18 -19
- package/commands/project/installDeps.d.ts +6 -1
- package/commands/project/installDeps.js +48 -32
- package/commands/project/listBuilds.d.ts +3 -7
- package/commands/project/listBuilds.js +32 -27
- package/commands/project/logs.d.ts +10 -1
- package/commands/project/logs.js +73 -65
- package/commands/project/migrate.d.ts +7 -0
- package/commands/project/migrate.js +71 -0
- package/commands/project/migrateApp.d.ts +3 -8
- package/commands/project/migrateApp.js +23 -20
- package/commands/project/open.d.ts +3 -7
- package/commands/project/open.js +29 -21
- package/commands/project/profile/add.d.ts +7 -0
- package/commands/project/profile/add.js +190 -0
- package/commands/project/profile/remove.d.ts +6 -0
- package/commands/project/profile/remove.js +119 -0
- package/commands/project/profile.d.ts +3 -0
- package/commands/project/profile.js +25 -0
- package/commands/project/upload.d.ts +10 -1
- package/commands/project/upload.js +110 -56
- package/commands/project/watch.d.ts +6 -1
- package/commands/project/watch.js +95 -61
- package/commands/project.d.ts +3 -1
- package/commands/project.js +49 -35
- package/commands/remove.d.ts +3 -7
- package/commands/remove.js +25 -15
- package/commands/sandbox/create.d.ts +4 -9
- package/commands/sandbox/create.js +27 -21
- package/commands/sandbox/delete.d.ts +4 -9
- package/commands/sandbox/delete.js +35 -29
- package/commands/sandbox.d.ts +3 -4
- package/commands/sandbox.js +20 -44
- package/commands/secret/addSecret.d.ts +4 -9
- package/commands/secret/addSecret.js +21 -15
- package/commands/secret/deleteSecret.d.ts +4 -9
- package/commands/secret/deleteSecret.js +28 -18
- package/commands/secret/listSecret.d.ts +4 -9
- package/commands/secret/listSecret.js +19 -13
- package/commands/secret/updateSecret.d.ts +4 -9
- package/commands/secret/updateSecret.js +25 -17
- package/commands/secret.d.ts +3 -4
- package/commands/secret.js +25 -49
- package/commands/theme/generate-selectors.d.ts +3 -7
- package/commands/theme/generate-selectors.js +18 -11
- package/commands/theme/marketplace-validate.d.ts +4 -9
- package/commands/theme/marketplace-validate.js +21 -15
- package/commands/theme/preview.d.ts +4 -9
- package/commands/theme/preview.js +31 -24
- package/commands/theme.d.ts +3 -4
- package/commands/theme.js +23 -47
- package/commands/upload.d.ts +12 -1
- package/commands/upload.js +118 -98
- package/commands/watch.d.ts +14 -1
- package/commands/watch.js +76 -66
- package/lang/en.d.ts +2932 -0
- package/lang/en.js +2796 -3318
- package/lang/en.lyaml +120 -58
- package/lib/accountTypes.d.ts +1 -0
- package/lib/accountTypes.js +12 -0
- package/lib/app/migrate.d.ts +33 -4
- package/lib/app/migrate.js +218 -93
- package/lib/app/migrate_legacy.d.ts +2 -2
- package/lib/app/migrate_legacy.js +15 -12
- package/lib/app/urls.d.ts +16 -0
- package/lib/app/urls.js +16 -0
- package/lib/buildAccount.d.ts +1 -2
- package/lib/buildAccount.js +11 -10
- package/lib/commonOpts.d.ts +3 -4
- package/lib/commonOpts.js +46 -18
- package/lib/configMigrate.d.ts +2 -0
- package/lib/configMigrate.js +118 -0
- package/lib/configOptions.d.ts +4 -0
- package/lib/configOptions.js +41 -45
- package/lib/constants.d.ts +10 -0
- package/lib/constants.js +11 -1
- package/lib/dependencyManagement.d.ts +0 -5
- package/lib/dependencyManagement.js +14 -40
- package/lib/doctor/Diagnosis.d.ts +1 -2
- package/lib/doctor/Diagnosis.js +19 -16
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +10 -9
- package/lib/doctor/Doctor.d.ts +1 -0
- package/lib/doctor/Doctor.js +59 -45
- package/lib/errorHandlers/index.js +6 -7
- package/lib/errorHandlers/suppressError.js +18 -26
- package/lib/filesystem.d.ts +1 -1
- package/lib/generateSelectors.js +1 -2
- package/lib/hasFeature.d.ts +3 -1
- package/lib/interpolation.d.ts +2 -3
- package/lib/lang.d.ts +2 -3
- package/lib/middleware/__test__/configMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/configMiddleware.test.js +194 -0
- package/lib/middleware/__test__/gitMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/gitMiddleware.test.js +76 -0
- package/lib/middleware/__test__/notificationsMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/notificationsMiddleware.test.js +10 -0
- package/lib/middleware/__test__/requestMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/requestMiddleware.test.js +20 -0
- package/lib/middleware/__test__/utils.test.d.ts +1 -0
- package/lib/middleware/__test__/utils.test.js +53 -0
- package/lib/middleware/__test__/yargsChecksMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +81 -0
- package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
- package/lib/middleware/autoUpdateMiddleware.js +89 -0
- package/lib/middleware/configMiddleware.d.ts +13 -0
- package/lib/middleware/configMiddleware.js +124 -0
- package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
- package/lib/middleware/fireAlarmMiddleware.js +123 -0
- package/lib/middleware/gitMiddleware.d.ts +2 -0
- package/lib/middleware/gitMiddleware.js +14 -0
- package/lib/middleware/notificationsMiddleware.d.ts +1 -0
- package/lib/middleware/notificationsMiddleware.js +38 -0
- package/lib/middleware/requestMiddleware.d.ts +1 -0
- package/lib/middleware/requestMiddleware.js +11 -0
- package/lib/middleware/utils.d.ts +8 -0
- package/lib/middleware/utils.js +17 -0
- package/lib/middleware/yargsChecksMiddleware.d.ts +4 -0
- package/lib/middleware/yargsChecksMiddleware.js +24 -0
- package/lib/npm.d.ts +9 -0
- package/lib/npm.js +36 -0
- package/lib/oauth.js +1 -2
- package/lib/process.js +1 -2
- package/lib/projectProfiles.d.ts +6 -0
- package/lib/projectProfiles.js +65 -0
- package/lib/projects/ProjectLogsManager.d.ts +1 -1
- package/lib/projects/ProjectLogsManager.js +16 -21
- package/lib/projects/buildAndDeploy.js +45 -41
- package/lib/projects/config.d.ts +9 -0
- package/lib/projects/config.js +79 -0
- package/lib/projects/create.js +5 -6
- package/lib/projects/ensureProjectExists.d.ts +11 -0
- package/lib/projects/ensureProjectExists.js +97 -0
- package/lib/projects/localDev/AppDevModeInterface.d.ts +26 -0
- package/lib/projects/localDev/AppDevModeInterface.js +156 -0
- package/lib/{DevServerManager.d.ts → projects/localDev/DevServerManager.d.ts} +1 -1
- package/lib/{DevServerManager.js → projects/localDev/DevServerManager.js} +6 -6
- package/lib/projects/localDev/DevServerManagerV2.d.ts +22 -0
- package/lib/{DevServerManagerV2.js → projects/localDev/DevServerManagerV2.js} +22 -19
- package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
- package/lib/projects/localDev/LocalDevLogger.js +158 -0
- package/lib/{LocalDevManager.d.ts → projects/localDev/LocalDevManager.d.ts} +1 -1
- package/lib/{LocalDevManager.js → projects/localDev/LocalDevManager.js} +57 -83
- package/lib/projects/localDev/LocalDevProcess.d.ts +27 -0
- package/lib/projects/localDev/LocalDevProcess.js +171 -0
- package/lib/projects/localDev/LocalDevState.d.ts +37 -0
- package/lib/projects/localDev/LocalDevState.js +78 -0
- package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
- package/lib/projects/localDev/LocalDevWatcher.js +56 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +17 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.js +92 -0
- package/lib/{localDev.d.ts → projects/localDev/helpers.d.ts} +5 -4
- package/lib/{localDev.js → projects/localDev/helpers.js} +98 -114
- package/lib/projects/ui.d.ts +1 -0
- package/lib/projects/ui.js +15 -0
- package/lib/projects/upload.d.ts +14 -2
- package/lib/projects/upload.js +19 -35
- package/lib/projects/urls.d.ts +1 -0
- package/lib/projects/urls.js +6 -0
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +21 -18
- package/lib/prompts/accountNamePrompt.js +16 -13
- package/lib/prompts/accountsPrompt.js +1 -2
- package/lib/prompts/cmsFieldPrompt.js +1 -2
- package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
- package/lib/prompts/createApiSamplePrompt.js +4 -5
- package/lib/prompts/createFunctionPrompt.js +13 -14
- package/lib/prompts/createModulePrompt.js +8 -9
- package/lib/prompts/createProjectPrompt.d.ts +11 -4
- package/lib/prompts/createProjectPrompt.js +14 -9
- package/lib/prompts/createTemplatePrompt.d.ts +22 -4
- package/lib/prompts/createTemplatePrompt.js +1 -2
- package/lib/prompts/downloadProjectPrompt.js +3 -4
- package/lib/prompts/installAppPrompt.d.ts +1 -0
- package/lib/prompts/installAppPrompt.js +35 -0
- package/lib/prompts/personalAccessKeyPrompt.js +17 -18
- package/lib/prompts/previewPrompt.js +5 -6
- package/lib/prompts/projectAddPrompt.js +4 -5
- package/lib/prompts/projectDevTargetAccountPrompt.js +18 -12
- package/lib/prompts/projectNamePrompt.js +5 -6
- package/lib/prompts/projectsLogsPrompt.js +3 -2
- package/lib/prompts/promptUtils.d.ts +3 -2
- package/lib/prompts/promptUtils.js +2 -1
- package/lib/prompts/sandboxesPrompt.js +5 -6
- package/lib/prompts/secretPrompt.js +2 -3
- package/lib/prompts/selectHubDBTablePrompt.js +11 -8
- package/lib/prompts/selectPublicAppPrompt.js +6 -7
- package/lib/prompts/setAsDefaultAccountPrompt.js +1 -2
- package/lib/prompts/uploadPrompt.js +4 -5
- package/lib/sandboxSync.js +15 -14
- package/lib/sandboxes.js +12 -13
- package/lib/serverlessLogs.js +4 -6
- package/lib/testUtils.d.ts +3 -3
- package/lib/testUtils.js +8 -9
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/boxen.d.ts +5 -0
- package/lib/ui/boxen.js +30 -0
- package/lib/ui/git.js +8 -9
- package/lib/ui/index.d.ts +4 -2
- package/lib/ui/index.js +20 -17
- package/lib/ui/logger.d.ts +10 -0
- package/lib/ui/logger.js +15 -0
- package/lib/ui/serverlessFunctionLogs.js +2 -3
- package/lib/ui/spinniesUtils.d.ts +5 -5
- package/lib/upload.d.ts +1 -1
- package/lib/validation.js +4 -5
- package/lib/yargsUtils.d.ts +5 -1
- package/lib/yargsUtils.js +6 -0
- package/package.json +10 -6
- package/types/Cms.d.ts +30 -0
- package/types/Cms.js +2 -0
- package/types/LocalDev.d.ts +24 -0
- package/types/LocalDev.js +2 -0
- package/types/Yargs.d.ts +12 -11
- package/lib/DevServerManagerV2.d.ts +0 -33
- package/lib/LocalDevManagerV2.d.ts +0 -64
- package/lib/LocalDevManagerV2.js +0 -377
- package/lib/projects/index.d.ts +0 -20
- package/lib/projects/index.js +0 -194
- package/lib/prompts/installPublicAppPrompt.d.ts +0 -1
- package/lib/prompts/installPublicAppPrompt.js +0 -40
package/lib/sandboxSync.js
CHANGED
|
@@ -17,7 +17,6 @@ const index_2 = require("./errorHandlers/index");
|
|
|
17
17
|
const sandboxes_2 = require("./sandboxes");
|
|
18
18
|
const ui_1 = require("./ui");
|
|
19
19
|
const accountTypes_1 = require("./accountTypes");
|
|
20
|
-
const i18nKey = 'lib.sandbox.sync';
|
|
21
20
|
async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, slimInfoMessage = false) {
|
|
22
21
|
const id = (0, getAccountIdentifier_1.getAccountIdentifier)(accountConfig);
|
|
23
22
|
const accountId = (0, config_1.getAccountId)(id);
|
|
@@ -25,7 +24,7 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
25
24
|
const parentAccountId = (0, config_1.getAccountId)(parentId);
|
|
26
25
|
const isDevSandbox = (0, accountTypes_1.isDevelopmentSandbox)(accountConfig);
|
|
27
26
|
if (!accountId || !parentAccountId) {
|
|
28
|
-
throw new Error((0, lang_1.i18n)(
|
|
27
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.sync.failure.invalidUser`, {
|
|
29
28
|
accountName: accountId
|
|
30
29
|
? (0, ui_1.uiAccountDescription)(accountId)
|
|
31
30
|
: id.toString(),
|
|
@@ -48,23 +47,25 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
48
47
|
availableSyncTasks = await (0, sandboxes_1.getAvailableSyncTypes)(parentAccountConfig, accountConfig);
|
|
49
48
|
}
|
|
50
49
|
SpinniesManager_1.default.add('sandboxSync', {
|
|
51
|
-
text: (0, lang_1.i18n)(
|
|
50
|
+
text: (0, lang_1.i18n)(`lib.sandbox.sync.loading.startSync`),
|
|
52
51
|
});
|
|
53
52
|
await (0, sandboxSync_1.initiateSync)(parentAccountId, accountId, availableSyncTasks, accountId);
|
|
54
53
|
const spinniesText = isDevSandbox
|
|
55
|
-
?
|
|
56
|
-
:
|
|
54
|
+
? `lib.sandbox.sync.loading.succeedDevSb`
|
|
55
|
+
: `lib.sandbox.sync.loading.succeed`;
|
|
57
56
|
SpinniesManager_1.default.succeed('sandboxSync', {
|
|
58
|
-
text: (0, lang_1.i18n)(slimInfoMessage
|
|
57
|
+
text: (0, lang_1.i18n)(slimInfoMessage
|
|
58
|
+
? `lib.sandbox.sync.loading.successDevSbInfo`
|
|
59
|
+
: spinniesText, {
|
|
59
60
|
accountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
60
|
-
url: (0, ui_1.uiLink)((0, lang_1.i18n)(
|
|
61
|
+
url: (0, ui_1.uiLink)((0, lang_1.i18n)(`lib.sandbox.sync.info.syncStatusDetailsLinkText`), syncStatusUrl),
|
|
61
62
|
}),
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
65
|
catch (err) {
|
|
65
66
|
(0, index_2.debugError)(err);
|
|
66
67
|
SpinniesManager_1.default.fail('sandboxSync', {
|
|
67
|
-
text: (0, lang_1.i18n)(
|
|
68
|
+
text: (0, lang_1.i18n)(`lib.sandbox.sync.loading.fail`),
|
|
68
69
|
});
|
|
69
70
|
logger_1.logger.log('');
|
|
70
71
|
if ((0, index_1.isSpecifiedError)(err, {
|
|
@@ -72,7 +73,7 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
72
73
|
category: 'BANNED',
|
|
73
74
|
subCategory: 'sandboxes-sync-api.SYNC_NOT_ALLOWED_INVALID_USER',
|
|
74
75
|
})) {
|
|
75
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
76
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.sync.failure.invalidUser`, {
|
|
76
77
|
accountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
77
78
|
parentAccountName: (0, ui_1.uiAccountDescription)(parentAccountId),
|
|
78
79
|
}));
|
|
@@ -82,7 +83,7 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
82
83
|
category: 'RATE_LIMITS',
|
|
83
84
|
subCategory: 'sandboxes-sync-api.SYNC_IN_PROGRESS',
|
|
84
85
|
})) {
|
|
85
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
86
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.sync.failure.syncInProgress`, {
|
|
86
87
|
url: `${baseUrl}/sandboxes-developer/${parentAccountId}/syncactivitylog`,
|
|
87
88
|
}));
|
|
88
89
|
}
|
|
@@ -92,7 +93,7 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
92
93
|
subCategory: 'sandboxes-sync-api.SYNC_NOT_ALLOWED_INVALID_USERID',
|
|
93
94
|
})) {
|
|
94
95
|
// This will only trigger if a user is not a super admin of the target account.
|
|
95
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
96
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.sync.failure.notSuperAdmin`, {
|
|
96
97
|
account: (0, ui_1.uiAccountDescription)(accountId),
|
|
97
98
|
}));
|
|
98
99
|
}
|
|
@@ -101,7 +102,7 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
101
102
|
category: 'OBJECT_NOT_FOUND',
|
|
102
103
|
subCategory: 'SandboxErrors.SANDBOX_NOT_FOUND',
|
|
103
104
|
})) {
|
|
104
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
105
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.sync.failure.objectNotFound`, {
|
|
105
106
|
account: (0, ui_1.uiAccountDescription)(accountId),
|
|
106
107
|
}));
|
|
107
108
|
}
|
|
@@ -122,8 +123,8 @@ async function syncSandbox(accountConfig, parentAccountConfig, env, syncTasks, s
|
|
|
122
123
|
if (!slimInfoMessage) {
|
|
123
124
|
logger_1.logger.log();
|
|
124
125
|
(0, ui_1.uiLine)();
|
|
125
|
-
logger_1.logger.info((0, lang_1.i18n)(
|
|
126
|
-
url: (0, ui_1.uiLink)((0, lang_1.i18n)(
|
|
126
|
+
logger_1.logger.info((0, lang_1.i18n)(`lib.sandbox.sync.info.${isDevSandbox ? 'syncMessageDevSb' : 'syncMessage'}`, {
|
|
127
|
+
url: (0, ui_1.uiLink)((0, lang_1.i18n)(`lib.sandbox.sync.info.syncStatusDetailsLinkText`), syncStatusUrl),
|
|
127
128
|
}));
|
|
128
129
|
(0, ui_1.uiLine)();
|
|
129
130
|
logger_1.logger.log();
|
package/lib/sandboxes.js
CHANGED
|
@@ -17,7 +17,6 @@ const index_1 = require("@hubspot/local-dev-lib/errors/index");
|
|
|
17
17
|
const lang_1 = require("./lang");
|
|
18
18
|
const ui_1 = require("./ui");
|
|
19
19
|
const index_2 = require("./errorHandlers/index");
|
|
20
|
-
const i18nKey = 'lib.sandbox';
|
|
21
20
|
exports.SYNC_TYPES = {
|
|
22
21
|
OBJECT_RECORDS: 'object-records',
|
|
23
22
|
};
|
|
@@ -59,11 +58,11 @@ async function getAvailableSyncTypes(parentAccountConfig, config) {
|
|
|
59
58
|
const id = (0, getAccountIdentifier_1.getAccountIdentifier)(config);
|
|
60
59
|
const portalId = (0, config_1.getAccountId)(id);
|
|
61
60
|
if (!parentPortalId || !portalId) {
|
|
62
|
-
throw new Error((0, lang_1.i18n)(
|
|
61
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.sync.failure.syncTypeFetch`));
|
|
63
62
|
}
|
|
64
63
|
const { data: { results: syncTypes }, } = await (0, sandboxSync_1.fetchTypes)(parentPortalId, portalId);
|
|
65
64
|
if (!syncTypes) {
|
|
66
|
-
throw new Error((0, lang_1.i18n)(
|
|
65
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.sync.failure.syncTypeFetch`));
|
|
67
66
|
}
|
|
68
67
|
return syncTypes.map(t => ({ type: t.name }));
|
|
69
68
|
}
|
|
@@ -71,11 +70,11 @@ async function validateSandboxUsageLimits(accountConfig, sandboxType, env) {
|
|
|
71
70
|
const id = (0, getAccountIdentifier_1.getAccountIdentifier)(accountConfig);
|
|
72
71
|
const accountId = (0, config_1.getAccountId)(id);
|
|
73
72
|
if (!accountId) {
|
|
74
|
-
throw new Error((0, lang_1.i18n)(
|
|
73
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.usageLimitFetch`));
|
|
75
74
|
}
|
|
76
75
|
const { data: { usage }, } = await (0, sandboxHubs_1.getSandboxUsageLimits)(accountId);
|
|
77
76
|
if (!usage) {
|
|
78
|
-
throw new Error((0, lang_1.i18n)(
|
|
77
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.usageLimitFetch`));
|
|
79
78
|
}
|
|
80
79
|
if (sandboxType === config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
|
|
81
80
|
if (usage['DEVELOPER'].available === 0) {
|
|
@@ -83,14 +82,14 @@ async function validateSandboxUsageLimits(accountConfig, sandboxType, env) {
|
|
|
83
82
|
const plural = devSandboxLimit !== 1;
|
|
84
83
|
const hasDevelopmentSandboxes = getHasSandboxesByType(accountConfig, config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX);
|
|
85
84
|
if (hasDevelopmentSandboxes) {
|
|
86
|
-
throw new Error((0, lang_1.i18n)(
|
|
85
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.alreadyInConfig.developer.${plural ? 'other' : 'one'}`, {
|
|
87
86
|
accountName: accountConfig.name || accountId,
|
|
88
87
|
limit: devSandboxLimit,
|
|
89
88
|
}));
|
|
90
89
|
}
|
|
91
90
|
else {
|
|
92
91
|
const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)(env);
|
|
93
|
-
throw new Error((0, lang_1.i18n)(
|
|
92
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.limit.developer.${plural ? 'other' : 'one'}`, {
|
|
94
93
|
accountName: accountConfig.name || accountId,
|
|
95
94
|
limit: devSandboxLimit,
|
|
96
95
|
link: `${baseUrl}/sandboxes-developer/${accountId}/development`,
|
|
@@ -104,14 +103,14 @@ async function validateSandboxUsageLimits(accountConfig, sandboxType, env) {
|
|
|
104
103
|
const plural = standardSandboxLimit !== 1;
|
|
105
104
|
const hasStandardSandboxes = getHasSandboxesByType(accountConfig, config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX);
|
|
106
105
|
if (hasStandardSandboxes) {
|
|
107
|
-
throw new Error((0, lang_1.i18n)(
|
|
106
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.alreadyInConfig.standard.${plural ? 'other' : 'one'}`, {
|
|
108
107
|
accountName: accountConfig.name || accountId,
|
|
109
108
|
limit: standardSandboxLimit,
|
|
110
109
|
}));
|
|
111
110
|
}
|
|
112
111
|
else {
|
|
113
112
|
const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)(env);
|
|
114
|
-
throw new Error((0, lang_1.i18n)(
|
|
113
|
+
throw new Error((0, lang_1.i18n)(`lib.sandbox.create.failure.limit.standard.${plural ? 'other' : 'one'}`, {
|
|
115
114
|
accountName: accountConfig.name || accountId,
|
|
116
115
|
limit: standardSandboxLimit,
|
|
117
116
|
link: `${baseUrl}/sandboxes-developer/${accountId}/standard`,
|
|
@@ -122,12 +121,12 @@ async function validateSandboxUsageLimits(accountConfig, sandboxType, env) {
|
|
|
122
121
|
}
|
|
123
122
|
function handleSandboxCreateError(err, env, name, accountId) {
|
|
124
123
|
if ((0, index_1.isMissingScopeError)(err)) {
|
|
125
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
124
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.create.failure.scopes.message`, {
|
|
126
125
|
accountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
127
126
|
}));
|
|
128
127
|
const websiteOrigin = (0, urls_1.getHubSpotWebsiteOrigin)(env);
|
|
129
128
|
const url = `${websiteOrigin}/personal-access-key/${accountId}`;
|
|
130
|
-
logger_1.logger.info((0, lang_1.i18n)(
|
|
129
|
+
logger_1.logger.info((0, lang_1.i18n)(`lib.sandbox.create.failure.scopes.instructions`, {
|
|
131
130
|
accountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
132
131
|
url,
|
|
133
132
|
}));
|
|
@@ -138,7 +137,7 @@ function handleSandboxCreateError(err, env, name, accountId) {
|
|
|
138
137
|
subCategory: 'SandboxErrors.USER_ACCESS_NOT_ALLOWED',
|
|
139
138
|
})) {
|
|
140
139
|
logger_1.logger.log('');
|
|
141
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
140
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.create.failure.invalidUser`, {
|
|
142
141
|
accountName: name,
|
|
143
142
|
parentAccountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
144
143
|
}));
|
|
@@ -150,7 +149,7 @@ function handleSandboxCreateError(err, env, name, accountId) {
|
|
|
150
149
|
subCategory: 'SandboxErrors.DEVELOPMENT_SANDBOX_ACCESS_NOT_ALLOWED',
|
|
151
150
|
})) {
|
|
152
151
|
logger_1.logger.log('');
|
|
153
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
152
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.sandbox.create.failure.403Gating`, {
|
|
154
153
|
accountName: name,
|
|
155
154
|
parentAccountName: (0, ui_1.uiAccountDescription)(accountId),
|
|
156
155
|
accountId,
|
package/lib/serverlessLogs.js
CHANGED
|
@@ -44,8 +44,6 @@ async function verifyAccessKeyAndUserAccess(accountId, scopeGroup) {
|
|
|
44
44
|
if (!accountConfig) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
// TODO[JOE]: Update this i18n key
|
|
48
|
-
const i18nKey = 'lib.serverless';
|
|
49
47
|
const { authType } = accountConfig;
|
|
50
48
|
if (authType !== auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value) {
|
|
51
49
|
return;
|
|
@@ -56,7 +54,7 @@ async function verifyAccessKeyAndUserAccess(accountId, scopeGroup) {
|
|
|
56
54
|
scopesData = resp.data;
|
|
57
55
|
}
|
|
58
56
|
catch (e) {
|
|
59
|
-
logger_1.logger.debug((0, lang_1.i18n)(
|
|
57
|
+
logger_1.logger.debug((0, lang_1.i18n)(`lib.serverless.verifyAccessKeyAndUserAccess.fetchScopeDataError`, {
|
|
60
58
|
scopeGroup,
|
|
61
59
|
}));
|
|
62
60
|
logger_1.logger.debug(e);
|
|
@@ -64,14 +62,14 @@ async function verifyAccessKeyAndUserAccess(accountId, scopeGroup) {
|
|
|
64
62
|
}
|
|
65
63
|
const { portalScopesInGroup, userScopesInGroup } = scopesData;
|
|
66
64
|
if (!portalScopesInGroup.length) {
|
|
67
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
65
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.serverless.verifyAccessKeyAndUserAccess.portalMissingScope`));
|
|
68
66
|
return;
|
|
69
67
|
}
|
|
70
68
|
if (!portalScopesInGroup.every(s => userScopesInGroup.includes(s))) {
|
|
71
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
69
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.serverless.verifyAccessKeyAndUserAccess.userMissingScope`));
|
|
72
70
|
}
|
|
73
71
|
else {
|
|
74
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
72
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.serverless.verifyAccessKeyAndUserAccess.genericMissingScope`));
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
async function tailLogs(accountId, name, fetchLatest, tailCall, compact = false) {
|
package/lib/testUtils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HubSpotPromise } from '@hubspot/local-dev-lib/types/Http';
|
|
2
2
|
import { HubSpotHttpError } from '@hubspot/local-dev-lib/models/HubSpotHttpError';
|
|
3
3
|
type MockErrorResponse = {
|
|
4
4
|
status: number;
|
|
@@ -9,6 +9,6 @@ type MockErrorResponse = {
|
|
|
9
9
|
subCategory?: string;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export declare
|
|
13
|
-
export declare
|
|
12
|
+
export declare function mockHubSpotHttpResponse<T>(data?: any): HubSpotPromise<T>;
|
|
13
|
+
export declare function mockHubSpotHttpError(message: string, response: MockErrorResponse): HubSpotHttpError;
|
|
14
14
|
export {};
|
package/lib/testUtils.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mockHubSpotHttpResponse = mockHubSpotHttpResponse;
|
|
4
|
+
exports.mockHubSpotHttpError = mockHubSpotHttpError;
|
|
4
5
|
const axios_1 = require("axios");
|
|
5
6
|
const HubSpotHttpError_1 = require("@hubspot/local-dev-lib/models/HubSpotHttpError");
|
|
6
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
|
|
8
|
-
return {
|
|
8
|
+
function mockHubSpotHttpResponse(data) {
|
|
9
|
+
return Promise.resolve({
|
|
9
10
|
data,
|
|
10
11
|
status: 200,
|
|
11
12
|
statusText: 'OK',
|
|
@@ -13,12 +14,10 @@ const mockHubSpotHttpResponse = (data) => {
|
|
|
13
14
|
config: {
|
|
14
15
|
headers: new axios_1.AxiosHeaders(),
|
|
15
16
|
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const mockHubSpotHttpError = (message, response) => {
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function mockHubSpotHttpError(message, response) {
|
|
20
20
|
return new HubSpotHttpError_1.HubSpotHttpError(message, {
|
|
21
21
|
cause: { isAxiosError: true, response },
|
|
22
22
|
});
|
|
23
|
-
}
|
|
24
|
-
exports.mockHubSpotHttpError = mockHubSpotHttpError;
|
|
23
|
+
}
|
|
@@ -22,7 +22,7 @@ declare class SpinniesManager {
|
|
|
22
22
|
succeed(name: string, options?: Partial<SpinnerState>): SpinnerState;
|
|
23
23
|
fail(name: string, options?: Partial<SpinnerState>): SpinnerState;
|
|
24
24
|
remove(name: string): SpinnerState;
|
|
25
|
-
stopAll(newStatus?: typeof VALID_STATUSES[number]): {
|
|
25
|
+
stopAll(newStatus?: (typeof VALID_STATUSES)[number]): {
|
|
26
26
|
[key: string]: SpinnerState;
|
|
27
27
|
};
|
|
28
28
|
private hasAnySpinners;
|
package/lib/ui/boxen.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logInBox = logInBox;
|
|
4
|
+
const logger_1 = require("./logger");
|
|
5
|
+
const index_1 = require("./index");
|
|
6
|
+
const logger_2 = require("@hubspot/local-dev-lib/logger");
|
|
7
|
+
const en_1 = require("../../lang/en");
|
|
8
|
+
const defaultOptions = {
|
|
9
|
+
titleAlignment: 'left',
|
|
10
|
+
borderColor: index_1.UI_COLORS.MARIGOLD,
|
|
11
|
+
margin: 1,
|
|
12
|
+
padding: 1,
|
|
13
|
+
textAlignment: 'left',
|
|
14
|
+
borderStyle: 'round',
|
|
15
|
+
};
|
|
16
|
+
async function logInBox({ contents, options, }) {
|
|
17
|
+
try {
|
|
18
|
+
const boxen = (await import('boxen')).default;
|
|
19
|
+
logger_1.uiLogger.log(boxen(contents, { ...defaultOptions, ...options }));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
logger_2.logger.debug(en_1.lib.boxen.failedToLoad);
|
|
24
|
+
if (options?.title) {
|
|
25
|
+
logger_1.uiLogger.log(options.title);
|
|
26
|
+
logger_1.uiLogger.log('');
|
|
27
|
+
}
|
|
28
|
+
logger_1.uiLogger.log(contents);
|
|
29
|
+
}
|
|
30
|
+
}
|
package/lib/ui/git.js
CHANGED
|
@@ -8,22 +8,21 @@ const os_1 = __importDefault(require("os"));
|
|
|
8
8
|
const gitignore_1 = require("@hubspot/local-dev-lib/gitignore");
|
|
9
9
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
10
10
|
const lang_1 = require("../lang");
|
|
11
|
-
const i18nKey = 'lib.ui.git';
|
|
12
11
|
function checkAndWarnGitInclusion(configPath) {
|
|
13
12
|
try {
|
|
14
13
|
const { inGit, configIgnored } = (0, gitignore_1.checkGitInclusion)(configPath);
|
|
15
14
|
if (!inGit || configIgnored)
|
|
16
15
|
return;
|
|
17
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
18
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
19
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
20
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
21
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
22
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
23
|
-
logger_1.logger.warn((0, lang_1.i18n)(
|
|
16
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.securityIssue`));
|
|
17
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.configFileTracked`));
|
|
18
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.fileName`, { configPath }));
|
|
19
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.remediate`));
|
|
20
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.moveConfig`, { homeDir: os_1.default.homedir() }));
|
|
21
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.addGitignore`, { configPath }));
|
|
22
|
+
logger_1.logger.warn((0, lang_1.i18n)(`lib.ui.git.noRemote`));
|
|
24
23
|
}
|
|
25
24
|
catch (e) {
|
|
26
25
|
// fail silently
|
|
27
|
-
logger_1.logger.debug((0, lang_1.i18n)(
|
|
26
|
+
logger_1.logger.debug((0, lang_1.i18n)(`lib.ui.git.checkFailed`));
|
|
28
27
|
}
|
|
29
28
|
}
|
package/lib/ui/index.d.ts
CHANGED
|
@@ -11,7 +11,9 @@ export declare function uiCommandReference(command: string, withQuotes?: boolean
|
|
|
11
11
|
export declare function uiFeatureHighlight(features: string[], title?: string): void;
|
|
12
12
|
export declare function uiBetaTag(message: string, log?: true): undefined;
|
|
13
13
|
export declare function uiBetaTag(message: string, log: false): string;
|
|
14
|
-
export declare function uiDeprecatedTag(message: string, log?:
|
|
14
|
+
export declare function uiDeprecatedTag(message: string, log?: true): undefined;
|
|
15
|
+
export declare function uiDeprecatedTag(message: string, log: false): string;
|
|
15
16
|
export declare function uiCommandDisabledBanner(command: string, url?: string, message?: string): void;
|
|
16
|
-
export declare function uiDeprecatedDescription(message: string, command: string, url?: string):
|
|
17
|
+
export declare function uiDeprecatedDescription(message: string, command: string, url?: string): undefined;
|
|
17
18
|
export declare function uiDeprecatedMessage(command: string, url?: string, message?: string): void;
|
|
19
|
+
export declare function indent(level: number): string;
|
package/lib/ui/index.js
CHANGED
|
@@ -15,6 +15,7 @@ exports.uiDeprecatedTag = uiDeprecatedTag;
|
|
|
15
15
|
exports.uiCommandDisabledBanner = uiCommandDisabledBanner;
|
|
16
16
|
exports.uiDeprecatedDescription = uiDeprecatedDescription;
|
|
17
17
|
exports.uiDeprecatedMessage = uiDeprecatedMessage;
|
|
18
|
+
exports.indent = indent;
|
|
18
19
|
const chalk_1 = __importDefault(require("chalk"));
|
|
19
20
|
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
20
21
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
@@ -60,7 +61,10 @@ function uiAccountDescription(accountId, bold = true) {
|
|
|
60
61
|
if (account && account.accountType) {
|
|
61
62
|
message = `${account.name} [${HUBSPOT_ACCOUNT_TYPE_STRINGS[account.accountType]}] (${accountId})`;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
else {
|
|
65
|
+
message = accountId ? accountId.toString() : '';
|
|
66
|
+
}
|
|
67
|
+
return bold ? chalk_1.default.bold(message) : message;
|
|
64
68
|
}
|
|
65
69
|
function uiInfoSection(title, logContent) {
|
|
66
70
|
uiLine();
|
|
@@ -78,10 +82,9 @@ function uiCommandReference(command, withQuotes = true) {
|
|
|
78
82
|
: commandReference);
|
|
79
83
|
}
|
|
80
84
|
function uiFeatureHighlight(features, title) {
|
|
81
|
-
|
|
82
|
-
uiInfoSection(title ? title : (0, lang_1.i18n)(`${i18nKey}.defaultTitle`), () => {
|
|
85
|
+
uiInfoSection(title ? title : (0, lang_1.i18n)(`lib.ui.featureHighlight.defaultTitle`), () => {
|
|
83
86
|
features.forEach((c, i) => {
|
|
84
|
-
const featureKey =
|
|
87
|
+
const featureKey = `lib.ui.featureHighlight.featureKeys.${c}`;
|
|
85
88
|
const message = (0, lang_1.i18n)(`${featureKey}.message`, {
|
|
86
89
|
command: uiCommandReference((0, lang_1.i18n)(`${featureKey}.command`)),
|
|
87
90
|
link: uiLink((0, lang_1.i18n)(`${featureKey}.linkText`), (0, lang_1.i18n)(`${featureKey}.url`)),
|
|
@@ -94,9 +97,8 @@ function uiFeatureHighlight(features, title) {
|
|
|
94
97
|
});
|
|
95
98
|
}
|
|
96
99
|
function uiBetaTag(message, log = true) {
|
|
97
|
-
const i18nKey = 'lib.ui';
|
|
98
100
|
const terminalUISupport = getTerminalUISupport();
|
|
99
|
-
const tag = (0, lang_1.i18n)(
|
|
101
|
+
const tag = (0, lang_1.i18n)(`lib.ui.betaTag`);
|
|
100
102
|
const result = `${terminalUISupport.color ? chalk_1.default.hex(exports.UI_COLORS.SORBET)(tag) : tag} ${message}`;
|
|
101
103
|
if (log) {
|
|
102
104
|
logger_1.logger.log(result);
|
|
@@ -105,21 +107,20 @@ function uiBetaTag(message, log = true) {
|
|
|
105
107
|
return result;
|
|
106
108
|
}
|
|
107
109
|
function uiDeprecatedTag(message, log = true) {
|
|
108
|
-
const i18nKey = 'lib.ui';
|
|
109
110
|
const terminalUISupport = getTerminalUISupport();
|
|
110
|
-
const tag = (0, lang_1.i18n)(
|
|
111
|
+
const tag = (0, lang_1.i18n)(`lib.ui.deprecatedTag`);
|
|
111
112
|
const result = `${terminalUISupport.color ? chalk_1.default.yellow(tag) : tag} ${message}`;
|
|
112
113
|
if (log) {
|
|
113
114
|
logger_1.logger.log(result);
|
|
115
|
+
return;
|
|
114
116
|
}
|
|
115
117
|
return result;
|
|
116
118
|
}
|
|
117
119
|
function uiCommandDisabledBanner(command, url, message) {
|
|
118
|
-
const i18nKey = 'lib.ui';
|
|
119
120
|
const tag = message ||
|
|
120
|
-
(0, lang_1.i18n)(
|
|
121
|
+
(0, lang_1.i18n)(`lib.ui.disabledMessage`, {
|
|
121
122
|
command: uiCommandReference(command),
|
|
122
|
-
url: url ? uiLink((0, lang_1.i18n)(
|
|
123
|
+
url: url ? uiLink((0, lang_1.i18n)(`lib.ui.disabledUrlText`), url) : '',
|
|
123
124
|
npmCommand: uiCommandReference('npm i -g @hubspot/cli@latest'),
|
|
124
125
|
});
|
|
125
126
|
logger_1.logger.log();
|
|
@@ -129,22 +130,24 @@ function uiCommandDisabledBanner(command, url, message) {
|
|
|
129
130
|
logger_1.logger.log();
|
|
130
131
|
}
|
|
131
132
|
function uiDeprecatedDescription(message, command, url) {
|
|
132
|
-
const
|
|
133
|
-
const tag = (0, lang_1.i18n)(`${i18nKey}.deprecatedDescription`, {
|
|
133
|
+
const tag = (0, lang_1.i18n)(`lib.ui.deprecatedDescription`, {
|
|
134
134
|
message,
|
|
135
135
|
command: uiCommandReference(command),
|
|
136
|
-
url: url ? uiLink((0, lang_1.i18n)(
|
|
136
|
+
url: url ? uiLink((0, lang_1.i18n)(`lib.ui.deprecatedUrlText`), url) : '',
|
|
137
137
|
});
|
|
138
138
|
return uiDeprecatedTag(tag);
|
|
139
139
|
}
|
|
140
140
|
function uiDeprecatedMessage(command, url, message) {
|
|
141
|
-
const i18nKey = 'lib.ui';
|
|
142
141
|
const tag = message ||
|
|
143
|
-
(0, lang_1.i18n)(
|
|
142
|
+
(0, lang_1.i18n)(`lib.ui.deprecatedMessage`, {
|
|
144
143
|
command: uiCommandReference(command),
|
|
145
|
-
url: url ? uiLink((0, lang_1.i18n)(
|
|
144
|
+
url: url ? uiLink((0, lang_1.i18n)(`lib.ui.deprecatedUrlText`), url) : '',
|
|
146
145
|
});
|
|
147
146
|
logger_1.logger.log();
|
|
148
147
|
uiDeprecatedTag(tag);
|
|
149
148
|
logger_1.logger.log();
|
|
150
149
|
}
|
|
150
|
+
function indent(level) {
|
|
151
|
+
const indentation = ' ';
|
|
152
|
+
return indentation.repeat(level);
|
|
153
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const uiLogger: {
|
|
2
|
+
log: (message: string) => void;
|
|
3
|
+
error: (message: string) => void;
|
|
4
|
+
warn: (message: string) => void;
|
|
5
|
+
success: (message: string) => void;
|
|
6
|
+
info: (message: string) => void;
|
|
7
|
+
debug: (...args: any[]) => void;
|
|
8
|
+
group: (message: string) => void;
|
|
9
|
+
groupEnd: () => void;
|
|
10
|
+
};
|
package/lib/ui/logger.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uiLogger = void 0;
|
|
4
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
5
|
+
// Wrapper around LDL logger to provide type checking
|
|
6
|
+
exports.uiLogger = {
|
|
7
|
+
log: (message) => logger_1.logger.log(message),
|
|
8
|
+
error: (message) => logger_1.logger.error(message),
|
|
9
|
+
warn: (message) => logger_1.logger.warn(message),
|
|
10
|
+
success: (message) => logger_1.logger.success(message),
|
|
11
|
+
info: (message) => logger_1.logger.info(message),
|
|
12
|
+
debug: logger_1.logger.debug,
|
|
13
|
+
group: (message) => logger_1.logger.group(message),
|
|
14
|
+
groupEnd: () => logger_1.logger.groupEnd(),
|
|
15
|
+
};
|
|
@@ -8,7 +8,6 @@ const moment_1 = __importDefault(require("moment"));
|
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
10
10
|
const lang_1 = require("../lang");
|
|
11
|
-
const i18nKey = 'lib.ui.serverlessFunctionLogs';
|
|
12
11
|
const SEPARATOR = ' - ';
|
|
13
12
|
const LOG_STATUS_COLORS = {
|
|
14
13
|
SUCCESS: logger_1.Styles.success,
|
|
@@ -63,7 +62,7 @@ function processLog(log, options) {
|
|
|
63
62
|
return logHandler[log.status](log, options);
|
|
64
63
|
}
|
|
65
64
|
catch (e) {
|
|
66
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
65
|
+
logger_1.logger.error((0, lang_1.i18n)(`lib.ui.serverlessFunctionLogs.unableToProcessLog`, {
|
|
67
66
|
log: JSON.stringify(log),
|
|
68
67
|
}));
|
|
69
68
|
}
|
|
@@ -77,7 +76,7 @@ function isLogsResponse(logsResp) {
|
|
|
77
76
|
function processLogs(logsResp, options) {
|
|
78
77
|
const isLogsResp = isLogsResponse(logsResp);
|
|
79
78
|
if (!logsResp || (isLogsResp && logsResp.results.length === 0)) {
|
|
80
|
-
return (0, lang_1.i18n)(
|
|
79
|
+
return (0, lang_1.i18n)(`lib.ui.serverlessFunctionLogs.noLogsFound`);
|
|
81
80
|
}
|
|
82
81
|
else if (isLogsResp) {
|
|
83
82
|
return logsResp
|
|
@@ -6,14 +6,14 @@ export type Spinner = {
|
|
|
6
6
|
};
|
|
7
7
|
export type SpinnerOptions = {
|
|
8
8
|
text?: string;
|
|
9
|
-
status?: typeof VALID_STATUSES[number];
|
|
9
|
+
status?: (typeof VALID_STATUSES)[number];
|
|
10
10
|
indent?: number;
|
|
11
11
|
spinner?: Partial<Spinner>;
|
|
12
12
|
disableSpins?: boolean;
|
|
13
|
-
color?: typeof VALID_COLORS[number];
|
|
14
|
-
spinnerColor?: typeof VALID_COLORS[number];
|
|
15
|
-
succeedColor?: typeof VALID_COLORS[number];
|
|
16
|
-
failColor?: typeof VALID_COLORS[number];
|
|
13
|
+
color?: (typeof VALID_COLORS)[number];
|
|
14
|
+
spinnerColor?: (typeof VALID_COLORS)[number];
|
|
15
|
+
succeedColor?: (typeof VALID_COLORS)[number];
|
|
16
|
+
failColor?: (typeof VALID_COLORS)[number];
|
|
17
17
|
succeedPrefix?: string;
|
|
18
18
|
failPrefix?: string;
|
|
19
19
|
};
|
package/lib/upload.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getUploadableFileList(src: string, convertFields
|
|
1
|
+
export declare function getUploadableFileList(src: string, convertFields?: boolean): Promise<string[]>;
|
package/lib/validation.js
CHANGED
|
@@ -145,28 +145,27 @@ function validateCmsPublishMode(options) {
|
|
|
145
145
|
return false;
|
|
146
146
|
}
|
|
147
147
|
function fileExists(_path) {
|
|
148
|
-
let isFile;
|
|
149
148
|
try {
|
|
150
149
|
const absoluteSrcPath = path.resolve((0, path_1.getCwd)(), _path);
|
|
151
150
|
if (!absoluteSrcPath)
|
|
152
151
|
return false;
|
|
153
152
|
const stats = fs.statSync(absoluteSrcPath);
|
|
154
|
-
isFile = stats.isFile();
|
|
153
|
+
const isFile = stats.isFile();
|
|
155
154
|
if (!isFile) {
|
|
156
|
-
logger_1.logger.error(`The path "${_path}" is not a path to a file`);
|
|
157
155
|
return false;
|
|
158
156
|
}
|
|
159
157
|
}
|
|
160
158
|
catch (e) {
|
|
161
|
-
logger_1.logger.error(`The path "${_path}" is not a path to a file`);
|
|
162
159
|
return false;
|
|
163
160
|
}
|
|
164
161
|
return true;
|
|
165
162
|
}
|
|
166
163
|
function checkAndConvertToJson(_path) {
|
|
167
164
|
const filePath = (0, path_1.getAbsoluteFilePath)(_path);
|
|
168
|
-
if (!fileExists(filePath))
|
|
165
|
+
if (!fileExists(filePath)) {
|
|
166
|
+
logger_1.logger.error(`The path "${_path}" is not a path to a file`);
|
|
169
167
|
return null;
|
|
168
|
+
}
|
|
170
169
|
if ((0, path_1.getExt)(_path) !== 'json') {
|
|
171
170
|
logger_1.logger.error(`The file "${_path}" must be a valid JSON file`);
|
|
172
171
|
return null;
|
package/lib/yargsUtils.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { Argv } from 'yargs';
|
|
2
2
|
export declare function hasFlag(flag: string, argv?: string[]): boolean;
|
|
3
|
-
export declare function makeYargsBuilder<T>(callback: (yargs: Argv) => Argv<T>, command: string, describe
|
|
3
|
+
export declare function makeYargsBuilder<T>(callback: (yargs: Argv) => Argv<T>, command: string | string[], describe?: string, options?: {
|
|
4
4
|
useGlobalOptions?: boolean;
|
|
5
5
|
useAccountOptions?: boolean;
|
|
6
6
|
useConfigOptions?: boolean;
|
|
7
7
|
useEnvironmentOptions?: boolean;
|
|
8
8
|
useTestingOptions?: boolean;
|
|
9
|
+
useCmsPublishModeOptions?: boolean | {
|
|
10
|
+
read?: boolean;
|
|
11
|
+
write?: boolean;
|
|
12
|
+
};
|
|
9
13
|
}): (yargs: Argv) => Promise<Argv<T>>;
|
package/lib/yargsUtils.js
CHANGED
|
@@ -32,6 +32,12 @@ function makeYargsBuilder(callback, command, describe, options = {}) {
|
|
|
32
32
|
if (options.useTestingOptions) {
|
|
33
33
|
(0, commonOpts_1.addTestingOptions)(yargs);
|
|
34
34
|
}
|
|
35
|
+
if (options.useCmsPublishModeOptions) {
|
|
36
|
+
const opts = typeof options.useCmsPublishModeOptions === 'object'
|
|
37
|
+
? options.useCmsPublishModeOptions
|
|
38
|
+
: { write: true };
|
|
39
|
+
(0, commonOpts_1.addCmsPublishModeOptions)(yargs, opts);
|
|
40
|
+
}
|
|
35
41
|
const result = callback(yargs);
|
|
36
42
|
// Must go last to pick up available options
|
|
37
43
|
await (0, commonOpts_1.addCustomHelpOutput)(result, command, describe);
|