@hs-x/cli 0.4.12 → 0.4.14

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 (117) hide show
  1. package/README.md +21 -7
  2. package/dist/commands/completion.d.ts.map +1 -1
  3. package/dist/commands/completion.js +3 -0
  4. package/dist/commands/completion.js.map +1 -1
  5. package/dist/commands/deploy.d.ts +10 -0
  6. package/dist/commands/deploy.d.ts.map +1 -1
  7. package/dist/commands/deploy.js +37 -13
  8. package/dist/commands/deploy.js.map +1 -1
  9. package/dist/commands/dev.d.ts +1 -0
  10. package/dist/commands/dev.d.ts.map +1 -1
  11. package/dist/commands/dev.js +346 -32
  12. package/dist/commands/dev.js.map +1 -1
  13. package/dist/commands/help-command.d.ts.map +1 -1
  14. package/dist/commands/help-command.js +22 -6
  15. package/dist/commands/help-command.js.map +1 -1
  16. package/dist/commands/project-lifecycle.d.ts +10 -0
  17. package/dist/commands/project-lifecycle.d.ts.map +1 -1
  18. package/dist/commands/project-lifecycle.js +120 -33
  19. package/dist/commands/project-lifecycle.js.map +1 -1
  20. package/dist/commands/project.d.ts +3 -0
  21. package/dist/commands/project.d.ts.map +1 -1
  22. package/dist/commands/project.js +2 -0
  23. package/dist/commands/project.js.map +1 -1
  24. package/dist/constants.d.ts +1 -1
  25. package/dist/constants.js +1 -1
  26. package/dist/dev/account-selection.d.ts +55 -0
  27. package/dist/dev/account-selection.d.ts.map +1 -1
  28. package/dist/dev/account-selection.js +120 -0
  29. package/dist/dev/account-selection.js.map +1 -1
  30. package/dist/dev/browser-log-bridge.d.ts +13 -8
  31. package/dist/dev/browser-log-bridge.d.ts.map +1 -1
  32. package/dist/dev/browser-log-bridge.js +37 -17
  33. package/dist/dev/browser-log-bridge.js.map +1 -1
  34. package/dist/dev/clipboard.d.ts +9 -0
  35. package/dist/dev/clipboard.d.ts.map +1 -0
  36. package/dist/dev/clipboard.js +42 -0
  37. package/dist/dev/clipboard.js.map +1 -0
  38. package/dist/dev/compat-shim.d.ts +19 -4
  39. package/dist/dev/compat-shim.d.ts.map +1 -1
  40. package/dist/dev/compat-shim.js +31 -4
  41. package/dist/dev/compat-shim.js.map +1 -1
  42. package/dist/dev/component-selection.d.ts +12 -0
  43. package/dist/dev/component-selection.d.ts.map +1 -1
  44. package/dist/dev/component-selection.js +29 -0
  45. package/dist/dev/component-selection.js.map +1 -1
  46. package/dist/dev/frontend-log-relay.d.ts +12 -0
  47. package/dist/dev/frontend-log-relay.d.ts.map +1 -1
  48. package/dist/dev/frontend-log-relay.js +31 -20
  49. package/dist/dev/frontend-log-relay.js.map +1 -1
  50. package/dist/dev/hubspot-log-lane.d.ts +27 -0
  51. package/dist/dev/hubspot-log-lane.d.ts.map +1 -0
  52. package/dist/dev/hubspot-log-lane.js +73 -0
  53. package/dist/dev/hubspot-log-lane.js.map +1 -0
  54. package/dist/dev/hubspot-logs-poller.d.ts +7 -1
  55. package/dist/dev/hubspot-logs-poller.d.ts.map +1 -1
  56. package/dist/dev/hubspot-logs-poller.js +28 -1
  57. package/dist/dev/hubspot-logs-poller.js.map +1 -1
  58. package/dist/dev/keyboard.d.ts +21 -3
  59. package/dist/dev/keyboard.d.ts.map +1 -1
  60. package/dist/dev/keyboard.js +106 -6
  61. package/dist/dev/keyboard.js.map +1 -1
  62. package/dist/dev/local-proxy.d.ts +90 -0
  63. package/dist/dev/local-proxy.d.ts.map +1 -0
  64. package/dist/dev/local-proxy.js +186 -0
  65. package/dist/dev/local-proxy.js.map +1 -0
  66. package/dist/dev/log-server.d.ts +9 -0
  67. package/dist/dev/log-server.d.ts.map +1 -1
  68. package/dist/dev/log-server.js +46 -3
  69. package/dist/dev/log-server.js.map +1 -1
  70. package/dist/dev/production-app-check.d.ts +23 -0
  71. package/dist/dev/production-app-check.d.ts.map +1 -0
  72. package/dist/dev/production-app-check.js +28 -0
  73. package/dist/dev/production-app-check.js.map +1 -0
  74. package/dist/dev/session-manager.d.ts +51 -1
  75. package/dist/dev/session-manager.d.ts.map +1 -1
  76. package/dist/dev/session-manager.js +155 -12
  77. package/dist/dev/session-manager.js.map +1 -1
  78. package/dist/dev/startup-progress.d.ts +7 -0
  79. package/dist/dev/startup-progress.d.ts.map +1 -0
  80. package/dist/dev/startup-progress.js +27 -0
  81. package/dist/dev/startup-progress.js.map +1 -0
  82. package/dist/dev/stream-event-format.d.ts +10 -1
  83. package/dist/dev/stream-event-format.d.ts.map +1 -1
  84. package/dist/dev/stream-event-format.js +157 -5
  85. package/dist/dev/stream-event-format.js.map +1 -1
  86. package/dist/dev/stream-renderer.d.ts +34 -1
  87. package/dist/dev/stream-renderer.d.ts.map +1 -1
  88. package/dist/dev/stream-renderer.js +371 -60
  89. package/dist/dev/stream-renderer.js.map +1 -1
  90. package/dist/dev/trace-markdown.d.ts +25 -0
  91. package/dist/dev/trace-markdown.d.ts.map +1 -0
  92. package/dist/dev/trace-markdown.js +159 -0
  93. package/dist/dev/trace-markdown.js.map +1 -0
  94. package/dist/hubspot-app-logs.d.ts +9 -0
  95. package/dist/hubspot-app-logs.d.ts.map +1 -1
  96. package/dist/hubspot-app-logs.js +6 -4
  97. package/dist/hubspot-app-logs.js.map +1 -1
  98. package/dist/hubspot-developer-client.js +3 -0
  99. package/dist/hubspot-developer-client.js.map +1 -1
  100. package/dist/hubspot-project.d.ts +2 -0
  101. package/dist/hubspot-project.d.ts.map +1 -1
  102. package/dist/hubspot-project.js +13 -1
  103. package/dist/hubspot-project.js.map +1 -1
  104. package/dist/prompt.d.ts +15 -0
  105. package/dist/prompt.d.ts.map +1 -1
  106. package/dist/prompt.js +66 -15
  107. package/dist/prompt.js.map +1 -1
  108. package/dist/reporter/human.d.ts.map +1 -1
  109. package/dist/reporter/human.js +6 -1
  110. package/dist/reporter/human.js.map +1 -1
  111. package/dist/reporter/style.d.ts +10 -0
  112. package/dist/reporter/style.d.ts.map +1 -1
  113. package/dist/reporter/style.js +39 -0
  114. package/dist/reporter/style.js.map +1 -1
  115. package/dist/services/hubspot-dev-client.js +3 -0
  116. package/dist/services/hubspot-dev-client.js.map +1 -1
  117. package/package.json +9 -8
@@ -0,0 +1,186 @@
1
+ import fs from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { connect } from 'node:net';
4
+ import { join, resolve } from 'node:path';
5
+ export const HUBSPOT_LOCAL_CONFIG_FILENAME = 'local.json';
6
+ const PROBE_TIMEOUT_MS = 1_000;
7
+ export async function readHubSpotLocalProxyMappings(appRoot) {
8
+ let raw;
9
+ try {
10
+ raw = await readFile(join(appRoot, HUBSPOT_LOCAL_CONFIG_FILENAME), 'utf8');
11
+ }
12
+ catch {
13
+ return [];
14
+ }
15
+ let parsed;
16
+ try {
17
+ parsed = JSON.parse(raw);
18
+ }
19
+ catch {
20
+ // The dev server logs its own parse error and ignores the file.
21
+ return [];
22
+ }
23
+ const proxy = typeof parsed === 'object' && parsed !== null
24
+ ? parsed.proxy
25
+ : undefined;
26
+ if (typeof proxy !== 'object' || proxy === null)
27
+ return [];
28
+ return Object.entries(proxy).flatMap(([from, to]) => typeof to === 'string' && to.length > 0 ? [{ from, to }] : []);
29
+ }
30
+ export async function probeHubSpotLocalProxyMappings(mappings, probe = isTcpTargetListening) {
31
+ return Promise.all(mappings.map(async (mapping) => ({ ...mapping, reachable: await probe(mapping.to) })));
32
+ }
33
+ /** True when something accepts a TCP connection at the target URL's host:port. */
34
+ export function isTcpTargetListening(target) {
35
+ let url;
36
+ try {
37
+ url = new URL(target);
38
+ }
39
+ catch {
40
+ return Promise.resolve(false);
41
+ }
42
+ const port = Number(url.port || (url.protocol === 'https:' ? 443 : 80));
43
+ const host = url.hostname.replace(/^\[|\]$/g, '');
44
+ return new Promise((resolve) => {
45
+ const socket = connect({ host, port });
46
+ const finish = (result) => {
47
+ socket.removeAllListeners();
48
+ socket.destroy();
49
+ resolve(result);
50
+ };
51
+ socket.setTimeout(PROBE_TIMEOUT_MS, () => finish(false));
52
+ socket.once('connect', () => finish(true));
53
+ socket.once('error', () => finish(false));
54
+ });
55
+ }
56
+ export const HUBSPOT_LOCAL_PROXY_MODES = ['auto', 'always', 'never'];
57
+ export const DEFAULT_HUBSPOT_LOCAL_PROXY_MODE = 'auto';
58
+ export function resolveHubSpotLocalProxyMode(raw) {
59
+ const value = raw?.trim().toLowerCase();
60
+ return value === 'always' || value === 'never' ? value : DEFAULT_HUBSPOT_LOCAL_PROXY_MODE;
61
+ }
62
+ /** Whether HubSpot's dev server should enter local proxy mode for this run. */
63
+ export function hubSpotLocalProxyApplies(mode, probes) {
64
+ if (probes.length === 0)
65
+ return false;
66
+ if (mode === 'always')
67
+ return true;
68
+ if (mode === 'never')
69
+ return false;
70
+ return probes.some((probe) => probe.reachable);
71
+ }
72
+ /**
73
+ * The origin the card's log bridge posts to through `hubspot.fetch`. It only
74
+ * has to be a syntactically valid origin: in proxy mode the dev server rewrites
75
+ * it to hs-x's local sidecar before any network is involved, and the card
76
+ * iframe never resolves it.
77
+ */
78
+ export const HSX_LOCAL_PROXY_ORIGIN = 'https://hsx-dev.local';
79
+ export const HSX_LOCAL_PROXY_RELAY_PATH = '/__hsx/relay';
80
+ /**
81
+ * Decide the proxy map for one start. Proxy mode is all-or-nothing for the
82
+ * app's fetches, so it is entered only where `hs project dev` would enter it
83
+ * (all mappings live) or on explicit `always`; the hs-x relay mapping rides
84
+ * along whenever proxy mode is on and a sidecar URL is given.
85
+ */
86
+ export function planHubSpotLocalProxy(input) {
87
+ const blocker = input.mode === 'never'
88
+ ? 'never'
89
+ : input.mode === 'always'
90
+ ? undefined
91
+ : input.probes.length === 0
92
+ ? 'no-mappings'
93
+ : input.probes.some((probe) => !probe.reachable)
94
+ ? 'dead-target'
95
+ : undefined;
96
+ const on = blocker === undefined;
97
+ const mappings = input.probes.map((probe) => ({ ...probe, applied: on }));
98
+ const relay = on && Boolean(input.relayTarget);
99
+ const proxy = {};
100
+ if (on) {
101
+ for (const mapping of mappings)
102
+ proxy[mapping.from] = mapping.to;
103
+ if (relay && input.relayTarget)
104
+ proxy[HSX_LOCAL_PROXY_ORIGIN] = input.relayTarget;
105
+ }
106
+ return {
107
+ proxy: Object.keys(proxy).length > 0 ? proxy : undefined,
108
+ mappings,
109
+ relay,
110
+ ...(blocker ? { blocker } : {}),
111
+ };
112
+ }
113
+ // The dev server reads `<app root>/local.json` through the default `fs`
114
+ // export during `start()`. Serialize callers so overlapping starts cannot
115
+ // restore each other's wrapper out of order.
116
+ let hideTail = Promise.resolve();
117
+ /**
118
+ * Run one upstream dev-server start with `<appRoot>/local.json` presented as
119
+ * `{ proxy }` — the user's file (if any) is never touched. HubSpot's
120
+ * `loadLocalConfig` probes `fs.existsSync` and then `fs.readFileSync`, both
121
+ * through the default `fs` export, so both are answered for that one path.
122
+ */
123
+ export async function withHubSpotLocalProxyMappings(appRoot, proxy, operation) {
124
+ let release;
125
+ const prior = hideTail;
126
+ hideTail = new Promise((done) => {
127
+ release = done;
128
+ });
129
+ await prior;
130
+ const target = resolve(appRoot, HUBSPOT_LOCAL_CONFIG_FILENAME);
131
+ const matches = (candidate) => typeof candidate === 'string' && resolve(candidate) === target;
132
+ const originalExistsSync = fs.existsSync;
133
+ const originalReadFileSync = fs.readFileSync;
134
+ const content = Buffer.from(JSON.stringify({ proxy }), 'utf8');
135
+ const existsSyncWithProxy = (candidate) => matches(candidate) ? true : originalExistsSync.call(fs, candidate);
136
+ const readFileSyncWithProxy = ((candidate, options) => matches(candidate)
137
+ ? typeof options === 'string' ||
138
+ (typeof options === 'object' &&
139
+ options !== null &&
140
+ 'encoding' in options &&
141
+ options.encoding)
142
+ ? content.toString('utf8')
143
+ : content
144
+ : originalReadFileSync.call(fs, candidate, options));
145
+ fs.existsSync = existsSyncWithProxy;
146
+ fs.readFileSync = readFileSyncWithProxy;
147
+ try {
148
+ return await operation();
149
+ }
150
+ finally {
151
+ if (fs.existsSync === existsSyncWithProxy)
152
+ fs.existsSync = originalExistsSync;
153
+ if (fs.readFileSync === readFileSyncWithProxy)
154
+ fs.readFileSync = originalReadFileSync;
155
+ release();
156
+ }
157
+ }
158
+ /**
159
+ * Run one upstream dev-server start with `<appRoot>/local.json` hidden from
160
+ * `fs.existsSync`, which is the only probe HubSpot's `loadLocalConfig` makes
161
+ * before reading the file. Nothing on disk changes, and the original method
162
+ * is restored as soon as the operation settles.
163
+ */
164
+ export async function withHubSpotLocalProxyHidden(appRoot, operation) {
165
+ let release;
166
+ const prior = hideTail;
167
+ hideTail = new Promise((done) => {
168
+ release = done;
169
+ });
170
+ await prior;
171
+ const hidden = resolve(appRoot, HUBSPOT_LOCAL_CONFIG_FILENAME);
172
+ const originalExistsSync = fs.existsSync;
173
+ const existsSyncWithoutLocalConfig = (target) => typeof target === 'string' && resolve(target) === hidden
174
+ ? false
175
+ : originalExistsSync.call(fs, target);
176
+ fs.existsSync = existsSyncWithoutLocalConfig;
177
+ try {
178
+ return await operation();
179
+ }
180
+ finally {
181
+ if (fs.existsSync === existsSyncWithoutLocalConfig)
182
+ fs.existsSync = originalExistsSync;
183
+ release();
184
+ }
185
+ }
186
+ //# sourceMappingURL=local-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-proxy.js","sourceRoot":"","sources":["../../src/dev/local-proxy.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  *
8
8
  * Routes:
9
9
  * POST /__hsx/log — single log or batched array. CORS open for localhost callers.
10
+ * POST /__hsx/relay — card log/state payloads arriving through HubSpot's local
11
+ * proxy mode (the dev server posts from this machine).
10
12
  * GET /__hsx/health
11
13
  */
12
14
  import type { DevEventBus } from './event-bus.js';
@@ -28,6 +30,13 @@ export interface DevLogServerOptions {
28
30
  * guessed tunnel URL cannot inject frontend/backend/request rows.
29
31
  */
30
32
  readonly authToken?: string;
33
+ /**
34
+ * Handler slot for `/__hsx/relay`. The dev session installs its relay after
35
+ * the server is up, so the slot is read per request rather than at start.
36
+ */
37
+ readonly relay?: {
38
+ current?: ((payload: unknown) => unknown) | undefined;
39
+ };
31
40
  }
32
41
  interface IncomingLog {
33
42
  readonly level?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"log-server.d.ts","sourceRoot":"","sources":["../../src/dev/log-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAKD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BxF"}
1
+ {"version":3,"file":"log-server.d.ts","sourceRoot":"","sources":["../../src/dev/log-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;CAC5E;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAKD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8BxF"}
@@ -7,6 +7,8 @@
7
7
  *
8
8
  * Routes:
9
9
  * POST /__hsx/log — single log or batched array. CORS open for localhost callers.
10
+ * POST /__hsx/relay — card log/state payloads arriving through HubSpot's local
11
+ * proxy mode (the dev server posts from this machine).
10
12
  * GET /__hsx/health
11
13
  */
12
14
  import { timingSafeEqual } from 'node:crypto';
@@ -14,9 +16,9 @@ import { createServer } from 'node:http';
14
16
  const DEFAULT_MAX_BODY_BYTES = 256 * 1024;
15
17
  const ALLOWED_LEVELS = new Set(['debug', 'info', 'warn', 'error']);
16
18
  export async function startDevLogServer(opts) {
17
- const { bus, host = '127.0.0.1', port = 0, maxBodyBytes = DEFAULT_MAX_BODY_BYTES, authToken, } = opts;
19
+ const { bus, host = '127.0.0.1', port = 0, maxBodyBytes = DEFAULT_MAX_BODY_BYTES, authToken, relay, } = opts;
18
20
  const server = createServer((req, res) => {
19
- handle(req, res, { bus, maxBodyBytes, authToken });
21
+ handle(req, res, { bus, maxBodyBytes, authToken, relay });
20
22
  });
21
23
  await new Promise((resolve, reject) => {
22
24
  server.once('error', reject);
@@ -69,6 +71,39 @@ function handle(req, res, ctx) {
69
71
  });
70
72
  return;
71
73
  }
74
+ if (req.method === 'POST' && url.pathname === '/__hsx/relay') {
75
+ // Only HubSpot's dev server in this machine's proxy mode posts here, so
76
+ // loopback is the whole audience; never accept it from a tunnel.
77
+ if (!isLoopbackHost(singleHeader(req.headers.host))) {
78
+ res.writeHead(403, { 'Content-Type': 'application/json' });
79
+ res.end('{"error":"loopback only"}');
80
+ return;
81
+ }
82
+ void readJsonBody(req, ctx.maxBodyBytes).then(async (result) => {
83
+ if (result.kind === 'error') {
84
+ const status = result.reason === 'BODY_TOO_LARGE' ? 413 : 400;
85
+ res.writeHead(status, { 'Content-Type': 'application/json' });
86
+ res.end(JSON.stringify({ error: result.reason }));
87
+ return;
88
+ }
89
+ const handler = ctx.relay?.current;
90
+ if (!handler) {
91
+ res.writeHead(503, { 'Content-Type': 'application/json' });
92
+ res.end('{"ok":false,"error":"relay not ready"}');
93
+ return;
94
+ }
95
+ let reply;
96
+ try {
97
+ reply = await handler(result.body);
98
+ }
99
+ catch {
100
+ reply = { ok: false };
101
+ }
102
+ res.writeHead(200, { 'Content-Type': 'application/json' });
103
+ res.end(JSON.stringify(reply && typeof reply === 'object' ? reply : { ok: true }));
104
+ });
105
+ return;
106
+ }
72
107
  if (req.method === 'POST' && url.pathname === '/__hsx/event') {
73
108
  if (!isAuthorizedDevTelemetry(req, url, ctx.authToken)) {
74
109
  res.writeHead(401, { 'Content-Type': 'application/json' });
@@ -200,7 +235,15 @@ function ingestEnvelope(bus, envelope) {
200
235
  ts: Date.now(),
201
236
  msg: summary,
202
237
  ...(req.capabilityId ? { source: req.capabilityId } : {}),
203
- ...(traceId ? { fields: { traceId } } : {}),
238
+ fields: {
239
+ method,
240
+ path,
241
+ status,
242
+ ...(typeof req.durationMs === 'number' ? { durationMs: req.durationMs } : {}),
243
+ ...(req.capabilityId ? { capabilityId: req.capabilityId } : {}),
244
+ ...(req.portalId ? { portalId: req.portalId } : {}),
245
+ ...(traceId ? { traceId } : {}),
246
+ },
204
247
  });
205
248
  }
206
249
  if (envelope.logs) {
@@ -1 +1 @@
1
- {"version":3,"file":"log-server.js","sourceRoot":"","sources":["../../src/dev/log-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log-server.js","sourceRoot":"","sources":["../../src/dev/log-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `hs project dev` refuses to start on a marketplace app that real portals
3
+ * have installed without an explicit go-ahead, because local development can
4
+ * sync configuration changes that reach those installs. hs-x owns the dev
5
+ * loop, so it asks the same question with the same numbers.
6
+ */
7
+ import type { HubSpotDeveloperClient } from '@hs-x/hubspot-cli';
8
+ export type HubSpotProductionInstallCheck = {
9
+ readonly ok: true;
10
+ readonly appId: number;
11
+ readonly installCount: number;
12
+ } | {
13
+ readonly ok: false;
14
+ readonly reason: string;
15
+ };
16
+ export declare function checkHubSpotProductionInstalls(input: {
17
+ readonly client: HubSpotDeveloperClient;
18
+ readonly projectName: string;
19
+ readonly appUid: string;
20
+ }): Promise<HubSpotProductionInstallCheck>;
21
+ export declare function describeHubSpotProductionInstallWarning(appName: string, installCount: number): string;
22
+ export declare const HUBSPOT_PRODUCTION_APP_CONFIRMATION = "Proceed with local development of this production app?";
23
+ //# sourceMappingURL=production-app-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production-app-check.d.ts","sourceRoot":"","sources":["../../src/dev/production-app-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,MAAM,6BAA6B,GACrC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAczC;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED,eAAO,MAAM,mCAAmC,2DACU,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `hs project dev` refuses to start on a marketplace app that real portals
3
+ * have installed without an explicit go-ahead, because local development can
4
+ * sync configuration changes that reach those installs. hs-x owns the dev
5
+ * loop, so it asks the same question with the same numbers.
6
+ */
7
+ export async function checkHubSpotProductionInstalls(input) {
8
+ try {
9
+ const appId = await input.client.projects.resolveAppId({
10
+ projectName: input.projectName,
11
+ appUid: input.appUid,
12
+ });
13
+ const installCount = await input.client.projects.productionInstallCount({ appId });
14
+ if (installCount === undefined) {
15
+ return { ok: false, reason: 'HubSpot did not report an install count for this app.' };
16
+ }
17
+ return { ok: true, appId, installCount };
18
+ }
19
+ catch (cause) {
20
+ return { ok: false, reason: cause instanceof Error ? cause.message : String(cause) };
21
+ }
22
+ }
23
+ export function describeHubSpotProductionInstallWarning(appName, installCount) {
24
+ const accounts = installCount === 1 ? 'production account' : 'production accounts';
25
+ return `${appName} is installed in ${installCount} ${accounts}. Some changes made during local development may need to be synced to HubSpot, which will impact those existing installs. HubSpot strongly recommends developing against a copy of this app instead.`;
26
+ }
27
+ export const HUBSPOT_PRODUCTION_APP_CONFIRMATION = 'Proceed with local development of this production app?';
28
+ //# sourceMappingURL=production-app-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production-app-check.js","sourceRoot":"","sources":["../../src/dev/production-app-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAIpD;IACC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;QACxF,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,OAAe,EACf,YAAoB;IAEpB,MAAM,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACnF,OAAO,GAAG,OAAO,oBAAoB,YAAY,IAAI,QAAQ,sMAAsM,CAAC;AACtQ,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAC9C,wDAAwD,CAAC"}
@@ -10,8 +10,11 @@
10
10
  * See docs/phase-1.5/spike-ui-extension-dev-session.md.
11
11
  */
12
12
  import { type CapturedConsoleEntry } from './console-capture.js';
13
- import { type FrontendLogEntry } from './frontend-log-relay.js';
13
+ import { type FrontendLogEntry, type FrontendLogRelayTransport } from './frontend-log-relay.js';
14
+ import { type HubSpotLocalProxyMode, type HubSpotLocalProxyProbe } from './local-proxy.js';
14
15
  export interface DevSessionStart {
16
+ /** Human-readable startup phases; never includes credentials or source contents. */
17
+ readonly onStartupProgress?: (label: string) => void;
15
18
  /** Backward-compatible shorthand when project and testing accounts are the same. */
16
19
  readonly accountId?: number;
17
20
  readonly projectAccountId?: number;
@@ -26,6 +29,16 @@ export interface DevSessionStart {
26
29
  readonly preserveState?: boolean;
27
30
  /** Receives stdout/stderr-style logs from locally executed HubSpot app functions. */
28
31
  readonly onBackendLog?: (entry: CapturedConsoleEntry) => void;
32
+ /** How to treat `<app root>/local.json` proxy mappings (`--local-proxy`, default auto). */
33
+ readonly localProxyMode?: HubSpotLocalProxyMode;
34
+ /**
35
+ * hs-x sidecar base URL (the log server). When HubSpot cannot run app
36
+ * functions locally, the card's logs travel `hubspot.fetch` → HubSpot's local
37
+ * proxy → this URL instead, so it doubles as the relay target.
38
+ */
39
+ readonly relayUrl?: string;
40
+ /** Receives the relay handler the sidecar should call for `/__hsx/relay` posts. */
41
+ readonly onRelayReady?: (handle: (payload: unknown) => unknown) => void;
29
42
  /** Called every successful heartbeat (used by the request-log renderer). */
30
43
  readonly onHeartbeat?: (info: {
31
44
  at: Date;
@@ -51,6 +64,14 @@ export interface HeartbeatFailure {
51
64
  readonly status?: number;
52
65
  readonly message: string;
53
66
  }
67
+ export interface DevSessionFrontendLogs {
68
+ /** True when the console relay (and reload-state) is live on some transport. */
69
+ readonly active: boolean;
70
+ /** `serverless` (local app function) or `fetch` (HubSpot's local proxy → sidecar). */
71
+ readonly transport?: FrontendLogRelayTransport;
72
+ /** Human-readable reason the relay stayed off; present whenever `active` is false. */
73
+ readonly unavailableReason?: string;
74
+ }
54
75
  export interface DevSessionHandle {
55
76
  readonly sessionId: number;
56
77
  readonly ports: ReadonlyArray<{
@@ -58,7 +79,36 @@ export interface DevSessionHandle {
58
79
  port: number;
59
80
  }>;
60
81
  readonly nodeUids: readonly string[];
82
+ readonly frontendLogs: DevSessionFrontendLogs;
83
+ readonly localProxy: DevSessionLocalProxy;
61
84
  cleanup(): Promise<void>;
62
85
  }
86
+ export interface DevSessionLocalProxy {
87
+ readonly mode: HubSpotLocalProxyMode;
88
+ /**
89
+ * `hubspot.fetch` origins rewritten by `<app root>/local.json`, with
90
+ * reachability and whether the mapping was applied this start (auto drops
91
+ * mappings whose target is not listening; never drops them all).
92
+ */
93
+ readonly mappings: readonly (HubSpotLocalProxyProbe & {
94
+ readonly applied: boolean;
95
+ })[];
96
+ /**
97
+ * True when HubSpot's dev server is in local proxy mode: every `hubspot.fetch`
98
+ * is issued from this machine — applied mappings go to their local target,
99
+ * anything else straight to the real origin. False means HubSpot's own proxy
100
+ * handles every fetch (signed by HubSpot).
101
+ */
102
+ readonly active: boolean;
103
+ /** True when the hs-x relay mapping is part of the map (frontend logs via fetch). */
104
+ readonly relay: boolean;
105
+ /** Why proxy mode is off; absent when it is on. */
106
+ readonly blocker?: import('./local-proxy.js').HubSpotLocalProxyBlocker;
107
+ /**
108
+ * True when a client secret was found for HubSpot's local signer, so fetches
109
+ * that leave this machine carry HubSpot signature headers.
110
+ */
111
+ readonly signed: boolean;
112
+ }
63
113
  export declare function startDevSession(input: DevSessionStart): Promise<DevSessionHandle>;
64
114
  //# sourceMappingURL=session-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/dev/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,EAAE,KAAK,oBAAoB,EAAkB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3D,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAID,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsNvF"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/dev/session-manager.ts"],"names":[],"mappings":"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"}