@hubspot/local-dev-lib 0.4.3-experimental.0 → 0.5.0-experimental.1
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 +27 -44
- package/config/index.js +300 -275
- package/config/migrate.d.ts +11 -16
- package/config/migrate.js +79 -161
- package/config/state.d.ts +3 -3
- package/config/state.js +12 -28
- package/config/utils.d.ts +74 -0
- package/config/utils.js +327 -0
- package/constants/config.d.ts +37 -0
- package/constants/config.js +38 -1
- package/constants/environments.d.ts +0 -11
- package/constants/environments.js +1 -12
- package/errors/index.d.ts +2 -0
- package/errors/index.js +6 -1
- package/http/getAxiosConfig.js +7 -1
- package/http/index.js +23 -19
- package/lang/en.json +83 -65
- package/lib/cms/themes.js +3 -1
- package/lib/environment.d.ts +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/trackUsage.js +6 -3
- package/models/HubSpotConfigError.d.ts +6 -0
- package/models/HubSpotConfigError.js +29 -0
- package/models/OAuth2Manager.d.ts +3 -4
- package/models/OAuth2Manager.js +20 -29
- package/package.json +2 -2
- package/types/Accounts.d.ts +20 -109
- package/types/Config.d.ts +14 -27
- package/config/CLIConfiguration.d.ts +0 -72
- package/config/CLIConfiguration.js +0 -551
- 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,327 @@
|
|
|
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
|
+
const HubSpotConfigError_1 = require("../models/HubSpotConfigError");
|
|
19
|
+
function getGlobalConfigFilePath() {
|
|
20
|
+
return config_1.GLOBAL_CONFIG_PATH;
|
|
21
|
+
}
|
|
22
|
+
exports.getGlobalConfigFilePath = getGlobalConfigFilePath;
|
|
23
|
+
function getLocalConfigFilePath() {
|
|
24
|
+
return (0, findup_sync_1.default)([
|
|
25
|
+
config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
26
|
+
config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME.replace('.yml', '.yaml'),
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
exports.getLocalConfigFilePath = getLocalConfigFilePath;
|
|
30
|
+
function getLocalConfigDefaultFilePath() {
|
|
31
|
+
return `${(0, path_1.getCwd)()}/${config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME}`;
|
|
32
|
+
}
|
|
33
|
+
exports.getLocalConfigDefaultFilePath = getLocalConfigDefaultFilePath;
|
|
34
|
+
function getConfigPathEnvironmentVariables() {
|
|
35
|
+
const configFilePathFromEnvironment = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CONFIG_PATH];
|
|
36
|
+
const useEnvironmentConfig = process.env[config_1.ENVIRONMENT_VARIABLES.USE_ENVIRONMENT_HUBSPOT_CONFIG] ===
|
|
37
|
+
'true';
|
|
38
|
+
if (configFilePathFromEnvironment && useEnvironmentConfig) {
|
|
39
|
+
throw new HubSpotConfigError_1.HubSpotConfigError((0, lang_1.i18n)('config.utils.getConfigPathEnvironmentVariables.invalidEnvironmentVariables'), config_1.HUBSPOT_CONFIG_ERROR_TYPES.INVALID_ENVIRONMENT_VARIABLES, config_1.HUBSPOT_CONFIG_OPERATIONS.READ);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
configFilePathFromEnvironment,
|
|
43
|
+
useEnvironmentConfig,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports.getConfigPathEnvironmentVariables = getConfigPathEnvironmentVariables;
|
|
47
|
+
function readConfigFile(configPath) {
|
|
48
|
+
let source = '';
|
|
49
|
+
try {
|
|
50
|
+
source = fs_extra_1.default.readFileSync(configPath).toString();
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
throw new FileSystemError_1.FileSystemError({ cause: err }, {
|
|
54
|
+
filepath: configPath,
|
|
55
|
+
operation: 'read',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return source;
|
|
59
|
+
}
|
|
60
|
+
exports.readConfigFile = readConfigFile;
|
|
61
|
+
function removeUndefinedFieldsFromConfigAccount(account) {
|
|
62
|
+
Object.keys(account).forEach(k => {
|
|
63
|
+
const key = k;
|
|
64
|
+
if (account[key] === undefined) {
|
|
65
|
+
delete account[key];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
if ('auth' in account && account.auth) {
|
|
69
|
+
if (account.authType === auth_1.OAUTH_AUTH_METHOD.value) {
|
|
70
|
+
Object.keys(account.auth).forEach(k => {
|
|
71
|
+
const key = k;
|
|
72
|
+
if (account.auth?.[key] === undefined) {
|
|
73
|
+
delete account.auth?.[key];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if ('tokenInfo' in account.auth &&
|
|
78
|
+
typeof account.auth.tokenInfo === 'object') {
|
|
79
|
+
Object.keys(account.auth.tokenInfo).forEach(k => {
|
|
80
|
+
const key = k;
|
|
81
|
+
if (account.auth?.tokenInfo[key] === undefined) {
|
|
82
|
+
delete account.auth?.tokenInfo[key];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return account;
|
|
88
|
+
}
|
|
89
|
+
exports.removeUndefinedFieldsFromConfigAccount = removeUndefinedFieldsFromConfigAccount;
|
|
90
|
+
// Ensure written config files have fields in a consistent order
|
|
91
|
+
function formatConfigForWrite(config) {
|
|
92
|
+
const { defaultAccount, defaultCmsPublishMode, httpTimeout, allowUsageTracking, accounts, ...rest } = config;
|
|
93
|
+
const orderedConfig = {
|
|
94
|
+
...(defaultAccount && { defaultAccount }),
|
|
95
|
+
defaultCmsPublishMode,
|
|
96
|
+
httpTimeout,
|
|
97
|
+
allowUsageTracking,
|
|
98
|
+
...rest,
|
|
99
|
+
accounts: accounts.map(account => {
|
|
100
|
+
const { name, accountId, env, authType, ...rest } = account;
|
|
101
|
+
return {
|
|
102
|
+
name,
|
|
103
|
+
accountId,
|
|
104
|
+
env,
|
|
105
|
+
authType,
|
|
106
|
+
...rest,
|
|
107
|
+
};
|
|
108
|
+
}),
|
|
109
|
+
};
|
|
110
|
+
return removeUndefinedFieldsFromConfigAccount(orderedConfig);
|
|
111
|
+
}
|
|
112
|
+
exports.formatConfigForWrite = formatConfigForWrite;
|
|
113
|
+
function writeConfigFile(config, configPath) {
|
|
114
|
+
const source = js_yaml_1.default.dump(JSON.parse(JSON.stringify(formatConfigForWrite(config), null, 2)));
|
|
115
|
+
try {
|
|
116
|
+
fs_extra_1.default.ensureFileSync(configPath);
|
|
117
|
+
fs_extra_1.default.writeFileSync(configPath, source);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
throw new FileSystemError_1.FileSystemError({ cause: err }, {
|
|
121
|
+
filepath: configPath,
|
|
122
|
+
operation: 'write',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.writeConfigFile = writeConfigFile;
|
|
127
|
+
function getAccountType(sandboxAccountType) {
|
|
128
|
+
if (sandboxAccountType) {
|
|
129
|
+
if (sandboxAccountType.toUpperCase() === 'DEVELOPER') {
|
|
130
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX;
|
|
131
|
+
}
|
|
132
|
+
if (sandboxAccountType.toUpperCase() === 'STANDARD') {
|
|
133
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD;
|
|
137
|
+
}
|
|
138
|
+
function normalizeParsedConfig(parsedConfig) {
|
|
139
|
+
if (parsedConfig.portals) {
|
|
140
|
+
parsedConfig.accounts = parsedConfig.portals.map(account => {
|
|
141
|
+
if (account.portalId) {
|
|
142
|
+
account.accountId = account.portalId;
|
|
143
|
+
delete account.portalId;
|
|
144
|
+
}
|
|
145
|
+
if (!account.accountType) {
|
|
146
|
+
account.accountType = getAccountType(account.sandboxAccountType);
|
|
147
|
+
delete account.sandboxAccountType;
|
|
148
|
+
}
|
|
149
|
+
return account;
|
|
150
|
+
});
|
|
151
|
+
delete parsedConfig.portals;
|
|
152
|
+
}
|
|
153
|
+
if (parsedConfig.defaultPortal) {
|
|
154
|
+
const defaultAccount = getConfigAccountByInferredIdentifier(parsedConfig.accounts, parsedConfig.defaultPortal);
|
|
155
|
+
if (defaultAccount) {
|
|
156
|
+
parsedConfig.defaultAccount = defaultAccount.accountId;
|
|
157
|
+
}
|
|
158
|
+
delete parsedConfig.defaultPortal;
|
|
159
|
+
}
|
|
160
|
+
if (parsedConfig.defaultMode) {
|
|
161
|
+
parsedConfig.defaultCmsPublishMode = parsedConfig.defaultMode;
|
|
162
|
+
delete parsedConfig.defaultMode;
|
|
163
|
+
}
|
|
164
|
+
return parsedConfig;
|
|
165
|
+
}
|
|
166
|
+
exports.normalizeParsedConfig = normalizeParsedConfig;
|
|
167
|
+
function parseConfig(configSource, configPath) {
|
|
168
|
+
let parsedYaml;
|
|
169
|
+
try {
|
|
170
|
+
parsedYaml = js_yaml_1.default.load(configSource);
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
throw new HubSpotConfigError_1.HubSpotConfigError((0, lang_1.i18n)('config.utils.parseConfig.error', { configPath: configPath }), config_1.HUBSPOT_CONFIG_ERROR_TYPES.YAML_PARSING, config_1.HUBSPOT_CONFIG_OPERATIONS.READ, { cause: err });
|
|
174
|
+
}
|
|
175
|
+
return normalizeParsedConfig(parsedYaml);
|
|
176
|
+
}
|
|
177
|
+
exports.parseConfig = parseConfig;
|
|
178
|
+
function buildConfigFromEnvironment() {
|
|
179
|
+
const apiKey = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_API_KEY];
|
|
180
|
+
const clientId = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CLIENT_ID];
|
|
181
|
+
const clientSecret = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_CLIENT_SECRET];
|
|
182
|
+
const personalAccessKey = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_PERSONAL_ACCESS_KEY];
|
|
183
|
+
const accountIdVar = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_ACCOUNT_ID] ||
|
|
184
|
+
process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_PORTAL_ID];
|
|
185
|
+
const refreshToken = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_REFRESH_TOKEN];
|
|
186
|
+
const hubspotEnvironment = process.env[config_1.ENVIRONMENT_VARIABLES.HUBSPOT_ENVIRONMENT];
|
|
187
|
+
const httpTimeoutVar = process.env[config_1.ENVIRONMENT_VARIABLES.HTTP_TIMEOUT];
|
|
188
|
+
const httpUseLocalhostVar = process.env[config_1.ENVIRONMENT_VARIABLES.HTTP_USE_LOCALHOST];
|
|
189
|
+
const allowUsageTrackingVar = process.env[config_1.ENVIRONMENT_VARIABLES.ALLOW_USAGE_TRACKING];
|
|
190
|
+
const defaultCmsPublishModeVar = process.env[config_1.ENVIRONMENT_VARIABLES.DEFAULT_CMS_PUBLISH_MODE];
|
|
191
|
+
if (!accountIdVar) {
|
|
192
|
+
throw new HubSpotConfigError_1.HubSpotConfigError((0, lang_1.i18n)('config.utils.buildConfigFromEnvironment.missingAccountId'), config_1.HUBSPOT_CONFIG_ERROR_TYPES.INVALID_ENVIRONMENT_VARIABLES, config_1.HUBSPOT_CONFIG_OPERATIONS.READ);
|
|
193
|
+
}
|
|
194
|
+
const accountId = parseInt(accountIdVar);
|
|
195
|
+
const httpTimeout = httpTimeoutVar ? parseInt(httpTimeoutVar) : undefined;
|
|
196
|
+
const httpUseLocalhost = httpUseLocalhostVar
|
|
197
|
+
? httpUseLocalhostVar === 'true'
|
|
198
|
+
: undefined;
|
|
199
|
+
const allowUsageTracking = allowUsageTrackingVar
|
|
200
|
+
? allowUsageTrackingVar === 'true'
|
|
201
|
+
: undefined;
|
|
202
|
+
const defaultCmsPublishMode = defaultCmsPublishModeVar === files_1.CMS_PUBLISH_MODE.draft ||
|
|
203
|
+
defaultCmsPublishModeVar === files_1.CMS_PUBLISH_MODE.publish
|
|
204
|
+
? defaultCmsPublishModeVar
|
|
205
|
+
: undefined;
|
|
206
|
+
const env = (0, environment_1.getValidEnv)(hubspotEnvironment);
|
|
207
|
+
let account;
|
|
208
|
+
if (personalAccessKey) {
|
|
209
|
+
account = {
|
|
210
|
+
authType: auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
211
|
+
accountId,
|
|
212
|
+
personalAccessKey,
|
|
213
|
+
env,
|
|
214
|
+
name: accountIdVar,
|
|
215
|
+
auth: {
|
|
216
|
+
tokenInfo: {},
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
else if (clientId && clientSecret && refreshToken) {
|
|
221
|
+
account = {
|
|
222
|
+
authType: auth_1.OAUTH_AUTH_METHOD.value,
|
|
223
|
+
accountId,
|
|
224
|
+
auth: {
|
|
225
|
+
clientId,
|
|
226
|
+
clientSecret,
|
|
227
|
+
scopes: auth_1.OAUTH_SCOPES.map((scope) => scope.value),
|
|
228
|
+
tokenInfo: {
|
|
229
|
+
refreshToken,
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
env,
|
|
233
|
+
name: accountIdVar,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
else if (apiKey) {
|
|
237
|
+
account = {
|
|
238
|
+
authType: auth_1.API_KEY_AUTH_METHOD.value,
|
|
239
|
+
accountId,
|
|
240
|
+
apiKey,
|
|
241
|
+
env,
|
|
242
|
+
name: accountIdVar,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
throw new HubSpotConfigError_1.HubSpotConfigError((0, lang_1.i18n)('config.utils.buildConfigFromEnvironment.invalidAuthType'), config_1.HUBSPOT_CONFIG_ERROR_TYPES.INVALID_ENVIRONMENT_VARIABLES, config_1.HUBSPOT_CONFIG_OPERATIONS.READ);
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
accounts: [account],
|
|
250
|
+
defaultAccount: accountId,
|
|
251
|
+
httpTimeout,
|
|
252
|
+
httpUseLocalhost,
|
|
253
|
+
allowUsageTracking,
|
|
254
|
+
defaultCmsPublishMode,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
exports.buildConfigFromEnvironment = buildConfigFromEnvironment;
|
|
258
|
+
function getAccountIdentifierAndType(accountIdentifier) {
|
|
259
|
+
const identifierAsNumber = typeof accountIdentifier === 'number'
|
|
260
|
+
? accountIdentifier
|
|
261
|
+
: parseInt(accountIdentifier);
|
|
262
|
+
const isId = !isNaN(identifierAsNumber);
|
|
263
|
+
return {
|
|
264
|
+
identifier: isId ? identifierAsNumber : accountIdentifier,
|
|
265
|
+
identifierType: isId
|
|
266
|
+
? config_1.ACCOUNT_IDENTIFIERS.ACCOUNT_ID
|
|
267
|
+
: config_1.ACCOUNT_IDENTIFIERS.NAME,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
exports.getAccountIdentifierAndType = getAccountIdentifierAndType;
|
|
271
|
+
function getConfigAccountByIdentifier(accounts, identifierFieldName, identifier) {
|
|
272
|
+
return accounts.find(account => account[identifierFieldName] === identifier);
|
|
273
|
+
}
|
|
274
|
+
exports.getConfigAccountByIdentifier = getConfigAccountByIdentifier;
|
|
275
|
+
function getConfigAccountByInferredIdentifier(accounts, accountIdentifier) {
|
|
276
|
+
const { identifier, identifierType } = getAccountIdentifierAndType(accountIdentifier);
|
|
277
|
+
return accounts.find(account => account[identifierType] === identifier);
|
|
278
|
+
}
|
|
279
|
+
exports.getConfigAccountByInferredIdentifier = getConfigAccountByInferredIdentifier;
|
|
280
|
+
function getConfigAccountIndexById(accounts, id) {
|
|
281
|
+
return accounts.findIndex(account => account.accountId === id);
|
|
282
|
+
}
|
|
283
|
+
exports.getConfigAccountIndexById = getConfigAccountIndexById;
|
|
284
|
+
function isConfigAccountValid(account) {
|
|
285
|
+
if (!account || typeof account !== 'object') {
|
|
286
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAccount'));
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
if (!account.accountId) {
|
|
290
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAccountId'));
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
if (!account.authType) {
|
|
294
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAuthType', {
|
|
295
|
+
accountId: account.accountId,
|
|
296
|
+
}));
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
let valid = false;
|
|
300
|
+
if (account.authType === auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value) {
|
|
301
|
+
valid =
|
|
302
|
+
'personalAccessKey' in account && Boolean(account.personalAccessKey);
|
|
303
|
+
if (!valid) {
|
|
304
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingPersonalAccessKey', {
|
|
305
|
+
accountId: account.accountId,
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (account.authType === auth_1.OAUTH_AUTH_METHOD.value) {
|
|
310
|
+
valid = 'auth' in account && Boolean(account.auth);
|
|
311
|
+
if (!valid) {
|
|
312
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingAuth', {
|
|
313
|
+
accountId: account.accountId,
|
|
314
|
+
}));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (account.authType === auth_1.API_KEY_AUTH_METHOD.value) {
|
|
318
|
+
valid = 'apiKey' in account && Boolean(account.apiKey);
|
|
319
|
+
if (!valid) {
|
|
320
|
+
logger_1.logger.debug((0, lang_1.i18n)('config.utils.isConfigAccountValid.missingApiKey', {
|
|
321
|
+
accountId: account.accountId,
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return valid;
|
|
326
|
+
}
|
|
327
|
+
exports.isConfigAccountValid = isConfigAccountValid;
|
package/constants/config.d.ts
CHANGED
|
@@ -32,3 +32,40 @@ export declare const HUBSPOT_ACCOUNT_TYPE_STRINGS: {
|
|
|
32
32
|
readonly APP_DEVELOPER: string;
|
|
33
33
|
readonly STANDARD: string;
|
|
34
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
|
+
};
|
|
59
|
+
export declare const HUBSPOT_CONFIG_ERROR_TYPES: {
|
|
60
|
+
readonly CONFIG_NOT_FOUND: "CONFIG_NOT_FOUND";
|
|
61
|
+
readonly ACCOUNT_NOT_FOUND: "ACCOUNT_NOT_FOUND";
|
|
62
|
+
readonly NO_DEFAULT_ACCOUNT: "NO_DEFAULT_ACCOUNT";
|
|
63
|
+
readonly INVALID_ENVIRONMENT_VARIABLES: "ENVIRONMENT_VARIABLES";
|
|
64
|
+
readonly YAML_PARSING: "YAML_PARSING";
|
|
65
|
+
readonly INVALID_ACCOUNT: "INVALID_ACCOUNT";
|
|
66
|
+
readonly INVALID_FIELD: "INVALID_FIELD";
|
|
67
|
+
};
|
|
68
|
+
export declare const HUBSPOT_CONFIG_OPERATIONS: {
|
|
69
|
+
readonly READ: "READ";
|
|
70
|
+
readonly WRITE: "WRITE";
|
|
71
|
+
};
|
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_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;
|
|
6
|
+
exports.HUBSPOT_CONFIG_OPERATIONS = exports.HUBSPOT_CONFIG_ERROR_TYPES = 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"));
|
|
@@ -41,3 +41,40 @@ exports.HUBSPOT_ACCOUNT_TYPE_STRINGS = {
|
|
|
41
41
|
APP_DEVELOPER: (0, lang_1.i18n)('lib.accountTypes.appDeveloper'),
|
|
42
42
|
STANDARD: (0, lang_1.i18n)('lib.accountTypes.standard'),
|
|
43
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
|
+
};
|
|
68
|
+
exports.HUBSPOT_CONFIG_ERROR_TYPES = {
|
|
69
|
+
CONFIG_NOT_FOUND: 'CONFIG_NOT_FOUND',
|
|
70
|
+
ACCOUNT_NOT_FOUND: 'ACCOUNT_NOT_FOUND',
|
|
71
|
+
NO_DEFAULT_ACCOUNT: 'NO_DEFAULT_ACCOUNT',
|
|
72
|
+
INVALID_ENVIRONMENT_VARIABLES: 'ENVIRONMENT_VARIABLES',
|
|
73
|
+
YAML_PARSING: 'YAML_PARSING',
|
|
74
|
+
INVALID_ACCOUNT: 'INVALID_ACCOUNT',
|
|
75
|
+
INVALID_FIELD: 'INVALID_FIELD',
|
|
76
|
+
};
|
|
77
|
+
exports.HUBSPOT_CONFIG_OPERATIONS = {
|
|
78
|
+
READ: 'READ',
|
|
79
|
+
WRITE: 'WRITE',
|
|
80
|
+
};
|
|
@@ -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/errors/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HubSpotHttpError } from '../models/HubSpotHttpError';
|
|
2
2
|
import { BaseError } from '../types/Error';
|
|
3
3
|
import { FileSystemError } from '../models/FileSystemError';
|
|
4
|
+
import { HubSpotConfigError } from '../models/HubSpotConfigError';
|
|
4
5
|
export declare function isSpecifiedError(err: unknown, { statusCode, category, subCategory, errorType, code, }: {
|
|
5
6
|
statusCode?: number;
|
|
6
7
|
category?: string;
|
|
@@ -17,3 +18,4 @@ export declare function isHubSpotHttpError(error?: unknown): error is HubSpotHtt
|
|
|
17
18
|
export declare function isGithubRateLimitError(err: unknown): boolean;
|
|
18
19
|
export declare function isSystemError(err: unknown): err is BaseError;
|
|
19
20
|
export declare function isFileSystemError(err: unknown): err is FileSystemError;
|
|
21
|
+
export declare function isHubSpotConfigError(err: unknown): err is HubSpotConfigError;
|
package/errors/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFileSystemError = exports.isSystemError = exports.isGithubRateLimitError = exports.isHubSpotHttpError = exports.isValidationError = exports.isAuthError = exports.isTimeoutError = exports.isGatingError = exports.isMissingScopeError = exports.isSpecifiedError = void 0;
|
|
3
|
+
exports.isHubSpotConfigError = exports.isFileSystemError = exports.isSystemError = exports.isGithubRateLimitError = exports.isHubSpotHttpError = exports.isValidationError = exports.isAuthError = exports.isTimeoutError = exports.isGatingError = exports.isMissingScopeError = exports.isSpecifiedError = void 0;
|
|
4
4
|
const HubSpotHttpError_1 = require("../models/HubSpotHttpError");
|
|
5
5
|
const FileSystemError_1 = require("../models/FileSystemError");
|
|
6
|
+
const HubSpotConfigError_1 = require("../models/HubSpotConfigError");
|
|
6
7
|
function isSpecifiedError(err, { statusCode, category, subCategory, errorType, code, }) {
|
|
7
8
|
if (!isHubSpotHttpError(err)) {
|
|
8
9
|
return false;
|
|
@@ -70,3 +71,7 @@ function isFileSystemError(err) {
|
|
|
70
71
|
return err instanceof FileSystemError_1.FileSystemError;
|
|
71
72
|
}
|
|
72
73
|
exports.isFileSystemError = isFileSystemError;
|
|
74
|
+
function isHubSpotConfigError(err) {
|
|
75
|
+
return err instanceof HubSpotConfigError_1.HubSpotConfigError;
|
|
76
|
+
}
|
|
77
|
+
exports.isHubSpotConfigError = isHubSpotConfigError;
|
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;
|