@hubspot/cli 7.0.0-experimental.1 → 7.0.0-experimental.2
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.js +97 -15
- package/bin/hs +2 -0
- package/bin/hscms +2 -0
- package/bin/silenceErrors.d.ts +2 -0
- package/bin/silenceErrors.js +12 -0
- package/commands/{accounts → account}/clean.js +10 -11
- package/commands/{accounts → account}/info.js +10 -16
- package/commands/{accounts → account}/list.js +16 -16
- package/commands/{accounts → account}/remove.js +12 -15
- package/commands/{accounts → account}/rename.js +4 -7
- package/commands/{accounts → account}/use.js +8 -14
- package/commands/account.js +26 -0
- package/commands/auth.js +30 -24
- package/commands/cms/getReactModule.js +70 -0
- package/commands/cms/lighthouseScore.js +19 -21
- package/commands/cms.js +4 -3
- package/commands/completion.js +22 -0
- package/commands/config/set.js +22 -24
- package/commands/config.js +2 -2
- package/commands/create.js +6 -3
- package/commands/customObject/create.js +19 -15
- package/commands/customObject/schema/create.js +15 -16
- package/commands/customObject/schema/delete.js +29 -11
- package/commands/customObject/schema/fetch-all.js +14 -11
- package/commands/customObject/schema/fetch.js +22 -14
- package/commands/customObject/schema/list.js +3 -6
- package/commands/customObject/schema/update.js +28 -18
- package/commands/customObject/schema.js +1 -1
- package/commands/customObject.js +3 -4
- package/commands/doctor.js +4 -2
- package/commands/feedback.js +2 -0
- package/commands/fetch.js +13 -13
- package/commands/filemanager/fetch.js +6 -7
- package/commands/filemanager/upload.js +10 -12
- package/commands/filemanager.js +1 -8
- package/commands/{functions → function}/deploy.js +13 -13
- package/commands/{functions → function}/list.js +7 -9
- package/commands/{functions → function}/server.js +5 -8
- package/commands/function.js +16 -0
- package/commands/hubdb/clear.js +14 -10
- package/commands/hubdb/create.js +37 -13
- package/commands/hubdb/delete.js +31 -10
- package/commands/hubdb/fetch.js +14 -9
- package/commands/hubdb.js +2 -3
- package/commands/init.js +37 -14
- package/commands/lint.js +6 -7
- package/commands/list.js +5 -7
- package/commands/logs.js +24 -15
- package/commands/module/marketplace-validate.js +6 -9
- package/commands/module.js +2 -1
- package/commands/mv.js +11 -13
- package/commands/open.js +11 -10
- package/commands/project/add.js +2 -5
- package/commands/project/cloneApp.js +28 -32
- package/commands/project/create.js +8 -10
- package/commands/project/deploy.js +19 -16
- package/commands/project/dev.js +17 -18
- package/commands/project/download.js +18 -15
- package/commands/project/listBuilds.js +36 -32
- package/commands/project/logs.js +6 -8
- package/commands/project/migrateApp.js +27 -27
- package/commands/project/open.js +9 -11
- package/commands/project/upload.js +30 -32
- package/commands/project/watch.js +17 -24
- package/commands/project.js +3 -4
- package/commands/remove.js +14 -13
- package/commands/sandbox/create.js +12 -15
- package/commands/sandbox/delete.js +19 -20
- package/commands/sandbox.js +4 -8
- package/commands/{secrets → secret}/addSecret.js +25 -12
- package/commands/secret/deleteSecret.js +69 -0
- package/commands/{secrets → secret}/listSecrets.js +7 -9
- package/commands/{secrets → secret}/updateSecret.js +21 -13
- package/commands/secret.js +22 -0
- package/commands/theme/generate-selectors.js +8 -8
- package/commands/theme/marketplace-validate.js +10 -13
- package/commands/theme/preview.js +7 -10
- package/commands/theme.js +3 -1
- package/commands/upload.js +32 -26
- package/commands/watch.js +19 -20
- package/lang/en.lyaml +200 -126
- package/lib/DevServerManager.js +1 -1
- package/lib/LocalDevManager.js +3 -3
- package/lib/buildAccount.js +5 -11
- package/lib/commonOpts.d.ts +15 -6
- package/lib/commonOpts.js +53 -38
- package/lib/configOptions.d.ts +13 -1
- package/lib/configOptions.js +54 -57
- package/lib/constants.d.ts +1 -4
- package/lib/developerTestAccounts.d.ts +5 -1
- package/lib/developerTestAccounts.js +45 -39
- package/lib/doctor/DiagnosticInfoBuilder.js +8 -4
- package/lib/doctor/Doctor.js +4 -3
- package/lib/generateSelectors.d.ts +19 -0
- package/lib/generateSelectors.js +23 -23
- package/lib/localDev.js +2 -1
- package/lib/marketplaceValidate.d.ts +6 -1
- package/lib/marketplaceValidate.js +76 -77
- package/lib/oauth.d.ts +2 -1
- package/lib/oauth.js +49 -37
- package/lib/polling.d.ts +8 -0
- package/lib/polling.js +9 -12
- package/lib/projects/ProjectLogsManager.d.ts +20 -0
- package/lib/projects/ProjectLogsManager.js +105 -0
- package/lib/projects/buildAndDeploy.d.ts +16 -0
- package/lib/projects/buildAndDeploy.js +342 -0
- package/lib/projects/index.d.ts +24 -0
- package/lib/projects/index.js +256 -0
- package/lib/projects/structure.d.ts +78 -0
- package/lib/projects/structure.js +151 -0
- package/lib/projects/upload.d.ts +8 -0
- package/lib/projects/upload.js +107 -0
- package/lib/projects/urls.d.ts +4 -0
- package/lib/projects/urls.js +27 -0
- package/lib/{projectsWatch.js → projects/watch.js} +3 -3
- package/lib/prompts/accountNamePrompt.d.ts +11 -0
- package/lib/prompts/accountNamePrompt.js +45 -46
- package/lib/prompts/accountsPrompt.d.ts +1 -1
- package/lib/prompts/accountsPrompt.js +21 -19
- package/lib/prompts/cmsFieldPrompt.d.ts +1 -1
- package/lib/prompts/cmsFieldPrompt.js +23 -24
- package/lib/prompts/createApiSamplePrompt.d.ts +17 -0
- package/lib/prompts/createApiSamplePrompt.js +47 -44
- package/lib/prompts/createFunctionPrompt.d.ts +7 -0
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.d.ts +8 -0
- package/lib/prompts/createModulePrompt.js +29 -17
- package/lib/prompts/createProjectPrompt.d.ts +13 -0
- package/lib/prompts/createProjectPrompt.js +48 -49
- package/lib/prompts/createTemplatePrompt.d.ts +8 -0
- package/lib/prompts/createTemplatePrompt.js +15 -17
- package/lib/prompts/downloadProjectPrompt.d.ts +8 -0
- package/lib/prompts/downloadProjectPrompt.js +25 -23
- package/lib/prompts/installPublicAppPrompt.d.ts +1 -1
- package/lib/prompts/installPublicAppPrompt.js +21 -19
- package/lib/prompts/personalAccessKeyPrompt.d.ts +28 -0
- package/lib/prompts/personalAccessKeyPrompt.js +46 -52
- package/lib/prompts/previewPrompt.d.ts +14 -0
- package/lib/prompts/previewPrompt.js +24 -24
- package/lib/prompts/projectAddPrompt.d.ts +9 -0
- package/lib/prompts/projectAddPrompt.js +11 -14
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +87 -69
- package/lib/prompts/projectsLogsPrompt.d.ts +11 -0
- package/lib/prompts/projectsLogsPrompt.js +8 -11
- package/lib/prompts/promptUtils.d.ts +7 -6
- package/lib/prompts/promptUtils.js +21 -8
- package/lib/prompts/sandboxesPrompt.d.ts +8 -0
- package/lib/prompts/sandboxesPrompt.js +43 -45
- package/lib/prompts/secretPrompt.d.ts +12 -0
- package/lib/prompts/secretPrompt.js +32 -19
- package/lib/prompts/selectHubDBTablePrompt.d.ts +12 -0
- package/lib/prompts/selectHubDBTablePrompt.js +69 -0
- package/lib/prompts/selectPublicAppPrompt.d.ts +8 -0
- package/lib/prompts/selectPublicAppPrompt.js +28 -27
- package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -1
- package/lib/prompts/setAsDefaultAccountPrompt.js +12 -14
- package/lib/prompts/uploadPrompt.d.ts +8 -0
- package/lib/prompts/uploadPrompt.js +18 -18
- package/lib/sandboxSync.js +5 -2
- package/lib/sandboxes.js +12 -7
- package/lib/ui/index.d.ts +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/usageTracking.d.ts +21 -2
- package/lib/usageTracking.js +53 -81
- package/lib/validation.d.ts +11 -1
- package/lib/validation.js +98 -91
- package/package.json +13 -7
- package/types/Projects.d.ts +43 -0
- package/types/Projects.js +2 -0
- package/types/Prompts.d.ts +25 -0
- package/types/Prompts.js +2 -0
- package/commands/accounts.js +0 -30
- package/commands/cms/reactModules.js +0 -60
- package/commands/functions.js +0 -24
- package/commands/secrets/deleteSecret.js +0 -46
- package/commands/secrets.js +0 -23
- package/lib/ProjectLogsManager.js +0 -91
- package/lib/projectStructure.js +0 -116
- package/lib/projects.d.ts +0 -4
- package/lib/projects.js +0 -681
- package/lib/projectsWatch.d.ts +0 -1
- package/lib/prompts/cleanUploadPrompt.d.ts +0 -1
- package/lib/prompts/cleanUploadPrompt.js +0 -20
- /package/commands/{accounts → account}/clean.d.ts +0 -0
- /package/commands/{accounts → account}/info.d.ts +0 -0
- /package/commands/{accounts → account}/list.d.ts +0 -0
- /package/commands/{accounts → account}/remove.d.ts +0 -0
- /package/commands/{accounts → account}/rename.d.ts +0 -0
- /package/commands/{accounts → account}/use.d.ts +0 -0
- /package/commands/{accounts.d.ts → account.d.ts} +0 -0
- /package/commands/cms/{reactModules.d.ts → getReactModule.d.ts} +0 -0
- /package/commands/{functions.d.ts → completion.d.ts} +0 -0
- /package/commands/{functions/list.d.ts → function/deploy.d.ts} +0 -0
- /package/commands/{functions/server.d.ts → function/list.d.ts} +0 -0
- /package/commands/{secrets.d.ts → function/server.d.ts} +0 -0
- /package/commands/{functions/deploy.d.ts → function.d.ts} +0 -0
- /package/commands/{secrets/deleteSecret.d.ts → secret/addSecret.d.ts} +0 -0
- /package/commands/{secrets/listSecrets.d.ts → secret/deleteSecret.d.ts} +0 -0
- /package/commands/{secrets/updateSecret.d.ts → secret/listSecrets.d.ts} +0 -0
- /package/{lib/ProjectLogsManager.d.ts → commands/secret/updateSecret.d.ts} +0 -0
- /package/commands/{secrets/addSecret.d.ts → secret.d.ts} +0 -0
- /package/lib/{projectStructure.d.ts → projects/watch.d.ts} +0 -0
|
@@ -1 +1,18 @@
|
|
|
1
|
+
type SampleChoice = {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
id: string;
|
|
5
|
+
languages: string[];
|
|
6
|
+
};
|
|
7
|
+
type SampleConfig = {
|
|
8
|
+
samples: SampleChoice[];
|
|
9
|
+
};
|
|
10
|
+
type SampleTypePromptResponse = {
|
|
11
|
+
sampleType?: string;
|
|
12
|
+
};
|
|
13
|
+
type LanguagePromptResponse = {
|
|
14
|
+
sampleLanguage?: string;
|
|
15
|
+
};
|
|
16
|
+
type CreateApiSamplePromptResponse = SampleTypePromptResponse & LanguagePromptResponse;
|
|
17
|
+
export declare function createApiSamplePrompt(samplesConfig: SampleConfig): Promise<CreateApiSamplePromptResponse>;
|
|
1
18
|
export {};
|
|
@@ -1,50 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.createApiSamplePrompt = createApiSamplePrompt;
|
|
4
|
+
const promptUtils_1 = require("./promptUtils");
|
|
5
|
+
const lang_1 = require("../lang");
|
|
6
6
|
const i18nKey = 'lib.prompts.createApiSamplePrompt';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
7
|
+
function getSampleTypesPrompt(choices) {
|
|
8
|
+
return {
|
|
9
|
+
type: 'rawlist',
|
|
10
|
+
name: 'sampleType',
|
|
11
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectApiSampleApp`),
|
|
12
|
+
choices: choices.map(choice => ({
|
|
13
|
+
name: `${choice.name} - ${choice.description}`,
|
|
14
|
+
value: choice.id,
|
|
15
|
+
})),
|
|
16
|
+
validate: function (input) {
|
|
17
|
+
return new Promise(function (resolve, reject) {
|
|
18
|
+
if (input && input.length > 0) {
|
|
19
|
+
resolve(true);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
reject((0, lang_1.i18n)(`${i18nKey}.errors.apiSampleAppRequired`));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function getLanguagesPrompt(choices) {
|
|
29
|
+
return {
|
|
30
|
+
type: 'rawlist',
|
|
31
|
+
name: 'sampleLanguage',
|
|
32
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectLanguage`),
|
|
33
|
+
choices: choices.map(choice => ({
|
|
34
|
+
name: choice,
|
|
35
|
+
value: choice,
|
|
36
|
+
})),
|
|
37
|
+
validate: function (input) {
|
|
38
|
+
return new Promise(function (resolve, reject) {
|
|
39
|
+
if (input && input.length > 0) {
|
|
40
|
+
resolve(true);
|
|
41
|
+
}
|
|
42
|
+
reject((0, lang_1.i18n)(`${i18nKey}.errors.languageRequired`));
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
async function createApiSamplePrompt(samplesConfig) {
|
|
42
48
|
try {
|
|
43
49
|
const { samples } = samplesConfig;
|
|
44
|
-
const sampleTypeAnswer = await promptUser(getSampleTypesPrompt(samples));
|
|
50
|
+
const sampleTypeAnswer = await (0, promptUtils_1.promptUser)(getSampleTypesPrompt(samples));
|
|
45
51
|
const chosenSample = samples.find(sample => sample.id === sampleTypeAnswer.sampleType);
|
|
46
52
|
const { languages } = chosenSample;
|
|
47
|
-
const languagesAnswer = await promptUser(getLanguagesPrompt(languages));
|
|
53
|
+
const languagesAnswer = await (0, promptUtils_1.promptUser)(getLanguagesPrompt(languages));
|
|
48
54
|
return {
|
|
49
55
|
...sampleTypeAnswer,
|
|
50
56
|
...languagesAnswer,
|
|
@@ -53,7 +59,4 @@ const createApiSamplePrompt = async (samplesConfig) => {
|
|
|
53
59
|
catch (e) {
|
|
54
60
|
return {};
|
|
55
61
|
}
|
|
56
|
-
}
|
|
57
|
-
module.exports = {
|
|
58
|
-
createApiSamplePrompt,
|
|
59
|
-
};
|
|
62
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.createFunctionPrompt = createFunctionPrompt;
|
|
4
|
+
const promptUtils_1 = require("./promptUtils");
|
|
5
|
+
const lang_1 = require("../lang");
|
|
6
6
|
const i18nKey = 'lib.prompts.createFunctionPrompt';
|
|
7
7
|
const FUNCTIONS_FOLDER_PROMPT = {
|
|
8
8
|
name: 'functionsFolder',
|
|
9
|
-
message: i18n(`${i18nKey}.enterFolder`),
|
|
9
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterFolder`),
|
|
10
10
|
validate(val) {
|
|
11
11
|
if (typeof val !== 'string') {
|
|
12
|
-
return i18n(`${i18nKey}.errors.invalid`);
|
|
12
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
|
|
13
13
|
}
|
|
14
14
|
else if (!val.length) {
|
|
15
|
-
return i18n(`${i18nKey}.errors.blank`);
|
|
15
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
|
|
16
16
|
}
|
|
17
17
|
else if (val.indexOf(' ') >= 0) {
|
|
18
|
-
return i18n(`${i18nKey}.errors.space`);
|
|
18
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
|
|
19
19
|
}
|
|
20
20
|
return true;
|
|
21
21
|
},
|
|
22
22
|
};
|
|
23
23
|
const FUNCTION_FILENAME_PROMPT = {
|
|
24
24
|
name: 'filename',
|
|
25
|
-
message: i18n(`${i18nKey}.enterFilename`),
|
|
25
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterFilename`),
|
|
26
26
|
validate(val) {
|
|
27
27
|
if (typeof val !== 'string') {
|
|
28
|
-
return i18n(`${i18nKey}.errors.invalid`);
|
|
28
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
|
|
29
29
|
}
|
|
30
30
|
else if (!val.length) {
|
|
31
|
-
return i18n(`${i18nKey}.errors.blank`);
|
|
31
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
|
|
32
32
|
}
|
|
33
33
|
else if (val.indexOf(' ') >= 0) {
|
|
34
|
-
return i18n(`${i18nKey}.errors.space`);
|
|
34
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
|
|
35
35
|
}
|
|
36
36
|
return true;
|
|
37
37
|
},
|
|
@@ -39,34 +39,31 @@ const FUNCTION_FILENAME_PROMPT = {
|
|
|
39
39
|
const ENDPOINT_METHOD_PROMPT = {
|
|
40
40
|
type: 'list',
|
|
41
41
|
name: 'endpointMethod',
|
|
42
|
-
message: i18n(`${i18nKey}.selectEndpointMethod`),
|
|
42
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectEndpointMethod`),
|
|
43
43
|
default: 'GET',
|
|
44
44
|
choices: ['DELETE', 'GET', 'PATCH', 'POST', 'PUT'],
|
|
45
45
|
};
|
|
46
46
|
const ENDPOINT_PATH_PROMPT = {
|
|
47
47
|
name: 'endpointPath',
|
|
48
|
-
message: i18n(`${i18nKey}.enterEndpointPath`),
|
|
48
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterEndpointPath`),
|
|
49
49
|
validate(val) {
|
|
50
50
|
if (typeof val !== 'string') {
|
|
51
|
-
return i18n(`${i18nKey}.errors.invalid`);
|
|
51
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
|
|
52
52
|
}
|
|
53
53
|
else if (!val.length) {
|
|
54
|
-
return i18n(`${i18nKey}.errors.blank`);
|
|
54
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
|
|
55
55
|
}
|
|
56
56
|
else if (val.indexOf(' ') >= 0) {
|
|
57
|
-
return i18n(`${i18nKey}.errors.space`);
|
|
57
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
|
|
58
58
|
}
|
|
59
59
|
return true;
|
|
60
60
|
},
|
|
61
61
|
};
|
|
62
62
|
function createFunctionPrompt() {
|
|
63
|
-
return promptUser([
|
|
63
|
+
return (0, promptUtils_1.promptUser)([
|
|
64
64
|
FUNCTIONS_FOLDER_PROMPT,
|
|
65
65
|
FUNCTION_FILENAME_PROMPT,
|
|
66
66
|
ENDPOINT_METHOD_PROMPT,
|
|
67
67
|
ENDPOINT_PATH_PROMPT,
|
|
68
68
|
]);
|
|
69
69
|
}
|
|
70
|
-
module.exports = {
|
|
71
|
-
createFunctionPrompt,
|
|
72
|
-
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.createModulePrompt = createModulePrompt;
|
|
4
|
+
const promptUtils_1 = require("./promptUtils");
|
|
5
|
+
const lang_1 = require("../lang");
|
|
6
6
|
const i18nKey = 'lib.prompts.createModulePrompt';
|
|
7
7
|
const MODULE_LABEL_PROMPT = {
|
|
8
8
|
name: 'moduleLabel',
|
|
9
|
-
message: i18n(`${i18nKey}.enterLabel`),
|
|
9
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterLabel`),
|
|
10
10
|
validate(val) {
|
|
11
11
|
if (typeof val !== 'string') {
|
|
12
|
-
return i18n(`${i18nKey}.errors.invalidLabel`);
|
|
12
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalidLabel`);
|
|
13
13
|
}
|
|
14
14
|
else if (!val.length) {
|
|
15
|
-
return i18n(`${i18nKey}.errors.labelRequired`);
|
|
15
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.labelRequired`);
|
|
16
16
|
}
|
|
17
17
|
return true;
|
|
18
18
|
},
|
|
@@ -20,43 +20,55 @@ const MODULE_LABEL_PROMPT = {
|
|
|
20
20
|
const REACT_TYPE_PROMPT = {
|
|
21
21
|
type: 'confirm',
|
|
22
22
|
name: 'reactType',
|
|
23
|
-
message: i18n(`${i18nKey}.selectReactType`),
|
|
23
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectReactType`),
|
|
24
24
|
default: false,
|
|
25
25
|
};
|
|
26
26
|
const CONTENT_TYPES_PROMPT = {
|
|
27
27
|
type: 'checkbox',
|
|
28
28
|
name: 'contentTypes',
|
|
29
|
-
message: i18n(`${i18nKey}.selectContentType`),
|
|
30
|
-
default: ['
|
|
29
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectContentType`),
|
|
30
|
+
default: ['ANY'],
|
|
31
31
|
choices: [
|
|
32
|
-
{ name: '
|
|
32
|
+
{ name: 'Any', value: 'ANY' },
|
|
33
|
+
{ name: 'Landing page', value: 'LANDING_PAGE' },
|
|
34
|
+
{ name: 'Site page', value: 'SITE_PAGE' },
|
|
33
35
|
{ name: 'Blog post', value: 'BLOG_POST' },
|
|
34
36
|
{ name: 'Blog listing', value: 'BLOG_LISTING' },
|
|
35
37
|
{ name: 'Email', value: 'EMAIL' },
|
|
38
|
+
{ name: 'Knowledge base', value: 'KNOWLEDGE_BASE' },
|
|
39
|
+
{ name: 'Quote template', value: 'QUOTE_TEMPLATE' },
|
|
40
|
+
{ name: 'Customer portal', value: 'CUSTOMER_PORTAL' },
|
|
41
|
+
{ name: 'Web interactive', value: 'WEB_INTERACTIVE' },
|
|
42
|
+
{ name: 'Subscription', value: 'SUBSCRIPTION' },
|
|
43
|
+
{ name: 'Membership', value: 'MEMBERSHIP' },
|
|
36
44
|
],
|
|
37
|
-
validate: input => {
|
|
45
|
+
validate: (input) => {
|
|
38
46
|
return new Promise(function (resolve, reject) {
|
|
39
47
|
if (input.length > 0) {
|
|
40
48
|
resolve(true);
|
|
41
49
|
}
|
|
42
|
-
reject(i18n(`${i18nKey}.errors.contentTypeRequired`));
|
|
50
|
+
reject((0, lang_1.i18n)(`${i18nKey}.errors.contentTypeRequired`));
|
|
43
51
|
});
|
|
44
52
|
},
|
|
45
53
|
};
|
|
46
54
|
const GLOBAL_PROMPT = {
|
|
47
55
|
type: 'confirm',
|
|
48
56
|
name: 'global',
|
|
49
|
-
message: i18n(`${i18nKey}.confirmGlobal`),
|
|
57
|
+
message: (0, lang_1.i18n)(`${i18nKey}.confirmGlobal`),
|
|
50
58
|
default: false,
|
|
51
59
|
};
|
|
60
|
+
const AVAILABLE_FOR_NEW_CONTENT = {
|
|
61
|
+
type: 'confirm',
|
|
62
|
+
name: 'availableForNewContent',
|
|
63
|
+
message: (0, lang_1.i18n)(`${i18nKey}.availableForNewContent`),
|
|
64
|
+
default: true,
|
|
65
|
+
};
|
|
52
66
|
function createModulePrompt() {
|
|
53
|
-
return promptUser([
|
|
67
|
+
return (0, promptUtils_1.promptUser)([
|
|
54
68
|
MODULE_LABEL_PROMPT,
|
|
55
69
|
REACT_TYPE_PROMPT,
|
|
56
70
|
CONTENT_TYPES_PROMPT,
|
|
57
71
|
GLOBAL_PROMPT,
|
|
72
|
+
AVAILABLE_FOR_NEW_CONTENT,
|
|
58
73
|
]);
|
|
59
74
|
}
|
|
60
|
-
module.exports = {
|
|
61
|
-
createModulePrompt,
|
|
62
|
-
};
|
|
@@ -1 +1,14 @@
|
|
|
1
|
+
import { RepoPath } from '@hubspot/local-dev-lib/types/Github';
|
|
2
|
+
import { ProjectTemplate } from '../../types/Projects';
|
|
3
|
+
type CreateProjectPromptResponse = {
|
|
4
|
+
name: string;
|
|
5
|
+
dest: string;
|
|
6
|
+
template: ProjectTemplate;
|
|
7
|
+
};
|
|
8
|
+
export declare function createProjectPrompt(githubRef: string, promptOptions: {
|
|
9
|
+
name: string;
|
|
10
|
+
dest: string;
|
|
11
|
+
template: string;
|
|
12
|
+
templateSource: RepoPath;
|
|
13
|
+
}, skipTemplatePrompt?: boolean): Promise<CreateProjectPromptResponse>;
|
|
1
14
|
export {};
|
|
@@ -1,41 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const { HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, DEFAULT_PROJECT_TEMPLATE_BRANCH, } = require('../constants');
|
|
6
|
+
exports.createProjectPrompt = createProjectPrompt;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const path_2 = require("@hubspot/local-dev-lib/path");
|
|
10
|
+
const github_1 = require("@hubspot/local-dev-lib/github");
|
|
11
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
const promptUtils_1 = require("./promptUtils");
|
|
14
|
+
const lang_1 = require("../lang");
|
|
15
|
+
const exitCodes_1 = require("../enums/exitCodes");
|
|
14
16
|
const i18nKey = 'lib.prompts.createProjectPrompt';
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
return projectList.every(config =>
|
|
18
|
-
}
|
|
19
|
-
|
|
17
|
+
const PROJECT_TEMPLATE_PROPERTIES = ['name', 'label', 'path', 'insertPath'];
|
|
18
|
+
function hasAllProperties(projectList) {
|
|
19
|
+
return projectList.every(config => PROJECT_TEMPLATE_PROPERTIES.every(p => Object.prototype.hasOwnProperty.call(config, p)));
|
|
20
|
+
}
|
|
21
|
+
async function createTemplateOptions(templateSource, githubRef) {
|
|
20
22
|
const hasCustomTemplateSource = Boolean(templateSource);
|
|
21
23
|
const branch = hasCustomTemplateSource
|
|
22
|
-
? DEFAULT_PROJECT_TEMPLATE_BRANCH
|
|
24
|
+
? constants_1.DEFAULT_PROJECT_TEMPLATE_BRANCH
|
|
23
25
|
: githubRef;
|
|
24
|
-
const config = await fetchFileFromRepository(templateSource || HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, 'config.json', branch);
|
|
25
|
-
if (!config || !config[PROJECT_COMPONENT_TYPES.PROJECTS]) {
|
|
26
|
-
logger.error(i18n(`${i18nKey}.errors.noProjectsInConfig`));
|
|
27
|
-
process.exit(EXIT_CODES.ERROR);
|
|
26
|
+
const config = await (0, github_1.fetchFileFromRepository)(templateSource || constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, 'config.json', branch);
|
|
27
|
+
if (!config || !config[constants_1.PROJECT_COMPONENT_TYPES.PROJECTS]) {
|
|
28
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noProjectsInConfig`));
|
|
29
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
28
30
|
}
|
|
29
|
-
if (!hasAllProperties(config[PROJECT_COMPONENT_TYPES.PROJECTS])) {
|
|
30
|
-
logger.error(i18n(`${i18nKey}.errors.missingPropertiesInConfig`));
|
|
31
|
-
process.exit(EXIT_CODES.ERROR);
|
|
31
|
+
if (!hasAllProperties(config[constants_1.PROJECT_COMPONENT_TYPES.PROJECTS])) {
|
|
32
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.missingPropertiesInConfig`));
|
|
33
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
32
34
|
}
|
|
33
|
-
return config[PROJECT_COMPONENT_TYPES.PROJECTS];
|
|
34
|
-
}
|
|
35
|
+
return config[constants_1.PROJECT_COMPONENT_TYPES.PROJECTS];
|
|
36
|
+
}
|
|
35
37
|
function findTemplate(projectTemplates, templateNameOrLabel) {
|
|
36
38
|
return projectTemplates.find(t => t.name === templateNameOrLabel || t.label === templateNameOrLabel);
|
|
37
39
|
}
|
|
38
|
-
|
|
40
|
+
async function createProjectPrompt(githubRef, promptOptions, skipTemplatePrompt = false) {
|
|
39
41
|
let projectTemplates = [];
|
|
40
42
|
let selectedTemplate;
|
|
41
43
|
if (!skipTemplatePrompt) {
|
|
@@ -44,40 +46,40 @@ const createProjectPrompt = async (githubRef, promptOptions = {}, skipTemplatePr
|
|
|
44
46
|
promptOptions.template &&
|
|
45
47
|
findTemplate(projectTemplates, promptOptions.template);
|
|
46
48
|
}
|
|
47
|
-
const result = await promptUser([
|
|
49
|
+
const result = await (0, promptUtils_1.promptUser)([
|
|
48
50
|
{
|
|
49
51
|
name: 'name',
|
|
50
|
-
message: i18n(`${i18nKey}.enterName`),
|
|
52
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterName`),
|
|
51
53
|
when: !promptOptions.name,
|
|
52
|
-
validate: input => {
|
|
54
|
+
validate: (input) => {
|
|
53
55
|
if (!input) {
|
|
54
|
-
return i18n(`${i18nKey}.errors.nameRequired`);
|
|
56
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.nameRequired`);
|
|
55
57
|
}
|
|
56
58
|
return true;
|
|
57
59
|
},
|
|
58
60
|
},
|
|
59
61
|
{
|
|
60
|
-
name: '
|
|
61
|
-
message: i18n(`${i18nKey}.
|
|
62
|
-
when: !promptOptions.
|
|
62
|
+
name: 'dest',
|
|
63
|
+
message: (0, lang_1.i18n)(`${i18nKey}.enterDest`),
|
|
64
|
+
when: !promptOptions.dest,
|
|
63
65
|
default: answers => {
|
|
64
|
-
const projectName = sanitizeFileName(answers.name || promptOptions.name);
|
|
65
|
-
return
|
|
66
|
+
const projectName = (0, path_2.sanitizeFileName)(answers.name || promptOptions.name);
|
|
67
|
+
return path_1.default.resolve((0, path_2.getCwd)(), projectName);
|
|
66
68
|
},
|
|
67
|
-
validate: input => {
|
|
69
|
+
validate: (input) => {
|
|
68
70
|
if (!input) {
|
|
69
|
-
return i18n(`${i18nKey}.errors.
|
|
71
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.destRequired`);
|
|
70
72
|
}
|
|
71
|
-
if (
|
|
72
|
-
return i18n(`${i18nKey}.errors.
|
|
73
|
+
if (fs_1.default.existsSync(input)) {
|
|
74
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalidDest`);
|
|
73
75
|
}
|
|
74
|
-
if (!isValidPath(input)) {
|
|
75
|
-
return i18n(`${i18nKey}.errors.invalidCharacters`);
|
|
76
|
+
if (!(0, path_2.isValidPath)(input)) {
|
|
77
|
+
return (0, lang_1.i18n)(`${i18nKey}.errors.invalidCharacters`);
|
|
76
78
|
}
|
|
77
79
|
return true;
|
|
78
80
|
},
|
|
79
81
|
filter: input => {
|
|
80
|
-
return untildify(input);
|
|
82
|
+
return (0, path_2.untildify)(input);
|
|
81
83
|
},
|
|
82
84
|
},
|
|
83
85
|
{
|
|
@@ -85,10 +87,10 @@ const createProjectPrompt = async (githubRef, promptOptions = {}, skipTemplatePr
|
|
|
85
87
|
message: () => {
|
|
86
88
|
return promptOptions.template &&
|
|
87
89
|
!findTemplate(projectTemplates, promptOptions.template)
|
|
88
|
-
? i18n(`${i18nKey}.errors.invalidTemplate`, {
|
|
90
|
+
? (0, lang_1.i18n)(`${i18nKey}.errors.invalidTemplate`, {
|
|
89
91
|
template: promptOptions.template,
|
|
90
92
|
})
|
|
91
|
-
: i18n(`${i18nKey}.selectTemplate`);
|
|
93
|
+
: (0, lang_1.i18n)(`${i18nKey}.selectTemplate`);
|
|
92
94
|
},
|
|
93
95
|
when: !skipTemplatePrompt && !selectedTemplate,
|
|
94
96
|
type: 'list',
|
|
@@ -104,7 +106,4 @@ const createProjectPrompt = async (githubRef, promptOptions = {}, skipTemplatePr
|
|
|
104
106
|
result.template = selectedTemplate;
|
|
105
107
|
}
|
|
106
108
|
return result;
|
|
107
|
-
}
|
|
108
|
-
module.exports = {
|
|
109
|
-
createProjectPrompt,
|
|
110
|
-
};
|
|
109
|
+
}
|
|
@@ -1 +1,9 @@
|
|
|
1
|
+
declare const templateTypeChoices: {
|
|
2
|
+
name: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}[];
|
|
5
|
+
interface CreateTemplatePromptResponse {
|
|
6
|
+
templateType: (typeof templateTypeChoices)[number]['value'];
|
|
7
|
+
}
|
|
8
|
+
export declare function createTemplatePrompt(): Promise<CreateTemplatePromptResponse>;
|
|
1
9
|
export {};
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.createTemplatePrompt = createTemplatePrompt;
|
|
4
|
+
const promptUtils_1 = require("./promptUtils");
|
|
5
|
+
const lang_1 = require("../lang");
|
|
6
6
|
const i18nKey = 'lib.prompts.createTemplatePrompt';
|
|
7
|
+
const templateTypeChoices = [
|
|
8
|
+
{ name: 'page', value: 'page-template' },
|
|
9
|
+
{ name: 'email', value: 'email-template' },
|
|
10
|
+
{ name: 'partial', value: 'partial' },
|
|
11
|
+
{ name: 'global partial', value: 'global-partial' },
|
|
12
|
+
{ name: 'blog listing', value: 'blog-listing-template' },
|
|
13
|
+
{ name: 'blog post', value: 'blog-post-template' },
|
|
14
|
+
{ name: 'search results', value: 'search-template' },
|
|
15
|
+
];
|
|
7
16
|
const TEMPLATE_TYPE_PROMPT = {
|
|
8
17
|
type: 'list',
|
|
9
18
|
name: 'templateType',
|
|
10
|
-
message: i18n(`${i18nKey}.selectTemplate`),
|
|
19
|
+
message: (0, lang_1.i18n)(`${i18nKey}.selectTemplate`),
|
|
11
20
|
default: 'page',
|
|
12
|
-
choices:
|
|
13
|
-
{ name: 'page', value: 'page-template' },
|
|
14
|
-
{ name: 'email', value: 'email-template' },
|
|
15
|
-
{ name: 'partial', value: 'partial' },
|
|
16
|
-
{ name: 'global partial', value: 'global-partial' },
|
|
17
|
-
{ name: 'blog listing', value: 'blog-listing-template' },
|
|
18
|
-
{ name: 'blog post', value: 'blog-post-template' },
|
|
19
|
-
{ name: 'search results', value: 'search-template' },
|
|
20
|
-
],
|
|
21
|
+
choices: templateTypeChoices,
|
|
21
22
|
};
|
|
22
23
|
function createTemplatePrompt() {
|
|
23
|
-
return promptUser([TEMPLATE_TYPE_PROMPT]);
|
|
24
|
+
return (0, promptUtils_1.promptUser)([TEMPLATE_TYPE_PROMPT]);
|
|
24
25
|
}
|
|
25
|
-
module.exports = {
|
|
26
|
-
createTemplatePrompt,
|
|
27
|
-
};
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
3
|
+
exports.downloadProjectPrompt = downloadProjectPrompt;
|
|
4
|
+
const promptUtils_1 = require("./promptUtils");
|
|
5
|
+
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
6
|
+
const projects_1 = require("@hubspot/local-dev-lib/api/projects");
|
|
7
|
+
const index_1 = require("../errorHandlers/index");
|
|
8
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
9
|
+
const exitCodes_1 = require("../enums/exitCodes");
|
|
10
|
+
const lang_1 = require("../lang");
|
|
10
11
|
const i18nKey = 'lib.prompts.downloadProjectPrompt';
|
|
11
|
-
|
|
12
|
+
async function createProjectsList(accountId) {
|
|
12
13
|
try {
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
if (accountId) {
|
|
15
|
+
const { data: projects } = await (0, projects_1.fetchProjects)(accountId);
|
|
16
|
+
return projects.results;
|
|
17
|
+
}
|
|
18
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.accountIdRequired`));
|
|
19
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
15
20
|
}
|
|
16
21
|
catch (e) {
|
|
17
|
-
logError(e, new ApiErrorContext({ accountId }));
|
|
18
|
-
process.exit(EXIT_CODES.ERROR);
|
|
22
|
+
(0, index_1.logError)(e, accountId ? new index_1.ApiErrorContext({ accountId }) : undefined);
|
|
23
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
19
24
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const accountId = getAccountId(promptOptions.account);
|
|
25
|
+
}
|
|
26
|
+
async function downloadProjectPrompt(promptOptions) {
|
|
27
|
+
const accountId = (0, config_1.getAccountId)(promptOptions.account);
|
|
23
28
|
const projectsList = await createProjectsList(accountId);
|
|
24
|
-
return promptUser([
|
|
29
|
+
return (0, promptUtils_1.promptUser)([
|
|
25
30
|
{
|
|
26
31
|
name: 'project',
|
|
27
32
|
message: () => {
|
|
28
33
|
return promptOptions.project &&
|
|
29
34
|
!projectsList.find(p => p.name === promptOptions.name)
|
|
30
|
-
? i18n(`${i18nKey}.errors.projectNotFound`, {
|
|
35
|
+
? (0, lang_1.i18n)(`${i18nKey}.errors.projectNotFound`, {
|
|
31
36
|
projectName: promptOptions.project,
|
|
32
|
-
accountId,
|
|
37
|
+
accountId: accountId || '',
|
|
33
38
|
})
|
|
34
|
-
: i18n(`${i18nKey}.selectProject`);
|
|
39
|
+
: (0, lang_1.i18n)(`${i18nKey}.selectProject`);
|
|
35
40
|
},
|
|
36
41
|
when: !promptOptions.project ||
|
|
37
42
|
!projectsList.find(p => p.name === promptOptions.project),
|
|
@@ -44,7 +49,4 @@ const downloadProjectPrompt = async (promptOptions = {}) => {
|
|
|
44
49
|
}),
|
|
45
50
|
},
|
|
46
51
|
]);
|
|
47
|
-
}
|
|
48
|
-
module.exports = {
|
|
49
|
-
downloadProjectPrompt,
|
|
50
|
-
};
|
|
52
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function installPublicAppPrompt(env: string, targetAccountId: number, clientId: number, scopes: string[], redirectUrls: string[], isReinstall?: boolean): Promise<void>;
|