@hubspot/local-dev-lib 0.7.6-experimental.4 → 0.7.7-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.
@@ -1,4 +1,3 @@
1
1
  import { HubSpotConfigAccount } from '../types/Accounts.js';
2
2
  export declare function getDefaultAccountOverrideAccountId(accounts: Array<HubSpotConfigAccount>): number | null;
3
- export declare function removeDefaultAccountOverrideFile(): void;
4
3
  export declare function getDefaultAccountOverrideFilePath(): string | null;
@@ -40,21 +40,6 @@ export function getDefaultAccountOverrideAccountId(accounts) {
40
40
  }
41
41
  return account.accountId;
42
42
  }
43
- export function removeDefaultAccountOverrideFile() {
44
- const filePath = getDefaultAccountOverrideFilePath();
45
- if (!filePath) {
46
- return;
47
- }
48
- try {
49
- fs.unlinkSync(filePath);
50
- }
51
- catch (e) {
52
- throw new FileSystemError({ cause: e }, {
53
- filepath: filePath,
54
- operation: 'write',
55
- });
56
- }
57
- }
58
43
  export function getDefaultAccountOverrideFilePath() {
59
44
  return findup([DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME], {
60
45
  cwd: getCwd(),
package/config/index.d.ts CHANGED
@@ -18,7 +18,6 @@ export declare function getConfigAccountIfExists(identifier: number | string): H
18
18
  export declare function getConfigDefaultAccount(): HubSpotConfigAccount;
19
19
  export declare function getConfigDefaultAccountIfExists(): HubSpotConfigAccount | undefined;
20
20
  export declare function getAllConfigAccounts(): HubSpotConfigAccount[];
21
- export declare function getLinkedOrAllConfigAccounts(): HubSpotConfigAccount[];
22
21
  export declare function getConfigAccountEnvironment(identifier: number | string): Environment;
23
22
  export declare function addConfigAccount(accountToAdd: HubSpotConfigAccount): void;
24
23
  export declare function updateConfigAccount(updatedAccount: HubSpotConfigAccount): void;
package/config/index.js CHANGED
@@ -11,7 +11,6 @@ import { HubSpotConfigError } from '../models/HubSpotConfigError.js';
11
11
  import { HUBSPOT_CONFIG_ERROR_TYPES } from '../constants/config.js';
12
12
  import { isDeepEqual } from '../lib/isDeepEqual.js';
13
13
  import { getCwd } from '../lib/path.js';
14
- import { getHsSettingsFileIfExists } from './hsSettings.js';
15
14
  const EMPTY_CONFIG = { accounts: [] };
16
15
  export function getGlobalConfigFilePath() {
17
16
  return GLOBAL_CONFIG_PATH;
@@ -153,17 +152,11 @@ export function getConfigAccountIfExists(identifier) {
153
152
  export function getConfigDefaultAccount() {
154
153
  const { accounts, defaultAccount } = getConfig();
155
154
  let defaultAccountToUse = defaultAccount;
156
- const hsSettingsFile = getHsSettingsFileIfExists();
157
- if (hsSettingsFile && hsSettingsFile.localDefaultAccount) {
158
- defaultAccountToUse = hsSettingsFile.localDefaultAccount;
159
- }
160
- else {
161
- const currentConfigPath = getConfigFilePath();
162
- const globalConfigPath = getGlobalConfigFilePath();
163
- if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
164
- const defaultAccountOverrideAccountId = getDefaultAccountOverrideAccountId(accounts);
165
- defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
166
- }
155
+ const currentConfigPath = getConfigFilePath();
156
+ const globalConfigPath = getGlobalConfigFilePath();
157
+ if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
158
+ const defaultAccountOverrideAccountId = getDefaultAccountOverrideAccountId(accounts);
159
+ defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
167
160
  }
168
161
  if (!defaultAccountToUse) {
169
162
  throw new HubSpotConfigError(i18n('config.getConfigDefaultAccount.fieldMissingError'), HUBSPOT_CONFIG_ERROR_TYPES.NO_DEFAULT_ACCOUNT, HUBSPOT_CONFIG_OPERATIONS.READ);
@@ -179,17 +172,12 @@ export function getConfigDefaultAccount() {
179
172
  export function getConfigDefaultAccountIfExists() {
180
173
  const { accounts, defaultAccount } = getConfig();
181
174
  let defaultAccountToUse = defaultAccount;
182
- const hsSettingsFile = getHsSettingsFileIfExists();
183
- if (hsSettingsFile && hsSettingsFile.localDefaultAccount) {
184
- defaultAccountToUse = hsSettingsFile.localDefaultAccount;
185
- }
186
- else {
187
- const currentConfigPath = getConfigFilePath();
188
- const globalConfigPath = getGlobalConfigFilePath();
189
- if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
190
- const defaultAccountOverrideAccountId = getDefaultAccountOverrideAccountId(accounts);
191
- defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
192
- }
175
+ // Only check for default account override if we're using the global config
176
+ const currentConfigPath = getConfigFilePath();
177
+ const globalConfigPath = getGlobalConfigFilePath();
178
+ if (currentConfigPath === globalConfigPath && globalConfigFileExists()) {
179
+ const defaultAccountOverrideAccountId = getDefaultAccountOverrideAccountId(accounts);
180
+ defaultAccountToUse = defaultAccountOverrideAccountId || defaultAccount;
193
181
  }
194
182
  if (!defaultAccountToUse) {
195
183
  return;
@@ -201,14 +189,6 @@ export function getAllConfigAccounts() {
201
189
  const { accounts } = getConfig();
202
190
  return accounts;
203
191
  }
204
- export function getLinkedOrAllConfigAccounts() {
205
- const { accounts } = getConfig();
206
- const hsSettingsFile = getHsSettingsFileIfExists();
207
- if (!hsSettingsFile || hsSettingsFile.accounts.length === 0) {
208
- return accounts;
209
- }
210
- return accounts.filter(a => hsSettingsFile.accounts.includes(a.accountId));
211
- }
212
192
  export function getConfigAccountEnvironment(identifier) {
213
193
  const config = getConfig();
214
194
  const account = getConfigAccountByInferredIdentifier(config.accounts, identifier);
@@ -102,11 +102,3 @@ export declare const HUBSPOT_CONFIG_OPERATIONS: {
102
102
  readonly WRITE: "WRITE";
103
103
  readonly DELETE: "DELETE";
104
104
  };
105
- export declare const HS_FOLDER = ".hs";
106
- export declare const HS_SETTINGS_FILENAME = "settings.json";
107
- export declare const HS_README_FILENAME = "README.txt";
108
- export declare const DEFAULT_HS_SETTINGS_PATH = ".hs/settings.json";
109
- export declare const EMPTY_HS_SETTINGS_FILE: {
110
- localDefaultAccount: undefined;
111
- accounts: never[];
112
- };
@@ -105,11 +105,3 @@ export const HUBSPOT_CONFIG_OPERATIONS = {
105
105
  WRITE: 'WRITE',
106
106
  DELETE: 'DELETE',
107
107
  };
108
- export const HS_FOLDER = '.hs';
109
- export const HS_SETTINGS_FILENAME = 'settings.json';
110
- export const HS_README_FILENAME = 'README.txt';
111
- export const DEFAULT_HS_SETTINGS_PATH = `${HS_FOLDER}/${HS_SETTINGS_FILENAME}`;
112
- export const EMPTY_HS_SETTINGS_FILE = {
113
- localDefaultAccount: undefined,
114
- accounts: [],
115
- };
@@ -1,4 +1,3 @@
1
1
  import { GitInclusionResult } from '../types/Config.js';
2
2
  export declare function checkAndAddConfigToGitignore(configPath: string): void;
3
- export declare function checkAndAddHsFolderToGitignore(settingsPath: string): void;
4
3
  export declare function checkGitInclusion(configPath: string): GitInclusionResult;
package/lib/gitignore.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'path';
3
3
  import { isConfigPathInGitRepo, getGitignoreFiles, configFilenameIsIgnoredByGitignore, } from '../utils/git.js';
4
- import { DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, HS_FOLDER, } from '../constants/config.js';
4
+ import { DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME } from '../constants/config.js';
5
5
  import { i18n } from '../utils/lang.js';
6
6
  const i18nKey = 'lib.gitignore';
7
7
  const GITIGNORE_FILE = '.gitignore';
@@ -23,27 +23,6 @@ export function checkAndAddConfigToGitignore(configPath) {
23
23
  throw new Error(i18n(`${i18nKey}.errors.configIgnore`), { cause: e });
24
24
  }
25
25
  }
26
- export function checkAndAddHsFolderToGitignore(settingsPath) {
27
- try {
28
- const hsDirPath = path.resolve(path.dirname(settingsPath));
29
- const { configIgnored, gitignoreFiles } = checkGitInclusion(hsDirPath);
30
- if (configIgnored)
31
- return;
32
- let gitignoreFilePath = gitignoreFiles && gitignoreFiles.length ? gitignoreFiles[0] : null;
33
- if (!gitignoreFilePath) {
34
- gitignoreFilePath = path.join(path.dirname(hsDirPath), GITIGNORE_FILE);
35
- fs.writeFileSync(gitignoreFilePath, '');
36
- }
37
- const gitignoreContents = fs.readFileSync(gitignoreFilePath).toString();
38
- if (gitignoreContents.includes(HS_FOLDER))
39
- return;
40
- const updatedContents = `${gitignoreContents.trim()}\n\n# HubSpot link folder\n${HS_FOLDER}\n`;
41
- fs.writeFileSync(gitignoreFilePath, updatedContents);
42
- }
43
- catch (e) {
44
- throw new Error(i18n(`${i18nKey}.errors.configIgnore`), { cause: e });
45
- }
46
- }
47
26
  export function checkGitInclusion(configPath) {
48
27
  const result = {
49
28
  inGit: false,
package/lib/logger.d.ts CHANGED
@@ -14,6 +14,7 @@ interface LogLabels {
14
14
  debug: string;
15
15
  }
16
16
  export declare function getLabels(): LogLabels;
17
+ export declare function getSymbols(): LogLabels;
17
18
  /**
18
19
  * Chalk styles for logger strings.
19
20
  */
package/lib/logger.js CHANGED
@@ -13,7 +13,14 @@ const UNICODE_LABELS = {
13
13
  warning: '⚠ WARNING',
14
14
  error: '✖ ERROR',
15
15
  info: 'ℹ INFO',
16
- debug: 'DEBUG',
16
+ debug: 'DEBUG',
17
+ };
18
+ const UNICODE_SYMBOLS = {
19
+ success: '✔',
20
+ warning: '⚠',
21
+ error: '✖',
22
+ info: 'ℹ',
23
+ debug: '⚙',
17
24
  };
18
25
  const ASCII_LABELS = {
19
26
  success: '[SUCCESS]',
@@ -25,14 +32,17 @@ const ASCII_LABELS = {
25
32
  export function getLabels() {
26
33
  return isUnicodeSupported() ? UNICODE_LABELS : ASCII_LABELS;
27
34
  }
35
+ export function getSymbols() {
36
+ return isUnicodeSupported() ? UNICODE_SYMBOLS : ASCII_LABELS;
37
+ }
28
38
  /**
29
39
  * Chalk styles for logger strings.
30
40
  */
31
41
  export const Styles = {
32
- debug: chalk.reset.blue,
42
+ debug: chalk.reset.grey,
33
43
  log: chalk.reset.white,
34
44
  success: chalk.reset.green,
35
- info: chalk.reset.white,
45
+ info: chalk.reset.blue,
36
46
  warn: chalk.reset.yellow,
37
47
  error: chalk.reset.red,
38
48
  };
@@ -66,7 +76,7 @@ export class Logger {
66
76
  }
67
77
  debug(...args) {
68
78
  const labels = getLabels();
69
- console.debug(...stylize(labels.debug, Styles.log, args));
79
+ console.debug(...stylize(labels.debug, Styles.debug, args));
70
80
  }
71
81
  group(...args) {
72
82
  console.group(...args);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hubspot/local-dev-lib",
3
- "version": "0.7.6-experimental.4",
3
+ "version": "0.7.7-experimental.0",
4
4
  "type": "module",
5
5
  "description": "Provides library functionality for HubSpot local development tooling, including the HubSpot CLI",
6
6
  "files": [
@@ -59,7 +59,6 @@
59
59
  "./config/defaultAccountOverride": "./config/defaultAccountOverride.js",
60
60
  "./config/migrate": "./config/migrate.js",
61
61
  "./config/state": "./config/state.js",
62
- "./config/hsSettings": "./config/hsSettings.js",
63
62
  "./config": "./config/index.js",
64
63
  "./constants/*": "./constants/*.js",
65
64
  "./enums/*": "./enums/*.js",
@@ -1,4 +0,0 @@
1
- import { HsSettingsFile } from '../types/HsSettings.js';
2
- export declare function getHsSettingsFilePath(): string | null;
3
- export declare function getHsSettingsFileIfExists(): HsSettingsFile | null;
4
- export declare function writeHsSettingsFile(settingsFile: HsSettingsFile): void;
@@ -1,55 +0,0 @@
1
- import findupSync from 'findup-sync';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { HS_FOLDER, HS_README_FILENAME, HS_SETTINGS_FILENAME, } from '../constants/config.js';
5
- import { getCwd } from '../lib/path.js';
6
- import { FileSystemError } from '../models/FileSystemError.js';
7
- const HS_README_CONTENTS = `Why do I have a folder named ".hs" in my project?
8
- The ".hs" folder is created when you link a directory to a HubSpot project.
9
-
10
- What does the "settings.json" file contain?
11
- The "settings.json" file contains:
12
- - The ID(s) of the HubSpot account(s) that you linked ("accounts")
13
- - The ID of the HubSpot account that you set as the default for this directory ("linkedDefaultAccount")
14
-
15
- Should I commit the ".hs" folder?
16
- No, the ".hs" folder should not be committed to version control. It is automatically added to your .gitignore file when the directory is linked.
17
- `;
18
- export function getHsSettingsFilePath() {
19
- return findupSync([`${HS_FOLDER}/${HS_SETTINGS_FILENAME}`], {
20
- cwd: getCwd(),
21
- });
22
- }
23
- export function getHsSettingsFileIfExists() {
24
- const hsSettingsFilePath = getHsSettingsFilePath();
25
- if (!hsSettingsFilePath) {
26
- return null;
27
- }
28
- try {
29
- return JSON.parse(fs.readFileSync(hsSettingsFilePath, 'utf-8'));
30
- }
31
- catch (e) {
32
- throw new FileSystemError({ cause: e }, {
33
- filepath: hsSettingsFilePath,
34
- operation: 'read',
35
- });
36
- }
37
- }
38
- export function writeHsSettingsFile(settingsFile) {
39
- const dir = getCwd();
40
- const hsFolderPath = path.join(dir, HS_FOLDER);
41
- const isFirstScaffold = !fs.existsSync(hsFolderPath);
42
- try {
43
- fs.mkdirSync(hsFolderPath, { recursive: true });
44
- fs.writeFileSync(path.join(dir, HS_FOLDER, HS_SETTINGS_FILENAME), JSON.stringify(settingsFile, null, 2), 'utf8');
45
- if (isFirstScaffold) {
46
- fs.writeFileSync(path.join(hsFolderPath, HS_README_FILENAME), HS_README_CONTENTS, 'utf8');
47
- }
48
- }
49
- catch (err) {
50
- throw new FileSystemError({ cause: err }, {
51
- filepath: dir,
52
- operation: 'write',
53
- });
54
- }
55
- }
@@ -1,4 +0,0 @@
1
- export type HsSettingsFile = {
2
- localDefaultAccount: number | undefined;
3
- accounts: number[];
4
- };
@@ -1 +0,0 @@
1
- export {};