Skip to content

Commit ca9e320

Browse files
authored
Fix circular dependencies [DPGDXFE-1017] (#369)
* Fix circular dependencies * Add circular deps precommit check and fix linting * Remove authorizedScopesForPortalAndUser * Remove prepare script * Remove prepare script * undo experimental version
1 parent b9ef9b1 commit ca9e320

35 files changed

+191
-256
lines changed

.husky/pre-commit

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env sh
22
. "$(dirname -- "$0")/_/husky.sh"
33

4-
npm run lint
4+
yarn lint
5+
yarn circular-deps

api/developerTestAccounts.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
import { httpClient } from '../http/client.js';
21
import { http } from '../http/index.js';
3-
import { getAxiosConfig } from '../http/getAxiosConfig.js';
4-
import { ENVIRONMENTS } from '../constants/environments.js';
52
import {
6-
DeveloperTestAccount,
73
CreateDeveloperTestAccountResponse,
84
FetchDeveloperTestAccountsResponse,
95
DeveloperTestAccountConfig,
@@ -13,7 +9,6 @@ import {
139
GenerateDeveloperTestAccountPersonalAccessKeyResponse,
1410
} from '../types/developerTestAccounts.js';
1511
import { SANDBOX_TIMEOUT } from '../constants/api.js';
16-
import { Environment } from '../types/Config.js';
1712
import { HubSpotPromise } from '../types/Http.js';
1813

1914
const TEST_ACCOUNTS_API_PATH = 'integrators/test-portals/v2';
@@ -70,27 +65,6 @@ export function deleteDeveloperTestAccount(
7065
});
7166
}
7267

73-
export function fetchDeveloperTestAccountData(
74-
accessToken: string,
75-
accountId: number,
76-
env: Environment = ENVIRONMENTS.PROD
77-
): HubSpotPromise<DeveloperTestAccount> {
78-
const axiosConfig = getAxiosConfig({
79-
env,
80-
url: `${TEST_ACCOUNTS_API_PATH}/self`,
81-
params: { portalId: accountId },
82-
});
83-
const reqWithToken = {
84-
...axiosConfig,
85-
headers: {
86-
...axiosConfig.headers,
87-
Authorization: `Bearer ${accessToken}`,
88-
},
89-
};
90-
91-
return httpClient<DeveloperTestAccount>(reqWithToken);
92-
}
93-
9468
export function installOauthAppIntoDeveloperTestAccount(
9569
accountId: number,
9670
testAccountId: number,

api/fileMapper.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ import contentDisposition from 'content-disposition';
44
import { AxiosResponse } from 'axios';
55
import { http } from '../http/index.js';
66
import { getCwd } from '../lib/path.js';
7+
import { FILE_MAPPER_API_PATH } from '../constants/endpoints.js';
78
import { FileMapperNode, FileMapperOptions, FileTree } from '../types/Files.js';
89
import { HubSpotPromise } from '../types/Http.js';
910

10-
export const FILE_MAPPER_API_PATH = 'content/filemapper/v1';
11-
1211
export function createFileMapperNodeFromStreamResponse(
1312
filePath: string,
1413
response: Partial<AxiosResponse>

api/fireAlarm.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { http } from '../http/index.js';
2+
import { FIREALARM_API_AUTH_PATH } from '../constants/endpoints.js';
23
import { FireAlarm } from '../types/FireAlarm.js';
34
import { HubSpotPromise } from '../types/Http.js';
45

5-
export const FIREALARM_API_AUTH_PATH = 'firealarm/v4/alarm';
6-
76
export function fetchFireAlarms(
87
accountId: number
98
): HubSpotPromise<Array<FireAlarm>> {

api/localDevAuth.ts

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,13 @@
1-
import { getAxiosConfig } from '../http/getAxiosConfig.js';
21
import { http } from '../http/index.js';
3-
import { ENVIRONMENTS } from '../constants/environments.js';
4-
import { Environment } from '../types/Config.js';
2+
import { LOCALDEVAUTH_API_AUTH_PATH } from '../constants/endpoints.js';
53
import {
64
ScopeData,
7-
AccessTokenResponse,
85
EnabledFeaturesResponse,
96
ScopeAuthorizationResponse,
107
} from '../types/Accounts.js';
11-
import { httpClient } from '../http/client.js';
128
import { PublicAppInstallationData } from '../types/Apps.js';
139
import { HubSpotPromise } from '../types/Http.js';
1410

15-
const LOCALDEVAUTH_API_AUTH_PATH = 'localdevauth/v1/auth';
16-
17-
export const LOCALDEVAUTH_ACCESS_TOKEN_PATH = `${LOCALDEVAUTH_API_AUTH_PATH}/refresh`;
18-
19-
export function fetchAccessToken(
20-
personalAccessKey: string,
21-
env: Environment = ENVIRONMENTS.PROD,
22-
portalId?: number
23-
): HubSpotPromise<AccessTokenResponse> {
24-
const axiosConfig = getAxiosConfig({
25-
env,
26-
localHostOverride: true,
27-
url: LOCALDEVAUTH_ACCESS_TOKEN_PATH,
28-
data: {
29-
encodedOAuthRefreshToken: personalAccessKey,
30-
},
31-
params: portalId ? { portalId } : {},
32-
});
33-
34-
return httpClient<AccessTokenResponse>({
35-
...axiosConfig,
36-
method: 'post',
37-
});
38-
}
39-
4011
export function fetchScopeData(
4112
accountId: number,
4213
scopeGroup: string

api/sandboxHubs.ts

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import { AxiosPromise } from 'axios';
2-
import { httpClient } from '../http/client.js';
31
import { http } from '../http/index.js';
4-
import { getAxiosConfig } from '../http/getAxiosConfig.js';
5-
import { ENVIRONMENTS } from '../constants/environments.js';
62
import { SANDBOX_TIMEOUT } from '../constants/api.js';
7-
import { Environment } from '../types/Config.js';
83
import {
94
SandboxPersonalAccessKey,
10-
SandboxHubData,
115
SandboxResponse,
126
SandboxUsageLimitsResponse,
137
V2Sandbox,
@@ -46,27 +40,6 @@ export function getSandboxUsageLimits(
4640
});
4741
}
4842

49-
export function fetchSandboxHubData(
50-
accessToken: string,
51-
accountId: number,
52-
env: Environment = ENVIRONMENTS.PROD
53-
): AxiosPromise<SandboxHubData> {
54-
const axiosConfig = getAxiosConfig({
55-
env,
56-
url: `${SANDBOX_API_PATH}/self`,
57-
params: { portalId: accountId },
58-
});
59-
const reqWithToken = {
60-
...axiosConfig,
61-
headers: {
62-
...axiosConfig.headers,
63-
Authorization: `Bearer ${accessToken}`,
64-
},
65-
};
66-
67-
return httpClient<SandboxHubData>(reqWithToken);
68-
}
69-
7043
export function createV2Sandbox(
7144
accountId: number,
7245
name: string,

config/__tests__/defaultAccountOverride.test.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,14 @@ import {
55
getDefaultAccountOverrideAccountId,
66
getDefaultAccountOverrideFilePath,
77
} from '../defaultAccountOverride';
8-
import * as config from '../index';
98
import { PersonalAccessKeyConfigAccount } from '../../types/Accounts';
109
import { PERSONAL_ACCESS_KEY_AUTH_METHOD } from '../../constants/auth';
1110

1211
vi.mock('fs-extra');
1312
vi.mock('findup-sync');
14-
vi.mock('../index');
1513

1614
const mockFs = fs as Mocked<typeof fs>;
1715
const mockFindup = findup as MockedFunction<typeof findup>;
18-
const mockGetAllConfigAccounts =
19-
config.getAllConfigAccounts as MockedFunction<
20-
typeof config.getAllConfigAccounts
21-
>;
2216

2317
const PAK_ACCOUNT: PersonalAccessKeyConfigAccount = {
2418
name: 'test-account',
@@ -36,27 +30,25 @@ describe('defaultAccountOverride', () => {
3630
describe('getDefaultAccountOverrideAccountId()', () => {
3731
it('returns null when override file does not exist', () => {
3832
mockFindup.mockReturnValueOnce(null);
39-
expect(getDefaultAccountOverrideAccountId()).toBeNull();
33+
expect(getDefaultAccountOverrideAccountId([PAK_ACCOUNT])).toBeNull();
4034
});
4135

4236
it('throws an error when override file exists but is not a number', () => {
4337
mockFindup.mockReturnValueOnce('.hsaccount');
4438
mockFs.readFileSync.mockReturnValueOnce('string');
45-
expect(() => getDefaultAccountOverrideAccountId()).toThrow();
39+
expect(() => getDefaultAccountOverrideAccountId([PAK_ACCOUNT])).toThrow();
4640
});
4741

4842
it('throws an error when account specified in override file does not exist in config', () => {
4943
mockFindup.mockReturnValueOnce('.hsaccount');
5044
mockFs.readFileSync.mockReturnValueOnce('234');
51-
mockGetAllConfigAccounts.mockReturnValueOnce([PAK_ACCOUNT]);
52-
expect(() => getDefaultAccountOverrideAccountId()).toThrow();
45+
expect(() => getDefaultAccountOverrideAccountId([PAK_ACCOUNT])).toThrow();
5346
});
5447

5548
it('returns the account ID when an account with that ID exists in config', () => {
5649
mockFindup.mockReturnValueOnce('.hsaccount');
5750
mockFs.readFileSync.mockReturnValueOnce('123');
58-
mockGetAllConfigAccounts.mockReturnValueOnce([PAK_ACCOUNT]);
59-
expect(getDefaultAccountOverrideAccountId()).toBe(123);
51+
expect(getDefaultAccountOverrideAccountId([PAK_ACCOUNT])).toBe(123);
6052
});
6153
});
6254

config/__tests__/utils.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
import { vi, describe, it, expect, afterEach, MockedFunction, Mocked } from 'vitest';
1+
import {
2+
vi,
3+
describe,
4+
it,
5+
expect,
6+
afterEach,
7+
MockedFunction,
8+
Mocked,
9+
} from 'vitest';
210
import fs from 'fs-extra';
311
import {
412
getLocalConfigDefaultFilePath,

config/defaultAccountOverride.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import {
99
} from '../constants/config.js';
1010
import { i18n } from '../utils/lang.js';
1111
import { FileSystemError } from '../models/FileSystemError.js';
12-
import { getAllConfigAccounts } from './index.js';
12+
import { HubSpotConfigAccount } from '../types/Accounts.js';
1313

1414
const i18nKey = 'config.defaultAccountOverride';
1515

16-
export function getDefaultAccountOverrideAccountId(): number | null {
16+
export function getDefaultAccountOverrideAccountId(
17+
accounts: Array<HubSpotConfigAccount>
18+
): number | null {
1719
const defaultAccountOverrideFilePath = getDefaultAccountOverrideFilePath();
1820

1921
if (!defaultAccountOverrideFilePath) {
@@ -47,8 +49,6 @@ export function getDefaultAccountOverrideAccountId(): number | null {
4749
);
4850
}
4951

50-
const accounts = getAllConfigAccounts();
51-
5252
const account = accounts?.find(account => account.accountId === accountId);
5353
if (!account) {
5454
throw new Error(

config/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {
3232
doesConfigFileExistAtPath,
3333
} from './utils.js';
3434
import { CMS_PUBLISH_MODE } from '../constants/files.js';
35-
import { Environment } from '../types/Config.js';
35+
import { Environment } from '../types/Accounts.js';
3636
import { i18n } from '../utils/lang.js';
3737
import { getDefaultAccountOverrideAccountId } from './defaultAccountOverride.js';
3838
import { getValidEnv } from '../lib/environment.js';
@@ -269,7 +269,7 @@ export function getConfigDefaultAccount(): HubSpotConfigAccount {
269269
const globalConfigPath = getGlobalConfigFilePath();
270270
if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
271271
const defaultAccountOverrideAccountId =
272-
getDefaultAccountOverrideAccountId();
272+
getDefaultAccountOverrideAccountId(accounts);
273273
defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
274274
}
275275

@@ -311,7 +311,7 @@ export function getConfigDefaultAccountIfExists():
311311
const globalConfigPath = getGlobalConfigFilePath();
312312
if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
313313
const defaultAccountOverrideAccountId =
314-
getDefaultAccountOverrideAccountId();
314+
getDefaultAccountOverrideAccountId(accounts);
315315
defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
316316
}
317317

0 commit comments

Comments
 (0)