@hubspot/cli 5.0.3-beta.1 → 5.0.3-beta.3
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/commands/accounts/clean.js +1 -1
- package/commands/accounts/info.js +1 -1
- package/commands/accounts/list.js +1 -1
- package/commands/cms/convertFields.js +10 -4
- package/commands/cms/lighthouseScore.js +1 -1
- package/commands/customObject/create.js +1 -1
- package/commands/customObject/schema/create.js +2 -2
- package/commands/customObject/schema/fetch-all.js +7 -2
- package/commands/customObject/schema/fetch.js +5 -2
- package/commands/customObject/schema/update.js +2 -2
- package/commands/filemanager/upload.js +1 -1
- package/commands/functions/list.js +1 -1
- package/commands/hubdb/create.js +1 -1
- package/commands/init.js +13 -4
- package/commands/lint.js +1 -1
- package/commands/project/create.js +1 -1
- package/commands/project/dev.js +1 -1
- package/commands/project/download.js +10 -3
- package/commands/project/listBuilds.js +2 -2
- package/commands/project/logs.js +2 -2
- package/commands/sandbox/create.js +1 -1
- package/commands/sandbox/delete.js +2 -2
- package/commands/sandbox/sync.js +1 -1
- package/commands/upload.js +2 -2
- package/commands/watch.js +1 -1
- package/lang/en.lyaml +8 -2
- package/lib/errorHandlers/standardErrors.js +14 -2
- package/lib/filesystem.js +1 -1
- package/lib/links.js +2 -2
- package/lib/logCallbacks.js +14 -0
- package/lib/oauth.js +1 -1
- package/lib/projectStructure.js +8 -2
- package/lib/projects.js +18 -3
- package/lib/projectsWatch.js +1 -1
- package/lib/prompts/createProjectPrompt.js +1 -1
- package/lib/prompts/personalAccessKeyPrompt.js +1 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +1 -1
- package/lib/prompts/uploadPrompt.js +1 -1
- package/lib/sandbox-create.js +2 -2
- package/lib/sandbox-sync.js +2 -2
- package/lib/sandboxes.js +2 -2
- package/lib/schema.js +1 -0
- package/lib/upload.js +9 -3
- package/lib/usageTracking.js +2 -4
- package/lib/validation.js +2 -2
- package/package.json +5 -5
|
@@ -15,7 +15,7 @@ const {
|
|
|
15
15
|
} = require('../../lib/commonOpts');
|
|
16
16
|
const { getAccountName } = require('../../lib/sandboxes');
|
|
17
17
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
18
|
-
const { getTableContents } = require('@hubspot/
|
|
18
|
+
const { getTableContents } = require('@hubspot/local-dev-lib/logging/table');
|
|
19
19
|
const SpinniesManager = require('../../lib/SpinniesManager');
|
|
20
20
|
const { getConfig, deleteAccount } = require('@hubspot/local-dev-lib/config');
|
|
21
21
|
const {
|
|
@@ -8,7 +8,7 @@ const {
|
|
|
8
8
|
} = require('../../lib/commonOpts');
|
|
9
9
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
10
10
|
const { i18n } = require('../../lib/lang');
|
|
11
|
-
const { getTableContents } = require('@hubspot/
|
|
11
|
+
const { getTableContents } = require('@hubspot/local-dev-lib/logging/table');
|
|
12
12
|
|
|
13
13
|
const i18nKey = 'cli.commands.accounts.subcommands.info';
|
|
14
14
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const fs = require('fs');
|
|
3
3
|
const { createIgnoreFilter } = require('@hubspot/local-dev-lib/ignoreRules');
|
|
4
|
-
const { isAllowedExtension, getCwd } = require('@hubspot/
|
|
4
|
+
const { isAllowedExtension, getCwd } = require('@hubspot/local-dev-lib/path');
|
|
5
5
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
6
|
-
const { walk } = require('@hubspot/
|
|
7
|
-
const { getThemeJSONPath } = require('@hubspot/
|
|
6
|
+
const { walk } = require('@hubspot/local-dev-lib/fs');
|
|
7
|
+
const { getThemeJSONPath } = require('@hubspot/local-dev-lib/cms/themes');
|
|
8
8
|
const { i18n } = require('../../lib/lang');
|
|
9
9
|
const {
|
|
10
10
|
FieldsJs,
|
|
@@ -12,6 +12,7 @@ const {
|
|
|
12
12
|
} = require('@hubspot/cli-lib/lib/handleFieldsJs');
|
|
13
13
|
|
|
14
14
|
const { trackConvertFieldsUsage } = require('../../lib/usageTracking');
|
|
15
|
+
const { logErrorInstance } = require('@hubspot/cli-lib/errorHandlers');
|
|
15
16
|
const i18nKey = 'cli.commands.convertFields';
|
|
16
17
|
|
|
17
18
|
exports.command = 'convert-fields';
|
|
@@ -54,7 +55,12 @@ exports.handler = async options => {
|
|
|
54
55
|
if (fieldsJs.rejected) return;
|
|
55
56
|
fieldsJs.saveOutput();
|
|
56
57
|
} else if (stats.isDirectory()) {
|
|
57
|
-
|
|
58
|
+
let filePaths = [];
|
|
59
|
+
try {
|
|
60
|
+
filePaths = await walk(src);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
logErrorInstance(e);
|
|
63
|
+
}
|
|
58
64
|
const allowedFilePaths = filePaths
|
|
59
65
|
.filter(file => {
|
|
60
66
|
if (!isAllowedExtension(file)) {
|
|
@@ -9,7 +9,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
|
|
|
9
9
|
const {
|
|
10
10
|
getTableContents,
|
|
11
11
|
getTableHeader,
|
|
12
|
-
} = require('@hubspot/
|
|
12
|
+
} = require('@hubspot/local-dev-lib/logging/table');
|
|
13
13
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
14
14
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
15
15
|
const { i18n } = require('../../lib/lang');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
2
2
|
const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
|
|
3
|
-
const { getAbsoluteFilePath } = require('@hubspot/
|
|
3
|
+
const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
|
|
4
4
|
const {
|
|
5
5
|
isFileValidJSON,
|
|
6
6
|
loadAndValidateOptions,
|
|
@@ -2,7 +2,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
|
|
|
2
2
|
const {
|
|
3
3
|
logErrorInstance,
|
|
4
4
|
} = require('../../../lib/errorHandlers/standardErrors');
|
|
5
|
-
const { getAbsoluteFilePath } = require('@hubspot/
|
|
5
|
+
const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
|
|
6
6
|
const {
|
|
7
7
|
isFileValidJSON,
|
|
8
8
|
loadAndValidateOptions,
|
|
@@ -18,7 +18,7 @@ const { createSchema } = require('@hubspot/cli-lib/api/schema');
|
|
|
18
18
|
const {
|
|
19
19
|
createSchema: createSchemaFromHubFile,
|
|
20
20
|
} = require('@hubspot/cli-lib/api/fileTransport');
|
|
21
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
21
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
22
22
|
const { i18n } = require('../../../lib/lang');
|
|
23
23
|
|
|
24
24
|
const i18nKey =
|
|
@@ -6,8 +6,12 @@ const {
|
|
|
6
6
|
const { loadAndValidateOptions } = require('../../../lib/validation');
|
|
7
7
|
const { trackCommandUsage } = require('../../../lib/usageTracking');
|
|
8
8
|
const { getAccountId } = require('../../../lib/commonOpts');
|
|
9
|
-
const {
|
|
9
|
+
const {
|
|
10
|
+
downloadSchemas,
|
|
11
|
+
getResolvedPath,
|
|
12
|
+
} = require('@hubspot/local-dev-lib/customObjects');
|
|
10
13
|
const { i18n } = require('../../../lib/lang');
|
|
14
|
+
const { logSchemas } = require('../../../lib/schema');
|
|
11
15
|
|
|
12
16
|
const i18nKey =
|
|
13
17
|
'cli.commands.customObject.subcommands.schema.subcommands.fetchAll';
|
|
@@ -23,7 +27,8 @@ exports.handler = async options => {
|
|
|
23
27
|
trackCommandUsage('custom-object-schema-fetch-all', null, accountId);
|
|
24
28
|
|
|
25
29
|
try {
|
|
26
|
-
await downloadSchemas(accountId, options.dest);
|
|
30
|
+
const schemas = await downloadSchemas(accountId, options.dest);
|
|
31
|
+
logSchemas(schemas);
|
|
27
32
|
logger.success(
|
|
28
33
|
i18n(`${i18nKey}.success.fetch`, {
|
|
29
34
|
path: getResolvedPath(options.dest),
|
|
@@ -5,9 +5,12 @@ const {
|
|
|
5
5
|
logErrorInstance,
|
|
6
6
|
} = require('../../../lib/errorHandlers/standardErrors');
|
|
7
7
|
const { ConfigFlags } = require('@hubspot/cli-lib/lib/constants');
|
|
8
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
downloadSchema,
|
|
10
|
+
getResolvedPath,
|
|
11
|
+
} = require('@hubspot/local-dev-lib/customObjects');
|
|
9
12
|
const { fetchSchema } = require('@hubspot/cli-lib/api/fileTransport');
|
|
10
|
-
const { getCwd } = require('@hubspot/
|
|
13
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
11
14
|
|
|
12
15
|
const { loadAndValidateOptions } = require('../../../lib/validation');
|
|
13
16
|
const { trackCommandUsage } = require('../../../lib/usageTracking');
|
|
@@ -2,7 +2,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
|
|
|
2
2
|
const {
|
|
3
3
|
logErrorInstance,
|
|
4
4
|
} = require('../../../lib/errorHandlers/standardErrors');
|
|
5
|
-
const { getAbsoluteFilePath } = require('@hubspot/
|
|
5
|
+
const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
|
|
6
6
|
const {
|
|
7
7
|
isFileValidJSON,
|
|
8
8
|
loadAndValidateOptions,
|
|
@@ -18,7 +18,7 @@ const { updateSchema } = require('@hubspot/cli-lib/api/schema');
|
|
|
18
18
|
const {
|
|
19
19
|
updateSchema: updateSchemaFromHubFile,
|
|
20
20
|
} = require('@hubspot/cli-lib/api/fileTransport');
|
|
21
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
21
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
22
22
|
const { i18n } = require('../../../lib/lang');
|
|
23
23
|
|
|
24
24
|
const i18nKey =
|
|
@@ -3,7 +3,7 @@ const path = require('path');
|
|
|
3
3
|
|
|
4
4
|
const { uploadFolder } = require('@hubspot/cli-lib/fileManager');
|
|
5
5
|
const { uploadFile } = require('@hubspot/cli-lib/api/fileManager');
|
|
6
|
-
const { getCwd, convertToUnixPath } = require('@hubspot/
|
|
6
|
+
const { getCwd, convertToUnixPath } = require('@hubspot/local-dev-lib/path');
|
|
7
7
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
8
8
|
const {
|
|
9
9
|
ApiErrorContext,
|
package/commands/hubdb/create.js
CHANGED
|
@@ -2,7 +2,7 @@ const path = require('path');
|
|
|
2
2
|
|
|
3
3
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
4
4
|
const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
|
|
5
|
-
const { getCwd } = require('@hubspot/
|
|
5
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
6
6
|
const { createHubDbTable } = require('@hubspot/cli-lib/hubdb');
|
|
7
7
|
|
|
8
8
|
const {
|
package/commands/init.js
CHANGED
|
@@ -8,8 +8,13 @@ const {
|
|
|
8
8
|
} = require('@hubspot/local-dev-lib/config');
|
|
9
9
|
const { addConfigOptions } = require('../lib/commonOpts');
|
|
10
10
|
const { handleExit } = require('../lib/process');
|
|
11
|
-
const {
|
|
12
|
-
|
|
11
|
+
const {
|
|
12
|
+
checkAndAddConfigToGitignore,
|
|
13
|
+
} = require('@hubspot/local-dev-lib/gitignore');
|
|
14
|
+
const {
|
|
15
|
+
logErrorInstance,
|
|
16
|
+
debugErrorAndContext,
|
|
17
|
+
} = require('../lib/errorHandlers/standardErrors');
|
|
13
18
|
const {
|
|
14
19
|
DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
15
20
|
PERSONAL_ACCESS_KEY_AUTH_METHOD,
|
|
@@ -21,7 +26,7 @@ const { logger } = require('@hubspot/cli-lib/logger');
|
|
|
21
26
|
const {
|
|
22
27
|
updateConfigWithPersonalAccessKey,
|
|
23
28
|
} = require('@hubspot/cli-lib/personalAccessKey');
|
|
24
|
-
const { getCwd } = require('@hubspot/
|
|
29
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
25
30
|
const { trackCommandUsage, trackAuthAction } = require('../lib/usageTracking');
|
|
26
31
|
const { setLogLevel, addTestingOptions } = require('../lib/commonOpts');
|
|
27
32
|
const { promptUser } = require('../lib/prompts/promptUtils');
|
|
@@ -117,7 +122,11 @@ exports.handler = async options => {
|
|
|
117
122
|
);
|
|
118
123
|
const configPath = getConfigPath();
|
|
119
124
|
|
|
120
|
-
|
|
125
|
+
try {
|
|
126
|
+
checkAndAddConfigToGitignore(configPath);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
debugErrorAndContext(e);
|
|
129
|
+
}
|
|
121
130
|
|
|
122
131
|
logger.log('');
|
|
123
132
|
logger.success(
|
package/commands/lint.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const { lint } = require('@hubspot/local-dev-lib/validate');
|
|
1
|
+
const { lint } = require('@hubspot/local-dev-lib/cms/validate');
|
|
2
2
|
const { printHublValidationResult } = require('../lib/hublValidate');
|
|
3
3
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
4
4
|
const { logErrorInstance } = require('../lib/errorHandlers/standardErrors');
|
|
@@ -6,7 +6,7 @@ const {
|
|
|
6
6
|
} = require('../../lib/commonOpts');
|
|
7
7
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
8
8
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
9
|
-
const { getCwd } = require('@hubspot/
|
|
9
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
10
10
|
const path = require('path');
|
|
11
11
|
const chalk = require('chalk');
|
|
12
12
|
const {
|
package/commands/project/dev.js
CHANGED
|
@@ -57,7 +57,7 @@ const {
|
|
|
57
57
|
|
|
58
58
|
const { buildSandbox } = require('../../lib/sandbox-create');
|
|
59
59
|
const { syncSandbox } = require('../../lib/sandbox-sync');
|
|
60
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
60
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
61
61
|
const {
|
|
62
62
|
logApiErrorInstance,
|
|
63
63
|
ApiErrorContext,
|
|
@@ -6,13 +6,13 @@ const {
|
|
|
6
6
|
addUseEnvironmentOptions,
|
|
7
7
|
} = require('../../lib/commonOpts');
|
|
8
8
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
9
|
-
const { getCwd } = require('@hubspot/
|
|
9
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
10
10
|
const {
|
|
11
11
|
logApiErrorInstance,
|
|
12
12
|
ApiErrorContext,
|
|
13
13
|
} = require('../../lib/errorHandlers/apiErrors');
|
|
14
14
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
15
|
-
const { extractZipArchive } = require('@hubspot/
|
|
15
|
+
const { extractZipArchive } = require('@hubspot/local-dev-lib/archive');
|
|
16
16
|
const {
|
|
17
17
|
downloadProject,
|
|
18
18
|
fetchProjectBuilds,
|
|
@@ -24,10 +24,16 @@ const {
|
|
|
24
24
|
} = require('../../lib/prompts/downloadProjectPrompt');
|
|
25
25
|
const { i18n } = require('../../lib/lang');
|
|
26
26
|
const { uiBetaTag } = require('../../lib/ui');
|
|
27
|
+
const { buildLogCallbacks } = require('../../lib/logCallbacks');
|
|
27
28
|
|
|
28
29
|
const i18nKey = 'cli.commands.project.subcommands.download';
|
|
29
30
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
30
31
|
|
|
32
|
+
const archiveLogCallbacks = buildLogCallbacks({
|
|
33
|
+
init: `${i18nKey}.archiveLogCallbacks.init`,
|
|
34
|
+
copy: `${i18nKey}.archiveLogCallbacks.copy`,
|
|
35
|
+
});
|
|
36
|
+
|
|
31
37
|
exports.command = 'download [--project]';
|
|
32
38
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
33
39
|
|
|
@@ -93,7 +99,8 @@ exports.handler = async options => {
|
|
|
93
99
|
zippedProject,
|
|
94
100
|
projectName,
|
|
95
101
|
path.resolve(absoluteDestPath),
|
|
96
|
-
{ includesRootDir: false }
|
|
102
|
+
{ includesRootDir: false },
|
|
103
|
+
archiveLogCallbacks
|
|
97
104
|
);
|
|
98
105
|
|
|
99
106
|
logger.log(
|
|
@@ -20,8 +20,8 @@ const {
|
|
|
20
20
|
const {
|
|
21
21
|
getTableContents,
|
|
22
22
|
getTableHeader,
|
|
23
|
-
} = require('@hubspot/
|
|
24
|
-
const { getCwd } = require('@hubspot/
|
|
23
|
+
} = require('@hubspot/local-dev-lib/logging/table');
|
|
24
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
25
25
|
const { uiBetaTag, uiLink } = require('../../lib/ui');
|
|
26
26
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
27
27
|
const {
|
package/commands/project/logs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { getEnv } = require('@hubspot/local-dev-lib/config');
|
|
2
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
2
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
3
3
|
const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants');
|
|
4
4
|
const {
|
|
5
5
|
addAccountOptions,
|
|
@@ -17,7 +17,7 @@ const {
|
|
|
17
17
|
const {
|
|
18
18
|
getTableContents,
|
|
19
19
|
getTableHeader,
|
|
20
|
-
} = require('@hubspot/
|
|
20
|
+
} = require('@hubspot/local-dev-lib/logging/table');
|
|
21
21
|
// const {
|
|
22
22
|
// getProjectAppFunctionLogs,
|
|
23
23
|
// getLatestProjectAppFunctionLog,
|
|
@@ -34,7 +34,7 @@ const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
|
34
34
|
const { syncSandbox } = require('../../lib/sandbox-sync');
|
|
35
35
|
const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors');
|
|
36
36
|
const { isMissingScopeError } = require('../../lib/errorHandlers/apiErrors');
|
|
37
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
37
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
38
38
|
|
|
39
39
|
const i18nKey = 'cli.commands.sandbox.subcommands.create';
|
|
40
40
|
|
|
@@ -16,7 +16,7 @@ const {
|
|
|
16
16
|
isSpecifiedError,
|
|
17
17
|
isSpecifiedHubSpotAuthError,
|
|
18
18
|
} = require('../../lib/errorHandlers/apiErrors');
|
|
19
|
-
const { deleteSandbox } = require('@hubspot/
|
|
19
|
+
const { deleteSandbox } = require('@hubspot/local-dev-lib/sandboxes');
|
|
20
20
|
const { i18n } = require('../../lib/lang');
|
|
21
21
|
const { deleteSandboxPrompt } = require('../../lib/prompts/sandboxesPrompt');
|
|
22
22
|
const {
|
|
@@ -31,7 +31,7 @@ const {
|
|
|
31
31
|
} = require('../../lib/prompts/accountsPrompt');
|
|
32
32
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
33
33
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
34
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
34
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
35
35
|
|
|
36
36
|
const { getAccountName } = require('../../lib/sandboxes');
|
|
37
37
|
const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
|
package/commands/sandbox/sync.js
CHANGED
|
@@ -11,7 +11,7 @@ const { loadAndValidateOptions } = require('../../lib/validation');
|
|
|
11
11
|
const { i18n } = require('../../lib/lang');
|
|
12
12
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
13
13
|
const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
|
|
14
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
14
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
15
15
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
16
16
|
const { uiLine } = require('../../lib/ui');
|
|
17
17
|
const {
|
package/commands/upload.js
CHANGED
|
@@ -7,7 +7,7 @@ const {
|
|
|
7
7
|
getCwd,
|
|
8
8
|
convertToUnixPath,
|
|
9
9
|
isAllowedExtension,
|
|
10
|
-
} = require('@hubspot/
|
|
10
|
+
} = require('@hubspot/local-dev-lib/path');
|
|
11
11
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
12
12
|
const {
|
|
13
13
|
ApiErrorContext,
|
|
@@ -33,7 +33,7 @@ const { getUploadableFileList } = require('../lib/upload');
|
|
|
33
33
|
const {
|
|
34
34
|
getThemePreviewUrl,
|
|
35
35
|
getThemeJSONPath,
|
|
36
|
-
} = require('@hubspot/
|
|
36
|
+
} = require('@hubspot/local-dev-lib/cms/themes');
|
|
37
37
|
const { i18n } = require('../lib/lang');
|
|
38
38
|
const i18nKey = 'cli.commands.upload';
|
|
39
39
|
const { EXIT_CODES } = require('../lib/enums/exitCodes');
|
package/commands/watch.js
CHANGED
|
@@ -2,7 +2,7 @@ const fs = require('fs');
|
|
|
2
2
|
const path = require('path');
|
|
3
3
|
|
|
4
4
|
const { watch } = require('@hubspot/cli-lib');
|
|
5
|
-
const { getCwd } = require('@hubspot/
|
|
5
|
+
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
6
6
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
7
7
|
|
|
8
8
|
const {
|
package/lang/en.lyaml
CHANGED
|
@@ -631,6 +631,9 @@ en:
|
|
|
631
631
|
describe: "The name of the project to download"
|
|
632
632
|
dest:
|
|
633
633
|
describe: "Destination folder for the project"
|
|
634
|
+
archiveLogCallbacks:
|
|
635
|
+
init: "Extracting project source..."
|
|
636
|
+
copy: "Copying project source..."
|
|
634
637
|
open:
|
|
635
638
|
describe: "Open the specified project's details page in the browser"
|
|
636
639
|
options:
|
|
@@ -949,8 +952,10 @@ en:
|
|
|
949
952
|
feedbackHeader: "We'd love to hear your feedback!"
|
|
950
953
|
feedbackMessage: "How are you liking the new projects and developer tools? \n > Run `{{#yellow}}hs feedback{{/yellow}}` to let us know what you think!\n"
|
|
951
954
|
showPlatformVersionWarning:
|
|
952
|
-
|
|
953
|
-
|
|
955
|
+
docsLink: "Projects platform versioning (BETA)"
|
|
956
|
+
noPlatformVersion: "No platformVersion found in hsproject.json. Falling back to version \"{{ defaultVersion }}\". Starting Mar 31, 2024, new project builds without a specified version will no longer be supported. To update your project to the latest version, see {{ docsLink }}."
|
|
957
|
+
noPlatformVersionAlt: "No platformVersion found in hsproject.json. Falling back to default version. Starting Mar 31, 2024, new project builds without a specified version will no longer be supported. To update your project to the latest version, see {{ docsLink }}."
|
|
958
|
+
deprecatedVersion: "Starting Mar 31, 2024, new project builds with platformVersion 2023.1 or unspecified versions will no longer be supported. It's recommended that you update your project to the latest version. For more info, see {{ docsLink }}."
|
|
954
959
|
ui:
|
|
955
960
|
betaTag: "{{#bold}}[BETA]{{/bold}}"
|
|
956
961
|
betaWarning:
|
|
@@ -1271,6 +1276,7 @@ en:
|
|
|
1271
1276
|
standardErrors:
|
|
1272
1277
|
errorOccurred: "Error: {{ error }}"
|
|
1273
1278
|
errorContext: "Context: {{ context }}"
|
|
1279
|
+
errorCause: "Cause: {{ cause }}"
|
|
1274
1280
|
systemErrorOccurred: "A system error has occurred: {{ errorMessage }}"
|
|
1275
1281
|
genericErrorOccurred: "A {{ name }} has occurred."
|
|
1276
1282
|
unknownErrorOccurred: "An unknown error has occurred"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const util = require('util');
|
|
1
2
|
const { HubSpotAuthError } = require('@hubspot/cli-lib/lib/models/Errors');
|
|
2
3
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
3
4
|
const { i18n } = require('../lang');
|
|
@@ -40,7 +41,18 @@ function debugErrorAndContext(error, context) {
|
|
|
40
41
|
} else {
|
|
41
42
|
logger.debug(i18n(`${i18nKey}.errorOccurred`, { error }));
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
if (error.cause) {
|
|
45
|
+
logger.debug(
|
|
46
|
+
i18n(`${i18nKey}.errorCause`, {
|
|
47
|
+
cause: util.inspect(error.cause, false, null, true),
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
logger.debug(
|
|
52
|
+
i18n(`${i18nKey}.errorContext`, {
|
|
53
|
+
context: util.inspect(context, false, null, true),
|
|
54
|
+
})
|
|
55
|
+
);
|
|
44
56
|
}
|
|
45
57
|
|
|
46
58
|
/**
|
|
@@ -73,7 +85,7 @@ function logErrorInstance(error, context) {
|
|
|
73
85
|
// Error or Error subclass
|
|
74
86
|
const name = error.name || 'Error';
|
|
75
87
|
const message = [i18n(`${i18nKey}.genericErrorOccurred`, { name })];
|
|
76
|
-
[
|
|
88
|
+
[error.message, error.reason].forEach(msg => {
|
|
77
89
|
if (msg) {
|
|
78
90
|
message.push(msg);
|
|
79
91
|
}
|
package/lib/filesystem.js
CHANGED
package/lib/links.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const { getEnv } = require('@hubspot/local-dev-lib/config');
|
|
2
2
|
const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants');
|
|
3
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
3
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
4
4
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
5
5
|
const {
|
|
6
6
|
getTableContents,
|
|
7
7
|
getTableHeader,
|
|
8
|
-
} = require('@hubspot/
|
|
8
|
+
} = require('@hubspot/local-dev-lib/logging/table');
|
|
9
9
|
|
|
10
10
|
const open = require('open');
|
|
11
11
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const { logger } = require('@hubspot/cli-lib/logger');
|
|
2
|
+
const { i18n } = require('./lang');
|
|
3
|
+
|
|
4
|
+
function buildLogCallbacks(logData) {
|
|
5
|
+
const callbacksObject = {};
|
|
6
|
+
for (let key in logData) {
|
|
7
|
+
callbacksObject[key] = () => logger.log(i18n(logData[key]));
|
|
8
|
+
}
|
|
9
|
+
return callbacksObject;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
buildLogCallbacks,
|
|
14
|
+
};
|
package/lib/oauth.js
CHANGED
|
@@ -4,7 +4,7 @@ const OAuth2Manager = require('@hubspot/cli-lib/lib/models/OAuth2Manager');
|
|
|
4
4
|
const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
|
|
5
5
|
const { addOauthToAccountConfig } = require('@hubspot/cli-lib/oauth');
|
|
6
6
|
const { handleExit } = require('./process');
|
|
7
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
7
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
8
8
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
9
9
|
const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants');
|
|
10
10
|
|
package/lib/projectStructure.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
|
-
const { walk } = require('@hubspot/
|
|
3
|
+
const { walk } = require('@hubspot/local-dev-lib/fs');
|
|
4
4
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
5
|
+
const { logErrorInstance } = require('./errorHandlers/standardErrors');
|
|
5
6
|
|
|
6
7
|
const COMPONENT_TYPES = Object.freeze({
|
|
7
8
|
app: 'app',
|
|
@@ -73,8 +74,13 @@ function getIsLegacyApp(appConfig, appPath) {
|
|
|
73
74
|
|
|
74
75
|
async function findProjectComponents(projectSourceDir) {
|
|
75
76
|
const components = [];
|
|
77
|
+
let projectFiles = [];
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
try {
|
|
80
|
+
projectFiles = await walk(projectSourceDir);
|
|
81
|
+
} catch (e) {
|
|
82
|
+
logErrorInstance(e);
|
|
83
|
+
}
|
|
78
84
|
|
|
79
85
|
projectFiles.forEach(projectFile => {
|
|
80
86
|
// Find app components
|
package/lib/projects.js
CHANGED
|
@@ -6,7 +6,7 @@ const chalk = require('chalk');
|
|
|
6
6
|
const findup = require('findup-sync');
|
|
7
7
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
8
8
|
const { getEnv } = require('@hubspot/local-dev-lib/config');
|
|
9
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
9
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
10
10
|
const {
|
|
11
11
|
ENVIRONMENTS,
|
|
12
12
|
FEEDBACK_INTERVAL,
|
|
@@ -30,7 +30,7 @@ const {
|
|
|
30
30
|
uploadProject,
|
|
31
31
|
} = require('@hubspot/cli-lib/api/dfs');
|
|
32
32
|
const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
|
|
33
|
-
const { getCwd, getAbsoluteFilePath } = require('@hubspot/
|
|
33
|
+
const { getCwd, getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
|
|
34
34
|
const { downloadGitHubRepoContents } = require('@hubspot/cli-lib/github');
|
|
35
35
|
const { promptUser } = require('./prompts/promptUtils');
|
|
36
36
|
const { EXIT_CODES } = require('./enums/exitCodes');
|
|
@@ -870,6 +870,10 @@ const createProjectComponent = async (
|
|
|
870
870
|
|
|
871
871
|
const showPlatformVersionWarning = async (accountId, projectConfig) => {
|
|
872
872
|
const platformVersion = projectConfig.platformVersion;
|
|
873
|
+
const docsLink = uiLink(
|
|
874
|
+
i18n(`${i18nKey}.showPlatformVersionWarning.docsLink`),
|
|
875
|
+
'https://developers.hubspot.com/docs/platform/platform-versioning'
|
|
876
|
+
);
|
|
873
877
|
|
|
874
878
|
if (!platformVersion) {
|
|
875
879
|
try {
|
|
@@ -878,17 +882,28 @@ const showPlatformVersionWarning = async (accountId, projectConfig) => {
|
|
|
878
882
|
logger.warn(
|
|
879
883
|
i18n(`${i18nKey}.showPlatformVersionWarning.noPlatformVersion`, {
|
|
880
884
|
defaultVersion,
|
|
885
|
+
docsLink,
|
|
881
886
|
})
|
|
882
887
|
);
|
|
883
888
|
logger.log('');
|
|
884
889
|
} catch (e) {
|
|
885
890
|
logger.log('');
|
|
886
891
|
logger.warn(
|
|
887
|
-
i18n(`${i18nKey}.showPlatformVersionWarning.noPlatformVersionAlt
|
|
892
|
+
i18n(`${i18nKey}.showPlatformVersionWarning.noPlatformVersionAlt`, {
|
|
893
|
+
docsLink,
|
|
894
|
+
})
|
|
888
895
|
);
|
|
889
896
|
logger.log('');
|
|
890
897
|
logger.debug(e.error);
|
|
891
898
|
}
|
|
899
|
+
} else if (platformVersion === '2023.1') {
|
|
900
|
+
logger.log('');
|
|
901
|
+
logger.warn(
|
|
902
|
+
i18n(`${i18nKey}.showPlatformVersionWarning.deprecatedVersion`, {
|
|
903
|
+
docsLink,
|
|
904
|
+
})
|
|
905
|
+
);
|
|
906
|
+
logger.log('');
|
|
892
907
|
}
|
|
893
908
|
};
|
|
894
909
|
|
package/lib/projectsWatch.js
CHANGED
|
@@ -8,7 +8,7 @@ const {
|
|
|
8
8
|
} = require('./errorHandlers/apiErrors');
|
|
9
9
|
const { i18n } = require('@hubspot/cli-lib/lib/lang');
|
|
10
10
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
11
|
-
const { isAllowedExtension } = require('@hubspot/
|
|
11
|
+
const { isAllowedExtension } = require('@hubspot/local-dev-lib/path');
|
|
12
12
|
const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules');
|
|
13
13
|
const {
|
|
14
14
|
cancelStagedBuild,
|
|
@@ -4,7 +4,7 @@ const {
|
|
|
4
4
|
DEFAULT_OAUTH_SCOPES,
|
|
5
5
|
} = require('@hubspot/cli-lib/lib/constants');
|
|
6
6
|
const { deleteEmptyConfigFile } = require('@hubspot/local-dev-lib/config');
|
|
7
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
7
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
8
8
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
9
9
|
const { promptUser } = require('./promptUtils');
|
|
10
10
|
const { accountNamePrompt } = require('./enterAccountNamePrompt');
|
|
@@ -3,7 +3,7 @@ const { i18n } = require('../lang');
|
|
|
3
3
|
const { uiAccountDescription, uiCommandReference } = require('../ui');
|
|
4
4
|
const { isSandbox, getAccountName } = require('../sandboxes');
|
|
5
5
|
const { getAccountId } = require('@hubspot/local-dev-lib/config');
|
|
6
|
-
const { getSandboxUsageLimits } = require('@hubspot/
|
|
6
|
+
const { getSandboxUsageLimits } = require('@hubspot/local-dev-lib/sandboxes');
|
|
7
7
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
8
8
|
|
|
9
9
|
const i18nKey = 'cli.lib.prompts.projectDevTargetAccountPrompt';
|
package/lib/sandbox-create.js
CHANGED
|
@@ -17,9 +17,9 @@ const {
|
|
|
17
17
|
isMissingScopeError,
|
|
18
18
|
isSpecifiedError,
|
|
19
19
|
} = require('./errorHandlers/apiErrors');
|
|
20
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
20
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
21
21
|
const { getEnv, getAccountId } = require('@hubspot/local-dev-lib/config');
|
|
22
|
-
const { createSandbox } = require('@hubspot/
|
|
22
|
+
const { createSandbox } = require('@hubspot/local-dev-lib/sandboxes');
|
|
23
23
|
const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
|
|
24
24
|
|
|
25
25
|
const i18nKey = 'cli.lib.sandbox.create';
|
package/lib/sandbox-sync.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const SpinniesManager = require('./SpinniesManager');
|
|
2
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
2
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
3
3
|
const { logger } = require('@hubspot/cli-lib/logger');
|
|
4
4
|
const { i18n } = require('./lang');
|
|
5
5
|
const {
|
|
@@ -10,7 +10,7 @@ const {
|
|
|
10
10
|
sandboxTypeMap,
|
|
11
11
|
syncTypes,
|
|
12
12
|
} = require('./sandboxes');
|
|
13
|
-
const { initiateSync } = require('@hubspot/
|
|
13
|
+
const { initiateSync } = require('@hubspot/local-dev-lib/sandboxes');
|
|
14
14
|
const {
|
|
15
15
|
debugErrorAndContext,
|
|
16
16
|
logErrorInstance,
|
package/lib/sandboxes.js
CHANGED
|
@@ -11,7 +11,7 @@ const {
|
|
|
11
11
|
fetchTaskStatus,
|
|
12
12
|
fetchTypes,
|
|
13
13
|
getSandboxUsageLimits,
|
|
14
|
-
} = require('@hubspot/
|
|
14
|
+
} = require('@hubspot/local-dev-lib/sandboxes');
|
|
15
15
|
const {
|
|
16
16
|
accountNameExistsInConfig,
|
|
17
17
|
getConfig,
|
|
@@ -21,7 +21,7 @@ const {
|
|
|
21
21
|
} = require('@hubspot/local-dev-lib/config');
|
|
22
22
|
const CliProgressMultibarManager = require('./CliProgressMultibarManager');
|
|
23
23
|
const { promptUser } = require('./prompts/promptUtils');
|
|
24
|
-
const { getHubSpotWebsiteOrigin } = require('@hubspot/
|
|
24
|
+
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
25
25
|
const {
|
|
26
26
|
personalAccessKeyPrompt,
|
|
27
27
|
} = require('./prompts/personalAccessKeyPrompt');
|
package/lib/schema.js
CHANGED
package/lib/upload.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
-
const { walk } = require('@hubspot/
|
|
2
|
+
const { walk } = require('@hubspot/local-dev-lib/fs');
|
|
3
3
|
const { createIgnoreFilter } = require('@hubspot/local-dev-lib/ignoreRules');
|
|
4
4
|
const { fieldsJsPrompt } = require('../lib/prompts/cmsFieldPrompt');
|
|
5
|
-
const { isAllowedExtension } = require('@hubspot/
|
|
5
|
+
const { isAllowedExtension } = require('@hubspot/local-dev-lib/path');
|
|
6
6
|
const { isConvertableFieldJs } = require('@hubspot/cli-lib/lib/handleFieldsJs');
|
|
7
|
+
const { logErrorInstance } = require('./errorHandlers/standardErrors');
|
|
7
8
|
|
|
8
9
|
/*
|
|
9
10
|
* Walks the src folder for files, filters them based on ignore filter.
|
|
10
11
|
* If convertFields is true then will check for any JS fields conflicts (i.e., JS fields file and fields.json file) and prompt to resolve
|
|
11
12
|
*/
|
|
12
13
|
const getUploadableFileList = async (src, convertFields) => {
|
|
13
|
-
|
|
14
|
+
let filePaths = [];
|
|
15
|
+
try {
|
|
16
|
+
filePaths = await walk(src);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
logErrorInstance(e);
|
|
19
|
+
}
|
|
14
20
|
const allowedFiles = filePaths
|
|
15
21
|
.filter(file => {
|
|
16
22
|
if (!isAllowedExtension(file)) {
|
package/lib/usageTracking.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const { trackUsage } = require('@hubspot/
|
|
1
|
+
const { trackUsage } = require('@hubspot/local-dev-lib/trackUsage');
|
|
2
2
|
const {
|
|
3
3
|
isTrackingAllowed,
|
|
4
4
|
getAccountConfig,
|
|
@@ -138,7 +138,7 @@ const trackAuthAction = async (command, authType, step, accountId) => {
|
|
|
138
138
|
step,
|
|
139
139
|
};
|
|
140
140
|
try {
|
|
141
|
-
|
|
141
|
+
await trackUsage(
|
|
142
142
|
'cli-interaction',
|
|
143
143
|
EventClass.INTERACTION,
|
|
144
144
|
usageTrackingEvent,
|
|
@@ -146,8 +146,6 @@ const trackAuthAction = async (command, authType, step, accountId) => {
|
|
|
146
146
|
);
|
|
147
147
|
|
|
148
148
|
logger.debug('Sent usage tracking command event: %o', usageTrackingEvent);
|
|
149
|
-
|
|
150
|
-
return response;
|
|
151
149
|
} catch (e) {
|
|
152
150
|
logger.debug('Auth action tracking failed: %s', e.message);
|
|
153
151
|
}
|
package/lib/validation.js
CHANGED
|
@@ -13,12 +13,12 @@ const {
|
|
|
13
13
|
getAccountConfig,
|
|
14
14
|
loadConfigFromEnvironment,
|
|
15
15
|
} = require('@hubspot/local-dev-lib/config');
|
|
16
|
-
const { getAbsoluteFilePath } = require('@hubspot/
|
|
16
|
+
const { getAbsoluteFilePath } = require('@hubspot/local-dev-lib/path');
|
|
17
17
|
const { getOauthManager } = require('@hubspot/cli-lib/oauth');
|
|
18
18
|
const {
|
|
19
19
|
accessTokenForPersonalAccessKey,
|
|
20
20
|
} = require('@hubspot/cli-lib/personalAccessKey');
|
|
21
|
-
const { getCwd, getExt } = require('@hubspot/
|
|
21
|
+
const { getCwd, getExt } = require('@hubspot/local-dev-lib/path');
|
|
22
22
|
const { getAccountId, getMode, setLogLevel } = require('./commonOpts');
|
|
23
23
|
const { logDebugInfo } = require('./debugInfo');
|
|
24
24
|
const fs = require('fs');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hubspot/cli",
|
|
3
|
-
"version": "5.0.3-beta.
|
|
3
|
+
"version": "5.0.3-beta.3",
|
|
4
4
|
"description": "CLI for working with HubSpot",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@hubspot/cli-lib": "^7.0.0",
|
|
12
|
-
"@hubspot/local-dev-lib": "^0.0
|
|
13
|
-
"@hubspot/serverless-dev-runtime": "5.0.3-beta.
|
|
14
|
-
"@hubspot/ui-extensions-dev-server": "
|
|
12
|
+
"@hubspot/local-dev-lib": "^0.1.0",
|
|
13
|
+
"@hubspot/serverless-dev-runtime": "5.0.3-beta.3",
|
|
14
|
+
"@hubspot/ui-extensions-dev-server": "0.8.4",
|
|
15
15
|
"archiver": "^5.3.0",
|
|
16
16
|
"chalk": "^4.1.2",
|
|
17
17
|
"chokidar": "^3.0.1",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "34d53e2b45a95064f62a4c278bebe9c758bb1da7"
|
|
49
49
|
}
|