@hs-x/cli 0.3.6 → 0.4.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.
Files changed (211) hide show
  1. package/README.md +126 -0
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +58 -59
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/kit.d.ts.map +1 -1
  6. package/dist/cli/kit.js +1 -1
  7. package/dist/cli/kit.js.map +1 -1
  8. package/dist/cloudflare-auth.d.ts +19 -0
  9. package/dist/cloudflare-auth.d.ts.map +1 -1
  10. package/dist/cloudflare-auth.js +83 -2
  11. package/dist/cloudflare-auth.js.map +1 -1
  12. package/dist/cloudflare-oauth.d.ts.map +1 -1
  13. package/dist/cloudflare-oauth.js +18 -19
  14. package/dist/cloudflare-oauth.js.map +1 -1
  15. package/dist/cloudflare-scoped-resource.d.ts +41 -0
  16. package/dist/cloudflare-scoped-resource.d.ts.map +1 -0
  17. package/dist/cloudflare-scoped-resource.js +74 -0
  18. package/dist/cloudflare-scoped-resource.js.map +1 -0
  19. package/dist/command-catalog.d.ts +13 -0
  20. package/dist/command-catalog.d.ts.map +1 -0
  21. package/dist/command-catalog.js +50 -0
  22. package/dist/command-catalog.js.map +1 -0
  23. package/dist/commands/completion.d.ts.map +1 -1
  24. package/dist/commands/completion.js +287 -47
  25. package/dist/commands/completion.js.map +1 -1
  26. package/dist/commands/connect.d.ts.map +1 -1
  27. package/dist/commands/connect.js +274 -38
  28. package/dist/commands/connect.js.map +1 -1
  29. package/dist/commands/control-plane-read.d.ts +31 -3
  30. package/dist/commands/control-plane-read.d.ts.map +1 -1
  31. package/dist/commands/control-plane-read.js +136 -37
  32. package/dist/commands/control-plane-read.js.map +1 -1
  33. package/dist/commands/deploy-retry.d.ts +20 -0
  34. package/dist/commands/deploy-retry.d.ts.map +1 -0
  35. package/dist/commands/deploy-retry.js +106 -0
  36. package/dist/commands/deploy-retry.js.map +1 -0
  37. package/dist/commands/deploy.d.ts +16 -8
  38. package/dist/commands/deploy.d.ts.map +1 -1
  39. package/dist/commands/deploy.js +1027 -373
  40. package/dist/commands/deploy.js.map +1 -1
  41. package/dist/commands/dev.d.ts +19 -1
  42. package/dist/commands/dev.d.ts.map +1 -1
  43. package/dist/commands/dev.js +1378 -88
  44. package/dist/commands/dev.js.map +1 -1
  45. package/dist/commands/doctor.d.ts.map +1 -1
  46. package/dist/commands/doctor.js +27 -10
  47. package/dist/commands/doctor.js.map +1 -1
  48. package/dist/commands/flags.d.ts +9 -4
  49. package/dist/commands/flags.d.ts.map +1 -1
  50. package/dist/commands/flags.js +208 -80
  51. package/dist/commands/flags.js.map +1 -1
  52. package/dist/commands/help-command.d.ts.map +1 -1
  53. package/dist/commands/help-command.js +177 -86
  54. package/dist/commands/help-command.js.map +1 -1
  55. package/dist/commands/init.d.ts.map +1 -1
  56. package/dist/commands/init.js +5 -0
  57. package/dist/commands/init.js.map +1 -1
  58. package/dist/commands/link.d.ts.map +1 -1
  59. package/dist/commands/link.js +74 -15
  60. package/dist/commands/link.js.map +1 -1
  61. package/dist/commands/project.d.ts +107 -0
  62. package/dist/commands/project.d.ts.map +1 -0
  63. package/dist/commands/project.js +586 -0
  64. package/dist/commands/project.js.map +1 -0
  65. package/dist/commands/secrets.d.ts +2 -2
  66. package/dist/commands/status.d.ts.map +1 -1
  67. package/dist/commands/status.js +15 -5
  68. package/dist/commands/status.js.map +1 -1
  69. package/dist/commands/validate.d.ts +19 -0
  70. package/dist/commands/validate.d.ts.map +1 -1
  71. package/dist/commands/validate.js +26 -7
  72. package/dist/commands/validate.js.map +1 -1
  73. package/dist/constants.d.ts +1 -1
  74. package/dist/constants.js +1 -1
  75. package/dist/control-plane-tenant-provisioning.d.ts +24 -0
  76. package/dist/control-plane-tenant-provisioning.d.ts.map +1 -0
  77. package/dist/control-plane-tenant-provisioning.js +85 -0
  78. package/dist/control-plane-tenant-provisioning.js.map +1 -0
  79. package/dist/deploy-targets.d.ts +24 -0
  80. package/dist/deploy-targets.d.ts.map +1 -0
  81. package/dist/deploy-targets.js +38 -0
  82. package/dist/deploy-targets.js.map +1 -0
  83. package/dist/dev/account-selection.d.ts +16 -0
  84. package/dist/dev/account-selection.d.ts.map +1 -0
  85. package/dist/dev/account-selection.js +22 -0
  86. package/dist/dev/account-selection.js.map +1 -0
  87. package/dist/dev/browser-log-bridge.d.ts +32 -0
  88. package/dist/dev/browser-log-bridge.d.ts.map +1 -0
  89. package/dist/dev/browser-log-bridge.js +156 -0
  90. package/dist/dev/browser-log-bridge.js.map +1 -0
  91. package/dist/dev/compat-shim.d.ts +3 -3
  92. package/dist/dev/compat-shim.d.ts.map +1 -1
  93. package/dist/dev/compat-shim.js +29 -4
  94. package/dist/dev/compat-shim.js.map +1 -1
  95. package/dist/dev/component-selection.d.ts +25 -0
  96. package/dist/dev/component-selection.d.ts.map +1 -0
  97. package/dist/dev/component-selection.js +79 -0
  98. package/dist/dev/component-selection.js.map +1 -0
  99. package/dist/dev/console-capture.d.ts +18 -0
  100. package/dist/dev/console-capture.d.ts.map +1 -0
  101. package/dist/dev/console-capture.js +57 -0
  102. package/dist/dev/console-capture.js.map +1 -0
  103. package/dist/dev/event-bus.d.ts +1 -1
  104. package/dist/dev/event-bus.js +1 -1
  105. package/dist/dev/frontend-log-relay.d.ts +27 -0
  106. package/dist/dev/frontend-log-relay.d.ts.map +1 -0
  107. package/dist/dev/frontend-log-relay.js +102 -0
  108. package/dist/dev/frontend-log-relay.js.map +1 -0
  109. package/dist/dev/invoke.d.ts +3 -4
  110. package/dist/dev/invoke.d.ts.map +1 -1
  111. package/dist/dev/invoke.js +9 -4
  112. package/dist/dev/invoke.js.map +1 -1
  113. package/dist/dev/keyboard.d.ts +1 -0
  114. package/dist/dev/keyboard.d.ts.map +1 -1
  115. package/dist/dev/keyboard.js +9 -3
  116. package/dist/dev/keyboard.js.map +1 -1
  117. package/dist/dev/log-server.js +3 -0
  118. package/dist/dev/log-server.js.map +1 -1
  119. package/dist/dev/loopback-http-listener.d.ts +18 -0
  120. package/dist/dev/loopback-http-listener.d.ts.map +1 -0
  121. package/dist/dev/loopback-http-listener.js +91 -0
  122. package/dist/dev/loopback-http-listener.js.map +1 -0
  123. package/dist/dev/managed-session.d.ts +124 -0
  124. package/dist/dev/managed-session.d.ts.map +1 -0
  125. package/dist/dev/managed-session.js +597 -0
  126. package/dist/dev/managed-session.js.map +1 -0
  127. package/dist/dev/port-process.d.ts +21 -0
  128. package/dist/dev/port-process.d.ts.map +1 -0
  129. package/dist/dev/port-process.js +145 -0
  130. package/dist/dev/port-process.js.map +1 -0
  131. package/dist/dev/session-manager.d.ts +11 -1
  132. package/dist/dev/session-manager.d.ts.map +1 -1
  133. package/dist/dev/session-manager.js +65 -14
  134. package/dist/dev/session-manager.js.map +1 -1
  135. package/dist/dev/stream-event-format.d.ts +14 -0
  136. package/dist/dev/stream-event-format.d.ts.map +1 -0
  137. package/dist/dev/stream-event-format.js +262 -0
  138. package/dist/dev/stream-event-format.js.map +1 -0
  139. package/dist/dev/stream-filter.d.ts.map +1 -1
  140. package/dist/dev/stream-filter.js +16 -1
  141. package/dist/dev/stream-filter.js.map +1 -1
  142. package/dist/dev/stream-renderer.d.ts +4 -2
  143. package/dist/dev/stream-renderer.d.ts.map +1 -1
  144. package/dist/dev/stream-renderer.js +224 -84
  145. package/dist/dev/stream-renderer.js.map +1 -1
  146. package/dist/errors-registry.d.ts.map +1 -1
  147. package/dist/errors-registry.js +246 -0
  148. package/dist/errors-registry.js.map +1 -1
  149. package/dist/help.d.ts.map +1 -1
  150. package/dist/help.js +20 -3
  151. package/dist/help.js.map +1 -1
  152. package/dist/hubspot-app-logs.d.ts +38 -5
  153. package/dist/hubspot-app-logs.d.ts.map +1 -1
  154. package/dist/hubspot-app-logs.js +88 -17
  155. package/dist/hubspot-app-logs.js.map +1 -1
  156. package/dist/hubspot-auth.d.ts +19 -1
  157. package/dist/hubspot-auth.d.ts.map +1 -1
  158. package/dist/hubspot-auth.js +228 -83
  159. package/dist/hubspot-auth.js.map +1 -1
  160. package/dist/hubspot-developer-client.d.ts +87 -0
  161. package/dist/hubspot-developer-client.d.ts.map +1 -1
  162. package/dist/hubspot-developer-client.js +232 -1
  163. package/dist/hubspot-developer-client.js.map +1 -1
  164. package/dist/hubspot-project-archive.d.ts +21 -0
  165. package/dist/hubspot-project-archive.d.ts.map +1 -0
  166. package/dist/hubspot-project-archive.js +281 -0
  167. package/dist/hubspot-project-archive.js.map +1 -0
  168. package/dist/hubspot-project.d.ts +32 -0
  169. package/dist/hubspot-project.d.ts.map +1 -0
  170. package/dist/hubspot-project.js +269 -0
  171. package/dist/hubspot-project.js.map +1 -0
  172. package/dist/local-project-picker.js +1 -1
  173. package/dist/local-project-picker.js.map +1 -1
  174. package/dist/machine-artifact.d.ts +16 -0
  175. package/dist/machine-artifact.d.ts.map +1 -0
  176. package/dist/machine-artifact.js +18 -0
  177. package/dist/machine-artifact.js.map +1 -0
  178. package/dist/machine-id.d.ts +15 -0
  179. package/dist/machine-id.d.ts.map +1 -1
  180. package/dist/machine-id.js +53 -0
  181. package/dist/machine-id.js.map +1 -1
  182. package/dist/mutation-consent.d.ts +20 -0
  183. package/dist/mutation-consent.d.ts.map +1 -0
  184. package/dist/mutation-consent.js +9 -0
  185. package/dist/mutation-consent.js.map +1 -0
  186. package/dist/output-context.d.ts +3 -0
  187. package/dist/output-context.d.ts.map +1 -1
  188. package/dist/output-context.js +7 -1
  189. package/dist/output-context.js.map +1 -1
  190. package/dist/prompt.d.ts.map +1 -1
  191. package/dist/prompt.js +123 -48
  192. package/dist/prompt.js.map +1 -1
  193. package/dist/reporter/index.js +1 -1
  194. package/dist/reporter/index.js.map +1 -1
  195. package/dist/reporter/style.d.ts.map +1 -1
  196. package/dist/reporter/style.js +5 -0
  197. package/dist/reporter/style.js.map +1 -1
  198. package/dist/services/hubspot-dev-client.js +3 -0
  199. package/dist/services/hubspot-dev-client.js.map +1 -1
  200. package/dist/services/telemetry.d.ts +1 -2
  201. package/dist/services/telemetry.d.ts.map +1 -1
  202. package/dist/services/telemetry.js +1 -10
  203. package/dist/services/telemetry.js.map +1 -1
  204. package/dist/telemetry.d.ts.map +1 -1
  205. package/dist/telemetry.js +1 -7
  206. package/dist/telemetry.js.map +1 -1
  207. package/dist/tenant-data-plane-provisioning.d.ts +35 -0
  208. package/dist/tenant-data-plane-provisioning.d.ts.map +1 -0
  209. package/dist/tenant-data-plane-provisioning.js +38 -0
  210. package/dist/tenant-data-plane-provisioning.js.map +1 -0
  211. package/package.json +14 -12
@@ -2,6 +2,8 @@ import { readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { createHubSpotDeveloperClient, } from '@hs-x/hubspot-cli';
4
4
  import { discoverHubSpotAccounts } from './hubspot-auth.js';
5
+ import { resolveDirectHubSpotContext, } from './hubspot-developer-client.js';
6
+ import { detectLocalProjectMode, readHubSpotProjectDescriptor } from './hubspot-project.js';
5
7
  /**
6
8
  * HubSpot's per-app log store (`developers/logs/*`) — the half of the timeline
7
9
  * Workers Logs cannot see: card/extension renders, production frontend
@@ -63,24 +65,66 @@ export function parseHubSpotLogSystemTypes(values) {
63
65
  return { ok: true, systemTypes };
64
66
  }
65
67
  /**
66
- * Resolve everything needed to read HubSpot app logs from local state alone:
67
- * the app identity from the `.hs-x/hubspot.json` binding `deploy` maintains,
68
- * and PAK credentials from env or the HubSpot CLI config `deploy` already
69
- * falls back to. No control plane, no link required.
68
+ * Resolve a `project logs` account and client once, then derive its app source
69
+ * without another config/default discovery pass. The returned account is safe
70
+ * to render; the credential remains encapsulated in `client`.
71
+ */
72
+ export async function resolveDirectHubSpotLogsContext(input) {
73
+ const accountInput = {
74
+ argv: input.argv,
75
+ ...(input.cwd ? { cwd: input.cwd } : {}),
76
+ ...(input.env ? { env: input.env } : {}),
77
+ ...(input.home ? { home: input.home } : {}),
78
+ };
79
+ const context = await resolveDirectHubSpotContext(accountInput);
80
+ const client = context.createClient();
81
+ const sourceResolution = await resolveHubSpotLogsSource({
82
+ cwd: input.cwd ?? process.cwd(),
83
+ ...(input.appId ? { appId: input.appId } : {}),
84
+ ...(input.env ? { env: input.env } : {}),
85
+ account: context.account,
86
+ client,
87
+ });
88
+ const resolution = sourceResolution.ok
89
+ ? {
90
+ ok: true,
91
+ source: {
92
+ appId: sourceResolution.source.appId,
93
+ developerAccountId: sourceResolution.source.developerAccountId,
94
+ ...(sourceResolution.source.projectName
95
+ ? { projectName: sourceResolution.source.projectName }
96
+ : {}),
97
+ },
98
+ }
99
+ : sourceResolution;
100
+ return { account: context.account, resolution, client };
101
+ }
102
+ /**
103
+ * Resolve the app-log source identity. Legacy callers discover their PAK from
104
+ * local state; `project logs` supplies a canonical account/client pair and
105
+ * bypasses that discovery entirely. No control plane or link is required.
70
106
  */
71
107
  export async function resolveHubSpotLogsSource(input) {
72
108
  const env = input.env ?? process.env;
73
109
  const binding = await readHubSpotAppBinding(input.cwd);
74
- const appId = parsePositiveInt(input.appId ?? env.HSX_HUBSPOT_APP_ID) ?? binding?.appId;
75
- if (appId === undefined) {
110
+ let appId = parsePositiveInt(input.appId ?? env.HSX_HUBSPOT_APP_ID) ?? binding?.appId;
111
+ if (appId === undefined && (await detectLocalProjectMode(input.cwd)) !== 'hubspot-direct') {
76
112
  return {
77
113
  ok: false,
78
114
  reason: 'no HubSpot app binding — deploy once with `hs-x deploy` (which records .hs-x/hubspot.json) or pass --app-id',
79
115
  };
80
116
  }
81
- let developerAccountId = parsePositiveInt(env.HSX_HUBSPOT_DEVELOPER_ACCOUNT_ID) ?? binding?.developerAccountId;
82
- let personalAccessKey = nonEmpty(env.HSX_HUBSPOT_PAK);
83
- if (developerAccountId === undefined || personalAccessKey === undefined) {
117
+ let developerAccountId = input.account
118
+ ? parsePositiveInt(input.account.id)
119
+ : (parsePositiveInt(env.HSX_HUBSPOT_DEVELOPER_ACCOUNT_ID) ?? binding?.developerAccountId);
120
+ let personalAccessKey = input.account ? undefined : nonEmpty(env.HSX_HUBSPOT_PAK);
121
+ if (input.account && !input.client) {
122
+ return {
123
+ ok: false,
124
+ reason: 'the resolved HubSpot account was not paired with its credential-bound client',
125
+ };
126
+ }
127
+ if (!input.account && (developerAccountId === undefined || personalAccessKey === undefined)) {
84
128
  const discovered = await discoverHubSpotAccounts(input.cwd);
85
129
  const account = discovered?.accounts.find((candidate) => developerAccountId !== undefined && candidate.portalId === developerAccountId) ??
86
130
  discovered?.accounts.find((candidate) => candidate.isDefault) ??
@@ -96,22 +140,53 @@ export async function resolveHubSpotLogsSource(input) {
96
140
  reason: 'no HubSpot developer account id — set HSX_HUBSPOT_DEVELOPER_ACCOUNT_ID or configure a HubSpot CLI account (see `hs-x doctor`)',
97
141
  };
98
142
  }
99
- if (personalAccessKey === undefined) {
143
+ if (!input.account && personalAccessKey === undefined) {
100
144
  return {
101
145
  ok: false,
102
146
  reason: 'no HubSpot personal access key — set HSX_HUBSPOT_PAK or configure a HubSpot CLI account (see `hs-x doctor`)',
103
147
  };
104
148
  }
149
+ let projectName = binding?.projectName;
150
+ if (appId === undefined) {
151
+ try {
152
+ const descriptor = await readHubSpotProjectDescriptor(input.cwd);
153
+ projectName = descriptor.name;
154
+ const client = input.client ??
155
+ createHubSpotDeveloperClient({
156
+ developerAccountId,
157
+ personalAccessKey: personalAccessKey,
158
+ });
159
+ appId = await client.projects.resolveAppId({
160
+ projectName: descriptor.name,
161
+ ...(descriptor.appUid ? { appUid: descriptor.appUid } : {}),
162
+ });
163
+ }
164
+ catch (cause) {
165
+ return {
166
+ ok: false,
167
+ reason: `could not resolve the HubSpot app from hsproject.json — ${cause instanceof Error ? cause.message : String(cause)}; pass --app-id to select it explicitly`,
168
+ };
169
+ }
170
+ }
105
171
  return {
106
172
  ok: true,
107
173
  source: {
108
174
  appId,
109
175
  developerAccountId,
110
- personalAccessKey,
111
- ...(binding?.projectName ? { projectName: binding.projectName } : {}),
176
+ ...(personalAccessKey ? { personalAccessKey } : {}),
177
+ ...(projectName ? { projectName } : {}),
112
178
  },
113
179
  };
114
180
  }
181
+ function createLegacyHubSpotLogsClient(source) {
182
+ if (!source.personalAccessKey) {
183
+ throw new Error('HubSpot app logs require the credential-bound client from the selected account resolution.');
184
+ }
185
+ return createHubSpotDeveloperClient({
186
+ developerAccountId: source.developerAccountId,
187
+ personalAccessKey: source.personalAccessKey,
188
+ });
189
+ }
115
190
  /**
116
191
  * One merged pull of the HubSpot app-log store: every system type queried in
117
192
  * parallel (surface as much as possible by default; `--filter` narrows). With
@@ -121,11 +196,7 @@ export async function resolveHubSpotLogsSource(input) {
121
196
  * `hs-x logs --trace` shows the actual log lines.
122
197
  */
123
198
  export async function fetchHubSpotLogsPayload(input) {
124
- const client = input.client ??
125
- createHubSpotDeveloperClient({
126
- developerAccountId: input.source.developerAccountId,
127
- personalAccessKey: input.source.personalAccessKey,
128
- });
199
+ const client = input.client ?? createLegacyHubSpotLogsClient(input.source);
129
200
  const endTime = input.now ?? Date.now();
130
201
  const startTime = endTime - input.sinceMinutes * 60_000;
131
202
  const systemTypes = input.systemTypes ?? HUBSPOT_LOG_SYSTEM_TYPES;
@@ -1 +1 @@
1
- {"version":3,"file":"hubspot-app-logs.js","sourceRoot":"","sources":["../src/hubspot-app-logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hubspot-app-logs.js","sourceRoot":"","sources":["../src/hubspot-app-logs.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,32 @@ export interface HubSpotAccount {
7
7
  readonly portalId: number;
8
8
  readonly personalAccessKey?: string;
9
9
  readonly authType?: string;
10
+ readonly accountType?: string;
11
+ readonly parentAccountId?: number;
10
12
  readonly isDefault: boolean;
11
13
  }
12
14
  export interface HubSpotAccountsDiscovery {
13
15
  readonly source: string;
14
16
  readonly defaultPortal?: string;
17
+ readonly defaultSource?: string;
15
18
  readonly accounts: readonly HubSpotAccount[];
16
19
  }
17
- export declare function discoverHubSpotAccounts(cwd: string): Promise<HubSpotAccountsDiscovery | undefined>;
20
+ export type HubSpotAccountConfigErrorCode = 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_NOT_FOUND' | 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_UNREADABLE' | 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_INVALID';
21
+ /**
22
+ * A hard failure for an explicitly selected HubSpot CLI config. Ambient config
23
+ * discovery is intentionally best-effort, but `--config` is an authority
24
+ * boundary: once selected, no other project/global config may be consulted.
25
+ */
26
+ export declare class HubSpotAccountConfigError extends Error {
27
+ readonly code: HubSpotAccountConfigErrorCode;
28
+ readonly configPath: string;
29
+ readonly name = "HubSpotAccountConfigError";
30
+ constructor(code: HubSpotAccountConfigErrorCode, configPath: string, message: string);
31
+ }
32
+ export declare function discoverHubSpotAccounts(cwd: string, options?: {
33
+ readonly home?: string;
34
+ readonly configPath?: string;
35
+ }): Promise<HubSpotAccountsDiscovery | undefined>;
18
36
  export declare const HUBSPOT_PAK_GENERATION_URL = "https://app.hubspot.com/l/personal-access-key";
19
37
  export interface ExchangedPak {
20
38
  readonly pak: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hubspot-auth.d.ts","sourceRoot":"","sources":["../src/hubspot-auth.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAoB/C;AA8FD,eAAO,MAAM,0BAA0B,kDAAkD,CAAC;AAE1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAkBD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,SAA2B,GACjC,OAAO,CAAC,YAAY,CAAC,CA0EvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM1D;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBjE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AA+BD,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAmE/E;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAkB9F;AAsBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuB9E"}
1
+ {"version":3,"file":"hubspot-auth.d.ts","sourceRoot":"","sources":["../src/hubspot-auth.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,34 @@ import { homedir } from 'node:os';
3
3
  import { dirname, join, resolve } from 'node:path';
4
4
  import { HsxHttpClientRaw, HttpClient, HttpClientRequest, HttpClientResponse } from '@hs-x/types';
5
5
  import { Cause, Effect, Exit, Option, Schema } from 'effect';
6
- export async function discoverHubSpotAccounts(cwd) {
7
- const home = homedir();
8
- const candidates = [
9
- ...walkUp(cwd, 'hubspot.config.yml'),
6
+ import { parse as parseYaml } from 'yaml';
7
+ /**
8
+ * A hard failure for an explicitly selected HubSpot CLI config. Ambient config
9
+ * discovery is intentionally best-effort, but `--config` is an authority
10
+ * boundary: once selected, no other project/global config may be consulted.
11
+ */
12
+ export class HubSpotAccountConfigError extends Error {
13
+ code;
14
+ configPath;
15
+ name = 'HubSpotAccountConfigError';
16
+ constructor(code, configPath, message) {
17
+ super(message);
18
+ this.code = code;
19
+ this.configPath = configPath;
20
+ }
21
+ }
22
+ export async function discoverHubSpotAccounts(cwd, options = {}) {
23
+ const home = options.home ?? homedir();
24
+ const explicitConfigPath = options.configPath ? resolve(cwd, options.configPath) : undefined;
25
+ if (explicitConfigPath) {
26
+ return readExplicitHubSpotAccounts(explicitConfigPath);
27
+ }
28
+ const globalConfigPaths = [
10
29
  join(home, '.hscli', 'config.yml'),
11
30
  join(home, '.hscli', 'hubspot.config.yml'),
12
31
  join(home, 'hubspot.config.yml'),
13
32
  ];
33
+ const candidates = [...walkUp(cwd, 'hubspot.config.yml'), ...globalConfigPaths];
14
34
  const seen = new Set();
15
35
  for (const path of candidates) {
16
36
  if (seen.has(path))
@@ -19,101 +39,226 @@ export async function discoverHubSpotAccounts(cwd) {
19
39
  const content = await tryRead(path);
20
40
  if (content === undefined)
21
41
  continue;
22
- const parsed = parseHubSpotConfig(content);
42
+ let parsed;
43
+ try {
44
+ parsed = parseHubSpotConfig(content);
45
+ }
46
+ catch {
47
+ continue;
48
+ }
23
49
  if (parsed.accounts.length > 0) {
24
- return { source: path, ...parsed };
50
+ const isGlobalConfig = globalConfigPaths.some((globalPath) => resolve(globalPath) === resolve(path));
51
+ if (!isGlobalConfig)
52
+ return { source: path, ...parsed };
53
+ const override = await readDefaultAccountOverride(cwd, parsed.accounts);
54
+ if (!override)
55
+ return { source: path, ...parsed };
56
+ return {
57
+ source: path,
58
+ defaultPortal: String(override.portalId),
59
+ defaultSource: override.source,
60
+ accounts: parsed.accounts.map((account) => ({
61
+ ...account,
62
+ isDefault: account.portalId === override.portalId,
63
+ })),
64
+ };
25
65
  }
26
66
  }
27
67
  return undefined;
28
68
  }
29
- function parseHubSpotConfig(yaml) {
30
- const lines = yaml.split(/\r?\n/);
31
- let defaultPortal;
32
- const accounts = [];
33
- let current;
34
- let itemIndent = -1;
35
- const commit = () => {
36
- if (current?.name && typeof current.portalId === 'number') {
37
- accounts.push({
38
- name: current.name,
39
- portalId: current.portalId,
40
- ...(current.pak ? { personalAccessKey: current.pak } : {}),
41
- ...(current.authType ? { authType: current.authType } : {}),
42
- isDefault: false,
43
- });
44
- }
45
- current = undefined;
46
- itemIndent = -1;
47
- };
48
- for (let i = 0; i < lines.length; i++) {
49
- const line = lines[i] ?? '';
50
- const dp = line.match(/^(?:defaultPortal|defaultAccount|defaultHubId)\s*:\s*(.+?)\s*$/);
51
- if (dp) {
52
- defaultPortal = (dp[1] ?? '').replace(/^['"]|['"]$/g, '');
69
+ async function readExplicitHubSpotAccounts(configPath) {
70
+ let content;
71
+ try {
72
+ content = await readFile(configPath, 'utf8');
73
+ }
74
+ catch (cause) {
75
+ const code = isNodeErrorCode(cause, 'ENOENT')
76
+ ? 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_NOT_FOUND'
77
+ : 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_UNREADABLE';
78
+ throw new HubSpotAccountConfigError(code, configPath, code === 'HSX_E_HUBSPOT_ACCOUNT_CONFIG_NOT_FOUND'
79
+ ? `Explicit HubSpot config ${configPath} does not exist.`
80
+ : `Explicit HubSpot config ${configPath} could not be read.`);
81
+ }
82
+ let parsed;
83
+ try {
84
+ parsed = parseHubSpotConfig(content);
85
+ }
86
+ catch {
87
+ throw new HubSpotAccountConfigError('HSX_E_HUBSPOT_ACCOUNT_CONFIG_INVALID', configPath, `Explicit HubSpot config ${configPath} is malformed or contains an invalid accounts/portals structure.`);
88
+ }
89
+ if (parsed.accounts.length === 0) {
90
+ throw new HubSpotAccountConfigError('HSX_E_HUBSPOT_ACCOUNT_CONFIG_INVALID', configPath, `Explicit HubSpot config ${configPath} is malformed or contains no valid accounts.`);
91
+ }
92
+ if (parsed.defaultPortal &&
93
+ !parsed.accounts.some((account) => account.name === parsed.defaultPortal || String(account.portalId) === parsed.defaultPortal)) {
94
+ throw new HubSpotAccountConfigError('HSX_E_HUBSPOT_ACCOUNT_CONFIG_INVALID', configPath, `Explicit HubSpot config ${configPath} selects unknown default account ${parsed.defaultPortal}.`);
95
+ }
96
+ return { source: configPath, ...parsed };
97
+ }
98
+ function isNodeErrorCode(cause, code) {
99
+ return (typeof cause === 'object' &&
100
+ cause !== null &&
101
+ 'code' in cause &&
102
+ cause.code === code);
103
+ }
104
+ async function readDefaultAccountOverride(cwd, accounts) {
105
+ for (const path of walkUp(cwd, '.hsaccount')) {
106
+ const content = await tryRead(path);
107
+ if (content === undefined)
53
108
  continue;
109
+ const portalId = Number.parseInt(content, 10);
110
+ if (!Number.isFinite(portalId)) {
111
+ throw new Error(`Error in ${path}: expected a HubSpot account id.`);
54
112
  }
55
- const itemMatch = line.match(/^(\s*)-\s+(.*)$/);
56
- if (itemMatch) {
57
- commit();
58
- itemIndent = (itemMatch[1] ?? '').length;
59
- current = {};
60
- const firstField = (itemMatch[2] ?? '').match(/^(\w+)\s*:\s*(.*)$/);
61
- if (firstField)
62
- applyField(current, firstField[1] ?? '', firstField[2] ?? '', lines, i);
63
- continue;
113
+ if (!accounts.some((account) => account.portalId === portalId)) {
114
+ throw new Error(`Error in ${path}: HubSpot account ${portalId} is not present in the active CLI config.`);
64
115
  }
65
- if (current) {
66
- const indent = (line.match(/^(\s*)/)?.[1] ?? '').length;
67
- if (line.trim() === '')
68
- continue;
69
- if (indent <= itemIndent) {
70
- commit();
71
- continue;
72
- }
73
- const fm = line.match(/^\s+(\w+)\s*:\s*(.*?)\s*$/);
74
- if (fm)
75
- applyField(current, fm[1] ?? '', fm[2] ?? '', lines, i);
116
+ return { portalId, source: path };
117
+ }
118
+ return undefined;
119
+ }
120
+ function parseHubSpotConfig(yaml) {
121
+ let parsed;
122
+ try {
123
+ parsed = parseYaml(yaml, {
124
+ maxAliasCount: 0,
125
+ prettyErrors: false,
126
+ uniqueKeys: true,
127
+ });
128
+ }
129
+ catch {
130
+ throw new Error('HubSpot config is not valid YAML.');
131
+ }
132
+ if (!isYamlRecord(parsed)) {
133
+ throw new Error('HubSpot config must contain a YAML mapping.');
134
+ }
135
+ const containerKeys = ['accounts', 'portals'].filter((key) => Object.hasOwn(parsed, key));
136
+ if (containerKeys.length !== 1) {
137
+ throw new Error('HubSpot config must contain exactly one accounts or portals sequence.');
138
+ }
139
+ const rawAccounts = parsed[containerKeys[0]];
140
+ if (!Array.isArray(rawAccounts)) {
141
+ throw new Error('HubSpot config accounts or portals must be a sequence.');
142
+ }
143
+ const defaultSelectors = ['defaultPortal', 'defaultAccount', 'defaultHubId']
144
+ .filter((key) => Object.hasOwn(parsed, key) && parsed[key] !== null)
145
+ .map((key) => readHubSpotSelector(parsed[key], key));
146
+ const uniqueDefaultSelectors = [...new Set(defaultSelectors)];
147
+ if (uniqueDefaultSelectors.length > 1) {
148
+ throw new Error('HubSpot config contains conflicting default account selectors.');
149
+ }
150
+ const defaultPortal = uniqueDefaultSelectors[0];
151
+ const accounts = rawAccounts.map((value, index) => parseHubSpotAccount(value, index));
152
+ const accountNames = new Set();
153
+ const accountIds = new Set();
154
+ for (const account of accounts) {
155
+ if (accountNames.has(account.name)) {
156
+ throw new Error('HubSpot config contains duplicate account names.');
76
157
  }
158
+ if (accountIds.has(account.portalId)) {
159
+ throw new Error('HubSpot config contains duplicate account ids.');
160
+ }
161
+ accountNames.add(account.name);
162
+ accountIds.add(account.portalId);
77
163
  }
78
- commit();
79
- for (let i = 0; i < accounts.length; i++) {
80
- const acct = accounts[i];
81
- if (!acct || !defaultPortal)
82
- continue;
83
- if (acct.name === defaultPortal || String(acct.portalId) === defaultPortal) {
84
- accounts[i] = { ...acct, isDefault: true };
164
+ for (const account of accounts) {
165
+ const numericNameOwner = accounts.find((candidate) => candidate !== account && String(candidate.portalId) === account.name);
166
+ if (numericNameOwner) {
167
+ throw new Error('HubSpot config contains an account name that conflicts with another id.');
168
+ }
169
+ }
170
+ if (defaultPortal) {
171
+ const matches = accounts.filter((account) => account.name === defaultPortal || String(account.portalId) === defaultPortal);
172
+ if (matches.length > 1) {
173
+ throw new Error('HubSpot config default account selector is ambiguous.');
174
+ }
175
+ for (let index = 0; index < accounts.length; index += 1) {
176
+ const account = accounts[index];
177
+ if (account && matches[0] === account)
178
+ accounts[index] = { ...account, isDefault: true };
85
179
  }
86
180
  }
87
181
  return { ...(defaultPortal ? { defaultPortal } : {}), accounts };
88
182
  }
89
- function applyField(current, key, rawValue, lines, index) {
90
- let value = rawValue;
91
- if (value === '>-' || value === '>' || value === '|' || value === '|-' || value === '|+') {
92
- const baseIndent = ((lines[index] ?? '').match(/^(\s*)/)?.[1]?.length ?? 0) + 1;
93
- const parts = [];
94
- for (let j = index + 1; j < lines.length; j++) {
95
- const cont = lines[j] ?? '';
96
- if (cont.trim() === '')
97
- continue;
98
- const contIndent = (cont.match(/^(\s*)/)?.[1] ?? '').length;
99
- if (contIndent < baseIndent)
100
- break;
101
- parts.push(cont.trim());
102
- }
103
- value = parts.join('');
183
+ function parseHubSpotAccount(value, index) {
184
+ if (!isYamlRecord(value)) {
185
+ throw new Error(`HubSpot config account ${index + 1} must be a mapping.`);
104
186
  }
105
- value = value.replace(/^['"]|['"]$/g, '').trim();
106
- if (key === 'name')
107
- current.name = value;
108
- else if (key === 'portalId' || key === 'accountId' || key === 'hubId') {
109
- const n = Number.parseInt(value, 10);
110
- if (Number.isFinite(n))
111
- current.portalId = n;
187
+ const name = readRequiredHubSpotString(value.name, `account ${index + 1} name`);
188
+ const portalId = readAliasedHubSpotInteger(value, ['portalId', 'accountId', 'hubId'], `account ${index + 1} id`);
189
+ if (portalId === undefined)
190
+ throw new Error(`HubSpot config account ${index + 1} id is required.`);
191
+ const personalAccessKey = readOptionalHubSpotString(value.personalAccessKey, `account ${index + 1} personalAccessKey`);
192
+ const authType = readOptionalHubSpotString(value.authType, `account ${index + 1} authType`);
193
+ const accountType = readAliasedOptionalHubSpotString(value, ['accountType', 'sandboxAccountType'], `account ${index + 1} accountType`);
194
+ const parentAccountId = readAliasedHubSpotInteger(value, ['parentAccountId', 'parentPortalId'], `account ${index + 1} parent id`, true);
195
+ return {
196
+ name,
197
+ portalId,
198
+ ...(personalAccessKey ? { personalAccessKey } : {}),
199
+ ...(authType ? { authType } : {}),
200
+ ...(accountType ? { accountType } : {}),
201
+ ...(parentAccountId !== undefined ? { parentAccountId } : {}),
202
+ isDefault: false,
203
+ };
204
+ }
205
+ function readHubSpotSelector(value, field) {
206
+ if (typeof value === 'number' && Number.isSafeInteger(value) && value > 0)
207
+ return String(value);
208
+ if (typeof value === 'string' && value.trim().length > 0)
209
+ return value.trim();
210
+ throw new Error(`HubSpot config ${field} must be a non-empty account name or id.`);
211
+ }
212
+ function readRequiredHubSpotString(value, field) {
213
+ const result = readOptionalHubSpotString(value, field);
214
+ if (result)
215
+ return result;
216
+ throw new Error(`HubSpot config ${field} must be a non-empty string.`);
217
+ }
218
+ function readOptionalHubSpotString(value, field) {
219
+ if (value === undefined || value === null || value === '')
220
+ return undefined;
221
+ if (typeof value !== 'string')
222
+ throw new Error(`HubSpot config ${field} must be a string.`);
223
+ const result = value.trim();
224
+ return result.length > 0 ? result : undefined;
225
+ }
226
+ function readAliasedOptionalHubSpotString(value, keys, field) {
227
+ const supplied = keys
228
+ .filter((key) => Object.hasOwn(value, key) && value[key] !== null)
229
+ .map((key) => readOptionalHubSpotString(value[key], field))
230
+ .filter((item) => item !== undefined);
231
+ const unique = [...new Set(supplied)];
232
+ if (unique.length > 1)
233
+ throw new Error(`HubSpot config ${field} aliases conflict.`);
234
+ return unique[0];
235
+ }
236
+ function readAliasedHubSpotInteger(value, keys, field, optional = false) {
237
+ const supplied = keys
238
+ .filter((key) => Object.hasOwn(value, key) && value[key] !== null)
239
+ .map((key) => readHubSpotInteger(value[key], field));
240
+ const unique = [...new Set(supplied)];
241
+ if (unique.length > 1)
242
+ throw new Error(`HubSpot config ${field} aliases conflict.`);
243
+ if (unique[0] !== undefined)
244
+ return unique[0];
245
+ if (optional)
246
+ return undefined;
247
+ throw new Error(`HubSpot config ${field} is required.`);
248
+ }
249
+ function readHubSpotInteger(value, field) {
250
+ const parsed = typeof value === 'number'
251
+ ? value
252
+ : typeof value === 'string' && /^\d+$/u.test(value.trim())
253
+ ? Number(value.trim())
254
+ : Number.NaN;
255
+ if (!Number.isSafeInteger(parsed) || parsed <= 0) {
256
+ throw new Error(`HubSpot config ${field} must be a positive integer.`);
112
257
  }
113
- else if (key === 'personalAccessKey')
114
- current.pak = value;
115
- else if (key === 'authType')
116
- current.authType = value;
258
+ return parsed;
259
+ }
260
+ function isYamlRecord(value) {
261
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
117
262
  }
118
263
  export const HUBSPOT_PAK_GENERATION_URL = 'https://app.hubspot.com/l/personal-access-key';
119
264
  const HubSpotPakExchangeBody = Schema.Record({ key: Schema.String, value: Schema.Unknown });