@hubspot/local-dev-lib 0.4.2-experimental.0 → 0.5.0-experimental.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/defaultAccountOverride.d.ts +2 -0
- package/config/defaultAccountOverride.js +57 -0
- package/config/index.d.ts +26 -43
- package/config/index.js +275 -276
- package/config/migrate.d.ts +11 -16
- package/config/migrate.js +79 -159
- package/config/state.d.ts +3 -0
- package/config/state.js +88 -0
- package/config/utils.d.ts +74 -0
- package/config/utils.js +326 -0
- package/constants/config.d.ts +28 -0
- package/constants/config.js +29 -1
- package/constants/environments.d.ts +0 -11
- package/constants/environments.js +1 -12
- package/http/getAxiosConfig.js +7 -1
- package/http/index.js +23 -19
- package/lang/en.json +87 -62
- package/lib/cms/themes.js +3 -1
- package/lib/environment.d.ts +1 -1
- package/lib/gitignore.js +1 -1
- package/lib/oauth.d.ts +2 -2
- package/lib/oauth.js +8 -16
- package/lib/personalAccessKey.d.ts +2 -2
- package/lib/personalAccessKey.js +39 -30
- package/lib/portManager.d.ts +1 -0
- package/lib/portManager.js +6 -1
- package/lib/trackUsage.js +6 -3
- package/models/OAuth2Manager.d.ts +3 -4
- package/models/OAuth2Manager.js +20 -29
- package/package.json +4 -3
- package/types/Accounts.d.ts +20 -109
- package/types/Build.d.ts +1 -0
- package/types/Config.d.ts +14 -26
- package/config/CLIConfiguration.d.ts +0 -72
- package/config/CLIConfiguration.js +0 -548
- package/config/configFile.d.ts +0 -21
- package/config/configFile.js +0 -100
- package/config/configUtils.d.ts +0 -5
- package/config/configUtils.js +0 -87
- package/config/config_DEPRECATED.d.ts +0 -87
- package/config/config_DEPRECATED.js +0 -738
- package/config/environment.d.ts +0 -2
- package/config/environment.js +0 -60
- package/config/getAccountIdentifier.d.ts +0 -2
- package/config/getAccountIdentifier.js +0 -15
- package/utils/accounts.d.ts +0 -4
- package/utils/accounts.js +0 -28
package/config/utils.js
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isConfigAccountValid = exports.getConfigAccountIndexById = exports.getConfigAccountByInferredIdentifier = exports.getConfigAccountByIdentifier = exports.getAccountIdentifierAndType = exports.buildConfigFromEnvironment = exports.parseConfig = exports.normalizeParsedConfig = exports.writeConfigFile = exports.formatConfigForWrite = exports.removeUndefinedFieldsFromConfigAccount = exports.readConfigFile = exports.getConfigPathEnvironmentVariables = exports.getLocalConfigDefaultFilePath = exports.getLocalConfigFilePath = exports.getGlobalConfigFilePath = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
+
const findup_sync_1 = __importDefault(require("findup-sync"));
|
|
10
|
+
const config_1 = require("../constants/config");
|
|
11
|
+
const auth_1 = require("../constants/auth");
|
|
12
|
+
const FileSystemError_1 = require("../models/FileSystemError");
|
|
13
|
+
const logger_1 = require("../lib/logger");
|
|
14
|
+
const environment_1 = require("../lib/environment");
|
|
15
|
+
const path_1 = require("../lib/path");
|
|
16
|
+
const files_1 = require("../constants/files");
|
|
17
|
+
const lang_1 = require("../utils/lang");
|
|
18
|
+
function getGlobalConfigFilePath() {
|
|
19
|
+
return config_1.GLOBAL_CONFIG_PATH;
|
|
20
|
+
}
|
|
21
|
+
exports.getGlobalConfigFilePath = getGlobalConfigFilePath;
|
|
22
|
+
function getLocalConfigFilePath() {
|
|
23
|
+
return (0, findup_sync_1.default)([
|
|
24
|
+
config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
25
|
+
config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME.replace('.yml', '.yaml'),
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
exports.getLocalConfigFilePath = getLocalConfigFilePath;
|
|
29
|
+
function getLocalConfigDefaultFilePath() {
|
|
30
|
+
return `${(0, path_1.getCwd)()}/${config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME}`;
|
|
31
|
+
}
|
|
32
|
+
exports.getLocalConfigDefaultFilePath = getLocalConfigDefaultFilePath;
|
|
33
|
+
function getConfigPathEnvironmentVariables() {
|
|
34
|
+
const configFilePathFromEnvironment = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CONFIG_PATH];
|
|
35
|
+
const useEnvironmentConfig = process.env[config_1.ENVIRONMENT_VARIABLES.USE_ENVIRONMENT_HUBSPOT_CONFIG] ===
|
|
36
|
+
'true';
|
|
37
|
+
if (configFilePathFromEnvironment && useEnvironmentConfig) {
|
|
38
|
+
throw new Error((0, lang_1.i18n)('config.utils.getConfigPathEnvironmentVariables.invalidEnvironmentVariables'));
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
configFilePathFromEnvironment,
|
|
42
|
+
useEnvironmentConfig,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
exports.getConfigPathEnvironmentVariables = getConfigPathEnvironmentVariables;
|
|
46
|
+
function readConfigFile(configPath) {
|
|
47
|
+
let source = '';
|
|
48
|
+
try {
|
|
49
|
+
source = fs_extra_1.default.readFileSync(configPath).toString();
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
throw new FileSystemError_1.FileSystemError({ cause: err }, {
|
|
53
|
+
filepath: configPath,
|
|
54
|
+
operation: 'read',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return source;
|
|
58
|
+
}
|
|
59
|
+
exports.readConfigFile = readConfigFile;
|
|
60
|
+
function removeUndefinedFieldsFromConfigAccount(account) {
|
|
61
|
+
Object.keys(account).forEach(k => {
|
|
62
|
+
const key = k;
|
|
63
|
+
if (account[key] === undefined) {
|
|
64
|
+
delete account[key];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
if ('auth' in account && account.auth) {
|
|
68
|
+
if (account.authType === auth_1.OAUTH_AUTH_METHOD.value) {
|
|
69
|
+
Object.keys(account.auth).forEach(k => {
|
|
70
|
+
const key = k;
|
|
71
|
+
if (account.auth?.[key] === undefined) {
|
|
72
|
+
delete account.auth?.[key];
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if ('tokenInfo' in account.auth &&
|
|
77
|
+
typeof account.auth.tokenInfo === 'object') {
|
|
78
|
+
Object.keys(account.auth.tokenInfo).forEach(k => {
|
|
79
|
+
const key = k;
|
|
80
|
+
if (account.auth?.tokenInfo[key] === undefined) {
|
|
81
|
+
delete account.auth?.tokenInfo[key];
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return account;
|
|
87
|
+
}
|
|
88
|
+
exports.removeUndefinedFieldsFromConfigAccount = removeUndefinedFieldsFromConfigAccount;
|
|
89
|
+
// Ensure written config files have fields in a consistent order
|
|
90
|
+
function formatConfigForWrite(config) {
|
|
91
|
+
const { defaultAccount, defaultCmsPublishMode, httpTimeout, allowUsageTracking, accounts, ...rest } = config;
|
|
92
|
+
const orderedConfig = {
|
|
93
|
+
...(defaultAccount && { defaultAccount }),
|
|
94
|
+
defaultCmsPublishMode,
|
|
95
|
+
httpTimeout,
|
|
96
|
+
allowUsageTracking,
|
|
97
|
+
...rest,
|
|
98
|
+
accounts: accounts.map(account => {
|
|
99
|
+
const { name, accountId, env, authType, ...rest } = account;
|
|
100
|
+
return {
|
|
101
|
+
name,
|
|
102
|
+
accountId,
|
|
103
|
+
env,
|
|
104
|
+
authType,
|
|
105
|
+
...rest,
|
|
106
|
+
};
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
return removeUndefinedFieldsFromConfigAccount(orderedConfig);
|
|
110
|
+
}
|
|
111
|
+
exports.formatConfigForWrite = formatConfigForWrite;
|
|
112
|
+
function writeConfigFile(config, configPath) {
|
|
113
|
+
const source = js_yaml_1.default.dump(JSON.parse(JSON.stringify(formatConfigForWrite(config), null, 2)));
|
|
114
|
+
try {
|
|
115
|
+
fs_extra_1.default.ensureFileSync(configPath);
|
|
116
|
+
fs_extra_1.default.writeFileSync(configPath, source);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
throw new FileSystemError_1.FileSystemError({ cause: err }, {
|
|
120
|
+
filepath: configPath,
|
|
121
|
+
operation: 'write',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.writeConfigFile = writeConfigFile;
|
|
126
|
+
function getAccountType(sandboxAccountType) {
|
|
127
|
+
if (sandboxAccountType) {
|
|
128
|
+
if (sandboxAccountType.toUpperCase() === 'DEVELOPER') {
|
|
129
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX;
|
|
130
|
+
}
|
|
131
|
+
if (sandboxAccountType.toUpperCase() === 'STANDARD') {
|
|
132
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD;
|
|
136
|
+
}
|
|
137
|
+
function normalizeParsedConfig(parsedConfig) {
|
|
138
|
+
if (parsedConfig.portals) {
|
|
139
|
+
parsedConfig.accounts = parsedConfig.portals.map(account => {
|
|
140
|
+
if (account.portalId) {
|
|
141
|
+
account.accountId = account.portalId;
|
|
142
|
+
delete account.portalId;
|
|
143
|
+
}
|
|
144
|
+
if (!account.accountType) {
|
|
145
|
+
account.accountType = getAccountType(account.sandboxAccountType);
|
|
146
|
+
delete account.sandboxAccountType;
|
|
147
|
+
}
|
|
148
|
+
return account;
|
|
149
|
+
});
|
|
150
|
+
delete parsedConfig.portals;
|
|
151
|
+
}
|
|
152
|
+
if (parsedConfig.defaultPortal) {
|
|
153
|
+
const defaultAccount = getConfigAccountByInferredIdentifier(parsedConfig.accounts, parsedConfig.defaultPortal);
|
|
154
|
+
if (defaultAccount) {
|
|
155
|
+
parsedConfig.defaultAccount = defaultAccount.accountId;
|
|
156
|
+
}
|
|
157
|
+
delete parsedConfig.defaultPortal;
|
|
158
|
+
}
|
|
159
|
+
if (parsedConfig.defaultMode) {
|
|
160
|
+
parsedConfig.defaultCmsPublishMode = parsedConfig.defaultMode;
|
|
161
|
+
delete parsedConfig.defaultMode;
|
|
162
|
+
}
|
|
163
|
+
return parsedConfig;
|
|
164
|
+
}
|
|
165
|
+
exports.normalizeParsedConfig = normalizeParsedConfig;
|
|
166
|
+
function parseConfig(configSource) {
|
|
167
|
+
let parsedYaml;
|
|
168
|
+
try {
|
|
169
|
+
parsedYaml = js_yaml_1.default.load(configSource);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
throw new Error((0, lang_1.i18n)('config.utils.parseConfig.error'), { cause: err });
|
|
173
|
+
}
|
|
174
|
+
return normalizeParsedConfig(parsedYaml);
|
|
175
|
+
}
|
|
176
|
+
exports.parseConfig = parseConfig;
|
|
177
|
+
function buildConfigFromEnvironment() {
|
|
178
|
+
const apiKey = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_API_KEY];
|
|
179
|
+
const clientId = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CLIENT_ID];
|
|
180
|
+
const clientSecret = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CLIENT_SECRET];
|
|
181
|
+
const personalAccessKey = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_PERSONAL_ACCESS_KEY];
|
|
182
|
+
const accountIdVar = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_ACCOUNT_ID] ||
|
|
183
|
+
process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_PORTAL_ID];
|
|
184
|
+
const refreshToken = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_REFRESH_TOKEN];
|
|
185
|
+
const hubspotEnvironment = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_ENVIRONMENT];
|
|
186
|
+
const httpTimeoutVar = process.env[config_1.ENVIRONMENT_VARIABLES.HTTP_TIMEOUT];
|
|
187
|
+
const httpUseLocalhostVar = process.env[config_1.ENVIRONMENT_VARIABLES.HTTP_USE_LOCALHOST];
|
|
188
|
+
const allowUsageTrackingVar = process.env[config_1.ENVIRONMENT_VARIABLES.ALLOW_USAGE_TRACKING];
|
|
189
|
+
const defaultCmsPublishModeVar = process.env[config_1.ENVIRONMENT_VARIABLES.DEFAULT_CMS_PUBLISH_MODE];
|
|
190
|
+
if (!accountIdVar) {
|
|
191
|
+
throw new Error((0, lang_1.i18n)('config.utils.buildConfigFromEnvironment.missingAccountId'));
|
|
192
|
+
}
|
|
193
|
+
const accountId = parseInt(accountIdVar);
|
|
194
|
+
const httpTimeout = httpTimeoutVar ? parseInt(httpTimeoutVar) : undefined;
|
|
195
|
+
const httpUseLocalhost = httpUseLocalhostVar
|
|
196
|
+
? httpUseLocalhostVar === 'true'
|
|
197
|
+
: undefined;
|
|
198
|
+
const allowUsageTracking = allowUsageTrackingVar
|
|
199
|
+
? allowUsageTrackingVar === 'true'
|
|
200
|
+
: undefined;
|
|
201
|
+
const defaultCmsPublishMode = defaultCmsPublishModeVar === files_1.CMS_PUBLISH_MODE.draft ||
|
|
202
|
+
defaultCmsPublishModeVar === files_1.CMS_PUBLISH_MODE.publish
|
|
203
|
+
? defaultCmsPublishModeVar
|
|
204
|
+
: undefined;
|
|
205
|
+
const env = (0, environment_1.getValidEnv)(hubspotEnvironment);
|
|
206
|
+
let account;
|
|
207
|
+
if (personalAccessKey) {
|
|
208
|
+
account = {
|
|
209
|
+
authType: auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
210
|
+
accountId,
|
|
211
|
+
personalAccessKey,
|
|
212
|
+
env,
|
|
213
|
+
name: accountIdVar,
|
|
214
|
+
auth: {
|
|
215
|
+
tokenInfo: {},
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
else if (clientId && clientSecret && refreshToken) {
|
|
220
|
+
account = {
|
|
221
|
+
authType: auth_1.OAUTH_AUTH_METHOD.value,
|
|
222
|
+
accountId,
|
|
223
|
+
auth: {
|
|
224
|
+
clientId,
|
|
225
|
+
clientSecret,
|
|
226
|
+
scopes: auth_1.OAUTH_SCOPES.map((scope) => scope.value),
|
|
227
|
+
tokenInfo: {
|
|
228
|
+
refreshToken,
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
env,
|
|
232
|
+
name: accountIdVar,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
else if (apiKey) {
|
|
236
|
+
account = {
|
|
237
|
+
authType: auth_1.API_KEY_AUTH_METHOD.value,
|
|
238
|
+
accountId,
|
|
239
|
+
apiKey,
|
|
240
|
+
env,
|
|
241
|
+
name: accountIdVar,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
throw new Error((0, lang_1.i18n)('config.utils.buildConfigFromEnvironment.invalidAuthType'));
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
accounts: [account],
|
|
249
|
+
defaultAccount: accountId,
|
|
250
|
+
httpTimeout,
|
|
251
|
+
httpUseLocalhost,
|
|
252
|
+
allowUsageTracking,
|
|
253
|
+
defaultCmsPublishMode,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
exports.buildConfigFromEnvironment = buildConfigFromEnvironment;
|
|
257
|
+
function getAccountIdentifierAndType(accountIdentifier) {
|
|
258
|
+
const identifierAsNumber = typeof accountIdentifier === 'number'
|
|
259
|
+
? accountIdentifier
|
|
260
|
+
: parseInt(accountIdentifier);
|
|
261
|
+
const isId = !isNaN(identifierAsNumber);
|
|
262
|
+
return {
|
|
263
|
+
identifier: isId ? identifierAsNumber : accountIdentifier,
|
|
264
|
+
identifierType: isId
|
|
265
|
+
? config_1.ACCOUNT_IDENTIFIERS.ACCOUNT_ID
|
|
266
|
+
: config_1.ACCOUNT_IDENTIFIERS.NAME,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
exports.getAccountIdentifierAndType = getAccountIdentifierAndType;
|
|
270
|
+
function getConfigAccountByIdentifier(accounts, identifierFieldName, identifier) {
|
|
271
|
+
return accounts.find(account => account[identifierFieldName] === identifier);
|
|
272
|
+
}
|
|
273
|
+
exports.getConfigAccountByIdentifier = getConfigAccountByIdentifier;
|
|
274
|
+
function getConfigAccountByInferredIdentifier(accounts, accountIdentifier) {
|
|
275
|
+
const { identifier, identifierType } = getAccountIdentifierAndType(accountIdentifier);
|
|
276
|
+
return accounts.find(account => account[identifierType] === identifier);
|
|
277
|
+
}
|
|
278
|
+
exports.getConfigAccountByInferredIdentifier = getConfigAccountByInferredIdentifier;
|
|
279
|
+
function getConfigAccountIndexById(accounts, id) {
|
|
280
|
+
return accounts.findIndex(account => account.accountId === id);
|
|
281
|
+
}
|
|
282
|
+
exports.getConfigAccountIndexById = getConfigAccountIndexById;
|
|
283
|
+
function isConfigAccountValid(account) {
|
|
284
|
+
if (!account || typeof account !== 'object') {
|
|
285
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAccount'));
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
if (!account.accountId) {
|
|
289
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAccountId'));
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
if (!account.authType) {
|
|
293
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAuthType', {
|
|
294
|
+
accountId: account.accountId,
|
|
295
|
+
}));
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
let valid = false;
|
|
299
|
+
if (account.authType === auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value) {
|
|
300
|
+
valid =
|
|
301
|
+
'personalAccessKey' in account && Boolean(account.personalAccessKey);
|
|
302
|
+
if (!valid) {
|
|
303
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingPersonalAccessKey', {
|
|
304
|
+
accountId: account.accountId,
|
|
305
|
+
}));
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (account.authType === auth_1.OAUTH_AUTH_METHOD.value) {
|
|
309
|
+
valid = 'auth' in account && Boolean(account.auth);
|
|
310
|
+
if (!valid) {
|
|
311
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAuth', {
|
|
312
|
+
accountId: account.accountId,
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (account.authType === auth_1.API_KEY_AUTH_METHOD.value) {
|
|
317
|
+
valid = 'apiKey' in account && Boolean(account.apiKey);
|
|
318
|
+
if (!valid) {
|
|
319
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingApiKey', {
|
|
320
|
+
accountId: account.accountId,
|
|
321
|
+
}));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return valid;
|
|
325
|
+
}
|
|
326
|
+
exports.isConfigAccountValid = isConfigAccountValid;
|
package/constants/config.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ export declare const DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME = "hubspot.config.yml
|
|
|
2
2
|
export declare const ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME = "archived.hubspot.config.yml";
|
|
3
3
|
export declare const HUBSPOT_CONFIGURATION_FOLDER = ".hscli";
|
|
4
4
|
export declare const HUBSPOT_CONFIGURATION_FILE = "config.yml";
|
|
5
|
+
export declare const HUBSPOT_STATE_FILE = "state.json";
|
|
5
6
|
export declare const GLOBAL_CONFIG_PATH: string;
|
|
7
|
+
export declare const STATE_FILE_PATH: string;
|
|
6
8
|
export declare const DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME = ".hsaccount";
|
|
7
9
|
export declare const DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID = "DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID";
|
|
8
10
|
export declare const DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND = "DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND";
|
|
@@ -11,6 +13,8 @@ export declare const HTTP_TIMEOUT = "httpTimeout";
|
|
|
11
13
|
export declare const ENV = "env";
|
|
12
14
|
export declare const HTTP_USE_LOCALHOST = "httpUseLocalhost";
|
|
13
15
|
export declare const ALLOW_USAGE_TRACKING = "allowUsageTracking";
|
|
16
|
+
export declare const AUTO_OPEN_BROWSER = "autoOpenBrowser";
|
|
17
|
+
export declare const ALLOW_AUTO_UPDATES = "allowAutoUpdates";
|
|
14
18
|
export declare const DEFAULT_ACCOUNT = "defaultAccount";
|
|
15
19
|
export declare const DEFAULT_PORTAL = "defaultPortal";
|
|
16
20
|
export declare const MIN_HTTP_TIMEOUT = 3000;
|
|
@@ -28,3 +32,27 @@ export declare const HUBSPOT_ACCOUNT_TYPE_STRINGS: {
|
|
|
28
32
|
readonly APP_DEVELOPER: string;
|
|
29
33
|
readonly STANDARD: string;
|
|
30
34
|
};
|
|
35
|
+
export declare const CONFIG_FLAGS: {
|
|
36
|
+
readonly USE_CUSTOM_OBJECT_HUBFILE: "useCustomObjectHubfile";
|
|
37
|
+
readonly HTTP_USE_LOCALHOST: "httpUseLocalhost";
|
|
38
|
+
};
|
|
39
|
+
export declare const ENVIRONMENT_VARIABLES: {
|
|
40
|
+
readonly HUBSPOT_API_KEY: "HUBSPOT_API_KEY";
|
|
41
|
+
readonly HUBSPOT_CLIENT_ID: "HUBSPOT_CLIENT_ID";
|
|
42
|
+
readonly HUBSPOT_CLIENT_SECRET: "HUBSPOT_CLIENT_SECRET";
|
|
43
|
+
readonly HUBSPOT_PERSONAL_ACCESS_KEY: "HUBSPOT_PERSONAL_ACCESS_KEY";
|
|
44
|
+
readonly HUBSPOT_ACCOUNT_ID: "HUBSPOT_ACCOUNT_ID";
|
|
45
|
+
readonly HUBSPOT_PORTAL_ID: "HUBSPOT_PORTAL_ID";
|
|
46
|
+
readonly HUBSPOT_REFRESH_TOKEN: "HUBSPOT_REFRESH_TOKEN";
|
|
47
|
+
readonly HUBSPOT_ENVIRONMENT: "HUBSPOT_ENVIRONMENT";
|
|
48
|
+
readonly HTTP_TIMEOUT: "HTTP_TIMEOUT";
|
|
49
|
+
readonly HTTP_USE_LOCALHOST: "HTTP_USE_LOCALHOST";
|
|
50
|
+
readonly ALLOW_USAGE_TRACKING: "ALLOW_USAGE_TRACKING";
|
|
51
|
+
readonly DEFAULT_CMS_PUBLISH_MODE: "DEFUALT_CMS_PUBLISH_MODE";
|
|
52
|
+
readonly USE_ENVIRONMENT_HUBSPOT_CONFIG: "USE_ENVIRONMENT_HUBSPOT_CONFIG";
|
|
53
|
+
readonly HUBSPOT_CONFIG_PATH: "HUBSPOT_CONFIG_PATH";
|
|
54
|
+
};
|
|
55
|
+
export declare const ACCOUNT_IDENTIFIERS: {
|
|
56
|
+
readonly ACCOUNT_ID: "accountId";
|
|
57
|
+
readonly NAME: "name";
|
|
58
|
+
};
|
package/constants/config.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.HUBSPOT_ACCOUNT_TYPE_STRINGS = exports.HUBSPOT_ACCOUNT_TYPES = exports.MIN_HTTP_TIMEOUT = exports.DEFAULT_PORTAL = exports.DEFAULT_ACCOUNT = exports.ALLOW_USAGE_TRACKING = exports.HTTP_USE_LOCALHOST = exports.ENV = exports.HTTP_TIMEOUT = exports.DEFAULT_CMS_PUBLISH_MODE = exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND = exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID = exports.DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME = exports.GLOBAL_CONFIG_PATH = exports.HUBSPOT_CONFIGURATION_FILE = exports.HUBSPOT_CONFIGURATION_FOLDER = exports.ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME = exports.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME = void 0;
|
|
6
|
+
exports.ACCOUNT_IDENTIFIERS = exports.ENVIRONMENT_VARIABLES = exports.CONFIG_FLAGS = exports.HUBSPOT_ACCOUNT_TYPE_STRINGS = exports.HUBSPOT_ACCOUNT_TYPES = exports.MIN_HTTP_TIMEOUT = exports.DEFAULT_PORTAL = exports.DEFAULT_ACCOUNT = exports.ALLOW_AUTO_UPDATES = exports.AUTO_OPEN_BROWSER = exports.ALLOW_USAGE_TRACKING = exports.HTTP_USE_LOCALHOST = exports.ENV = exports.HTTP_TIMEOUT = exports.DEFAULT_CMS_PUBLISH_MODE = exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND = exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID = exports.DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME = exports.STATE_FILE_PATH = exports.GLOBAL_CONFIG_PATH = exports.HUBSPOT_STATE_FILE = exports.HUBSPOT_CONFIGURATION_FILE = exports.HUBSPOT_CONFIGURATION_FOLDER = exports.ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME = exports.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME = void 0;
|
|
7
7
|
const lang_1 = require("../utils/lang");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
@@ -11,7 +11,9 @@ exports.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME = 'hubspot.config.yml';
|
|
|
11
11
|
exports.ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME = 'archived.hubspot.config.yml';
|
|
12
12
|
exports.HUBSPOT_CONFIGURATION_FOLDER = '.hscli';
|
|
13
13
|
exports.HUBSPOT_CONFIGURATION_FILE = 'config.yml';
|
|
14
|
+
exports.HUBSPOT_STATE_FILE = 'state.json';
|
|
14
15
|
exports.GLOBAL_CONFIG_PATH = path_1.default.join(os_1.default.homedir(), exports.HUBSPOT_CONFIGURATION_FOLDER, exports.HUBSPOT_CONFIGURATION_FILE);
|
|
16
|
+
exports.STATE_FILE_PATH = path_1.default.join(os_1.default.homedir(), exports.HUBSPOT_CONFIGURATION_FOLDER, exports.HUBSPOT_STATE_FILE);
|
|
15
17
|
exports.DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME = '.hsaccount';
|
|
16
18
|
exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID = 'DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID';
|
|
17
19
|
exports.DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND = 'DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND';
|
|
@@ -20,6 +22,8 @@ exports.HTTP_TIMEOUT = 'httpTimeout';
|
|
|
20
22
|
exports.ENV = 'env';
|
|
21
23
|
exports.HTTP_USE_LOCALHOST = 'httpUseLocalhost';
|
|
22
24
|
exports.ALLOW_USAGE_TRACKING = 'allowUsageTracking';
|
|
25
|
+
exports.AUTO_OPEN_BROWSER = 'autoOpenBrowser';
|
|
26
|
+
exports.ALLOW_AUTO_UPDATES = 'allowAutoUpdates';
|
|
23
27
|
exports.DEFAULT_ACCOUNT = 'defaultAccount';
|
|
24
28
|
exports.DEFAULT_PORTAL = 'defaultPortal';
|
|
25
29
|
exports.MIN_HTTP_TIMEOUT = 3000;
|
|
@@ -37,3 +41,27 @@ exports.HUBSPOT_ACCOUNT_TYPE_STRINGS = {
|
|
|
37
41
|
APP_DEVELOPER: (0, lang_1.i18n)('lib.accountTypes.appDeveloper'),
|
|
38
42
|
STANDARD: (0, lang_1.i18n)('lib.accountTypes.standard'),
|
|
39
43
|
};
|
|
44
|
+
exports.CONFIG_FLAGS = {
|
|
45
|
+
USE_CUSTOM_OBJECT_HUBFILE: 'useCustomObjectHubfile',
|
|
46
|
+
HTTP_USE_LOCALHOST: 'httpUseLocalhost',
|
|
47
|
+
};
|
|
48
|
+
exports.ENVIRONMENT_VARIABLES = {
|
|
49
|
+
HUBSPOT_API_KEY: 'HUBSPOT_API_KEY',
|
|
50
|
+
HUBSPOT_CLIENT_ID: 'HUBSPOT_CLIENT_ID',
|
|
51
|
+
HUBSPOT_CLIENT_SECRET: 'HUBSPOT_CLIENT_SECRET',
|
|
52
|
+
HUBSPOT_PERSONAL_ACCESS_KEY: 'HUBSPOT_PERSONAL_ACCESS_KEY',
|
|
53
|
+
HUBSPOT_ACCOUNT_ID: 'HUBSPOT_ACCOUNT_ID',
|
|
54
|
+
HUBSPOT_PORTAL_ID: 'HUBSPOT_PORTAL_ID',
|
|
55
|
+
HUBSPOT_REFRESH_TOKEN: 'HUBSPOT_REFRESH_TOKEN',
|
|
56
|
+
HUBSPOT_ENVIRONMENT: 'HUBSPOT_ENVIRONMENT',
|
|
57
|
+
HTTP_TIMEOUT: 'HTTP_TIMEOUT',
|
|
58
|
+
HTTP_USE_LOCALHOST: 'HTTP_USE_LOCALHOST',
|
|
59
|
+
ALLOW_USAGE_TRACKING: 'ALLOW_USAGE_TRACKING',
|
|
60
|
+
DEFAULT_CMS_PUBLISH_MODE: 'DEFUALT_CMS_PUBLISH_MODE',
|
|
61
|
+
USE_ENVIRONMENT_HUBSPOT_CONFIG: 'USE_ENVIRONMENT_HUBSPOT_CONFIG',
|
|
62
|
+
HUBSPOT_CONFIG_PATH: 'HUBSPOT_CONFIG_PATH',
|
|
63
|
+
};
|
|
64
|
+
exports.ACCOUNT_IDENTIFIERS = {
|
|
65
|
+
ACCOUNT_ID: 'accountId',
|
|
66
|
+
NAME: 'name',
|
|
67
|
+
};
|
|
@@ -2,14 +2,3 @@ export declare const ENVIRONMENTS: {
|
|
|
2
2
|
readonly PROD: "prod";
|
|
3
3
|
readonly QA: "qa";
|
|
4
4
|
};
|
|
5
|
-
export declare const ENVIRONMENT_VARIABLES: {
|
|
6
|
-
readonly HUBSPOT_API_KEY: "HUBSPOT_API_KEY";
|
|
7
|
-
readonly HUBSPOT_CLIENT_ID: "HUBSPOT_CLIENT_ID";
|
|
8
|
-
readonly HUBSPOT_CLIENT_SECRET: "HUBSPOT_CLIENT_SECRET";
|
|
9
|
-
readonly HUBSPOT_PERSONAL_ACCESS_KEY: "HUBSPOT_PERSONAL_ACCESS_KEY";
|
|
10
|
-
readonly HUBSPOT_ACCOUNT_ID: "HUBSPOT_ACCOUNT_ID";
|
|
11
|
-
readonly HUBSPOT_PORTAL_ID: "HUBSPOT_PORTAL_ID";
|
|
12
|
-
readonly HUBSPOT_REFRESH_TOKEN: "HUBSPOT_REFRESH_TOKEN";
|
|
13
|
-
readonly HUBSPOT_ENVIRONMENT: "HUBSPOT_ENVIRONMENT";
|
|
14
|
-
readonly HTTP_TIMEOUT: "HTTP_TIMEOUT";
|
|
15
|
-
};
|
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ENVIRONMENTS = void 0;
|
|
4
4
|
exports.ENVIRONMENTS = {
|
|
5
5
|
PROD: 'prod',
|
|
6
6
|
QA: 'qa',
|
|
7
7
|
};
|
|
8
|
-
exports.ENVIRONMENT_VARIABLES = {
|
|
9
|
-
HUBSPOT_API_KEY: 'HUBSPOT_API_KEY',
|
|
10
|
-
HUBSPOT_CLIENT_ID: 'HUBSPOT_CLIENT_ID',
|
|
11
|
-
HUBSPOT_CLIENT_SECRET: 'HUBSPOT_CLIENT_SECRET',
|
|
12
|
-
HUBSPOT_PERSONAL_ACCESS_KEY: 'HUBSPOT_PERSONAL_ACCESS_KEY',
|
|
13
|
-
HUBSPOT_ACCOUNT_ID: 'HUBSPOT_ACCOUNT_ID',
|
|
14
|
-
HUBSPOT_PORTAL_ID: 'HUBSPOT_PORTAL_ID',
|
|
15
|
-
HUBSPOT_REFRESH_TOKEN: 'HUBSPOT_REFRESH_TOKEN',
|
|
16
|
-
HUBSPOT_ENVIRONMENT: 'HUBSPOT_ENVIRONMENT',
|
|
17
|
-
HTTP_TIMEOUT: 'HTTP_TIMEOUT',
|
|
18
|
-
};
|
package/http/getAxiosConfig.js
CHANGED
|
@@ -41,7 +41,13 @@ const DEFAULT_TRANSITIONAL = {
|
|
|
41
41
|
};
|
|
42
42
|
function getAxiosConfig(options) {
|
|
43
43
|
const { env, localHostOverride, headers, ...rest } = options;
|
|
44
|
-
|
|
44
|
+
let config;
|
|
45
|
+
try {
|
|
46
|
+
config = (0, config_1.getConfig)();
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
config = null;
|
|
50
|
+
}
|
|
45
51
|
let httpTimeout = 15000;
|
|
46
52
|
let httpUseLocalhost = false;
|
|
47
53
|
if (config && config.httpTimeout) {
|
package/http/index.js
CHANGED
|
@@ -39,6 +39,7 @@ const oauth_1 = require("../lib/oauth");
|
|
|
39
39
|
const logger_1 = require("../lib/logger");
|
|
40
40
|
const lang_1 = require("../utils/lang");
|
|
41
41
|
const HubSpotHttpError_1 = require("../models/HubSpotHttpError");
|
|
42
|
+
const auth_1 = require("../constants/auth");
|
|
42
43
|
const localDevAuth_1 = require("../api/localDevAuth");
|
|
43
44
|
const util = __importStar(require("util"));
|
|
44
45
|
const i18nKey = 'http.index';
|
|
@@ -82,11 +83,11 @@ function addUserAgentHeader(key, value) {
|
|
|
82
83
|
getAxiosConfig_1.USER_AGENTS[key] = value;
|
|
83
84
|
}
|
|
84
85
|
exports.addUserAgentHeader = addUserAgentHeader;
|
|
85
|
-
async function withOauth(
|
|
86
|
+
async function withOauth(account, axiosConfig) {
|
|
86
87
|
const { headers } = axiosConfig;
|
|
87
|
-
const oauth = (0, oauth_1.getOauthManager)(
|
|
88
|
+
const oauth = (0, oauth_1.getOauthManager)(account);
|
|
88
89
|
if (!oauth) {
|
|
89
|
-
throw new Error((0, lang_1.i18n)(`${i18nKey}.errors.withOauth`, { accountId }));
|
|
90
|
+
throw new Error((0, lang_1.i18n)(`${i18nKey}.errors.withOauth`, { accountId: account.accountId }));
|
|
90
91
|
}
|
|
91
92
|
const accessToken = await oauth.accessToken();
|
|
92
93
|
return {
|
|
@@ -119,26 +120,29 @@ function withPortalId(portalId, axiosConfig) {
|
|
|
119
120
|
};
|
|
120
121
|
}
|
|
121
122
|
async function withAuth(accountId, options) {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
throw new Error((0, lang_1.i18n)(`${i18nKey}.errors.withAuth`, { accountId }));
|
|
125
|
-
}
|
|
126
|
-
const { env, authType, apiKey } = accountConfig;
|
|
123
|
+
const account = (0, config_1.getConfigAccountById)(accountId);
|
|
124
|
+
const { env, authType } = account;
|
|
127
125
|
const axiosConfig = withPortalId(accountId, (0, getAxiosConfig_1.getAxiosConfig)({ env, ...options }));
|
|
128
|
-
if (authType ===
|
|
126
|
+
if (authType === auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value) {
|
|
129
127
|
return withPersonalAccessKey(accountId, axiosConfig);
|
|
130
128
|
}
|
|
131
|
-
if (authType ===
|
|
132
|
-
return withOauth(
|
|
129
|
+
if (authType === auth_1.OAUTH_AUTH_METHOD.value) {
|
|
130
|
+
return withOauth(account, axiosConfig);
|
|
133
131
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
if (authType === auth_1.API_KEY_AUTH_METHOD.value) {
|
|
133
|
+
const { params } = axiosConfig;
|
|
134
|
+
return {
|
|
135
|
+
...axiosConfig,
|
|
136
|
+
params: {
|
|
137
|
+
...params,
|
|
138
|
+
hapikey: account.apiKey,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
throw new Error((0, lang_1.i18n)(`${i18nKey}.errors.invalidAuthType`, {
|
|
143
|
+
accountId,
|
|
144
|
+
authType,
|
|
145
|
+
}));
|
|
142
146
|
}
|
|
143
147
|
async function getRequest(accountId, options) {
|
|
144
148
|
const { params, ...rest } = options;
|