@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
@@ -0,0 +1,281 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createReadStream } from 'node:fs';
3
+ import { cp, lstat, mkdtemp, open, readFile, readdir, rm, writeFile, } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { isAbsolute, join, relative, resolve } from 'node:path';
6
+ import { Zip, ZipDeflate, ZipPassThrough } from 'fflate';
7
+ /** A local source-tree violation that must fail before any HubSpot mutation. */
8
+ export class HubSpotProjectArchiveSourceError extends Error {
9
+ reason;
10
+ hint;
11
+ relativePath;
12
+ name = 'HubSpotProjectArchiveSourceError';
13
+ code = 'HSX_E_INPUT_INVALID';
14
+ constructor(reason, message, hint, relativePath) {
15
+ super(message);
16
+ this.reason = reason;
17
+ this.hint = hint;
18
+ this.relativePath = relativePath;
19
+ }
20
+ }
21
+ export async function writeLocalHubSpotProjectArchive(root, projectName, options = { sourceOnly: false }) {
22
+ // Scan the full copied tree even for source-only uploads: staging copies
23
+ // hsproject.json before patching the project name, so a link anywhere in the
24
+ // copied input must be rejected before cp/writeFile can follow it.
25
+ const fullSourceFingerprint = await fingerprintHubSpotArchiveSource(root, false);
26
+ const sourceFingerprint = options.sourceOnly
27
+ ? await fingerprintHubSpotArchiveSource(root, true)
28
+ : fullSourceFingerprint;
29
+ if (options.expectedSourceFingerprint &&
30
+ sourceFingerprint !== options.expectedSourceFingerprint) {
31
+ throw sourceChangedError();
32
+ }
33
+ const outDir = await mkdtemp(join(tmpdir(), 'hs-x-hubspot-project-'));
34
+ const archivePath = join(outDir, `${projectName.replace(/[^a-zA-Z0-9._-]+/g, '-')}-hubspot-project.zip`);
35
+ const stageDir = join(outDir, 'project');
36
+ try {
37
+ await cp(root, stageDir, {
38
+ recursive: true,
39
+ dereference: false,
40
+ verbatimSymlinks: true,
41
+ filter(source) {
42
+ return !isExcludedHubSpotArchivePath(root, source);
43
+ },
44
+ });
45
+ // Bind the private staged copy to the complete source snapshot. A regular
46
+ // file edit or a file-to-link swap during cp changes this fingerprint; a
47
+ // copied link throws before patching or zip can touch its target.
48
+ const stagedFullFingerprint = await fingerprintHubSpotArchiveSource(stageDir, false);
49
+ if (stagedFullFingerprint !== fullSourceFingerprint) {
50
+ throw sourceChangedError();
51
+ }
52
+ await patchHubSpotProjectName(stageDir, projectName);
53
+ const archiveRoot = options.sourceOnly ? await hubSpotProjectSourceRoot(stageDir) : stageDir;
54
+ const stagedArchiveFingerprint = await fingerprintHubSpotArchiveSource(stageDir, options.sourceOnly);
55
+ await writeZipArchive(archiveRoot, archivePath);
56
+ if ((await fingerprintHubSpotArchiveSource(stageDir, options.sourceOnly)) !==
57
+ stagedArchiveFingerprint) {
58
+ throw sourceChangedError();
59
+ }
60
+ return archivePath;
61
+ }
62
+ catch (cause) {
63
+ await rm(outDir, { recursive: true, force: true });
64
+ throw cause;
65
+ }
66
+ }
67
+ export async function fingerprintHubSpotArchiveSource(projectRoot, sourceOnly) {
68
+ const projectRootMetadata = await lstat(projectRoot);
69
+ if (projectRootMetadata.isSymbolicLink()) {
70
+ throw symbolicLinkError(projectRoot, projectRoot);
71
+ }
72
+ if (!projectRootMetadata.isDirectory()) {
73
+ throw unsupportedEntryError(projectRoot, projectRoot);
74
+ }
75
+ const archiveRoot = sourceOnly ? await hubSpotProjectSourceRoot(projectRoot) : projectRoot;
76
+ const hash = createHash('sha256');
77
+ async function visit(directory) {
78
+ const entries = await readdir(directory, { withFileTypes: true });
79
+ entries.sort((left, right) => compareArchiveNames(left.name, right.name));
80
+ for (const entry of entries) {
81
+ const path = join(directory, entry.name);
82
+ if (isExcludedHubSpotArchivePath(projectRoot, path))
83
+ continue;
84
+ const archivePath = relative(archiveRoot, path).replaceAll('\\', '/');
85
+ if (entry.isDirectory()) {
86
+ hash.update(`directory\0${archivePath}\0`);
87
+ await visit(path);
88
+ }
89
+ else if (entry.isSymbolicLink()) {
90
+ throw symbolicLinkError(projectRoot, path);
91
+ }
92
+ else if (entry.isFile()) {
93
+ hash.update(`file\0${archivePath}\0`);
94
+ hash.update(await readFile(path));
95
+ hash.update('\0');
96
+ }
97
+ else {
98
+ throw unsupportedEntryError(projectRoot, path);
99
+ }
100
+ }
101
+ }
102
+ await visit(archiveRoot);
103
+ return `sha256:${hash.digest('hex')}`;
104
+ }
105
+ async function hubSpotProjectSourceRoot(root) {
106
+ const config = await readHubSpotProjectConfig(root);
107
+ const srcDir = typeof config.srcDir === 'string' ? config.srcDir : 'src';
108
+ const projectRoot = resolve(root);
109
+ const sourceRoot = resolve(projectRoot, srcDir);
110
+ const sourceRelativePath = relative(projectRoot, sourceRoot);
111
+ if (sourceRelativePath === '..' ||
112
+ sourceRelativePath.startsWith('../') ||
113
+ sourceRelativePath.startsWith('..\\') ||
114
+ isAbsolute(sourceRelativePath)) {
115
+ throw new HubSpotProjectArchiveSourceError('outside-project', 'HubSpot project srcDir must stay inside the project root.', 'Move the source directory inside the project and update hsproject.json, then review a fresh deploy plan.');
116
+ }
117
+ return sourceRoot;
118
+ }
119
+ async function patchHubSpotProjectName(root, projectName) {
120
+ const path = join(root, 'hsproject.json');
121
+ const raw = await readFile(path, 'utf8').catch(() => undefined);
122
+ if (!raw)
123
+ return;
124
+ const parsed = JSON.parse(raw);
125
+ if (!isRecord(parsed))
126
+ return;
127
+ await writeFile(path, `${JSON.stringify({ ...parsed, name: projectName }, null, 2)}\n`);
128
+ }
129
+ async function readHubSpotProjectConfig(root) {
130
+ const raw = await readFile(join(root, 'hsproject.json'), 'utf8').catch(() => '{}');
131
+ const parsed = JSON.parse(raw);
132
+ return isRecord(parsed) ? parsed : {};
133
+ }
134
+ function isExcludedHubSpotArchivePath(projectRoot, path) {
135
+ const projectRelativePath = relative(projectRoot, path);
136
+ const segments = projectRelativePath.split(/[\\/]/);
137
+ return segments.includes('node_modules') || segments.includes('.hs-x');
138
+ }
139
+ // ZIP stores timestamps in local DOS time. A local constructor keeps the
140
+ // encoded date at the ZIP epoch in every timezone and makes repeated archives
141
+ // byte-for-byte reproducible.
142
+ const DETERMINISTIC_ZIP_MTIME = new Date(1980, 0, 1, 0, 0, 0, 0);
143
+ const DETERMINISTIC_FILE_ATTRIBUTES = 0o644 << 16;
144
+ const DETERMINISTIC_DIRECTORY_ATTRIBUTES = (0o755 << 16) | 0x10;
145
+ async function writeZipArchive(root, archivePath) {
146
+ const entries = await collectHubSpotArchiveEntries(root);
147
+ const output = await open(archivePath, 'wx');
148
+ let pendingWrite = Promise.resolve();
149
+ let zipError;
150
+ const zip = new Zip((error, chunk) => {
151
+ if (error) {
152
+ zipError ??= error;
153
+ return;
154
+ }
155
+ pendingWrite = pendingWrite.then(() => writeAll(output, chunk));
156
+ });
157
+ async function flushOutput() {
158
+ await pendingWrite;
159
+ if (zipError)
160
+ throw zipError;
161
+ }
162
+ try {
163
+ for (const entry of entries) {
164
+ if (entry.kind === 'directory') {
165
+ const directory = new ZipPassThrough(`${entry.archivePath}/`);
166
+ directory.mtime = DETERMINISTIC_ZIP_MTIME;
167
+ directory.os = 3;
168
+ directory.attrs = DETERMINISTIC_DIRECTORY_ATTRIBUTES;
169
+ zip.add(directory);
170
+ directory.push(new Uint8Array(), true);
171
+ await flushOutput();
172
+ continue;
173
+ }
174
+ const file = new ZipDeflate(entry.archivePath, { level: 6 });
175
+ file.mtime = DETERMINISTIC_ZIP_MTIME;
176
+ file.os = 3;
177
+ file.attrs = DETERMINISTIC_FILE_ATTRIBUTES;
178
+ zip.add(file);
179
+ for await (const chunk of createReadStream(entry.absolutePath)) {
180
+ file.push(chunk);
181
+ await flushOutput();
182
+ }
183
+ file.push(new Uint8Array(), true);
184
+ await flushOutput();
185
+ }
186
+ zip.end();
187
+ await flushOutput();
188
+ }
189
+ catch (cause) {
190
+ zip.terminate();
191
+ if (cause instanceof HubSpotProjectArchiveSourceError)
192
+ throw cause;
193
+ throw new Error('Unable to create HubSpot project zip archive.', { cause });
194
+ }
195
+ finally {
196
+ await output.close();
197
+ }
198
+ }
199
+ async function collectHubSpotArchiveEntries(root) {
200
+ const rootMetadata = await lstat(root);
201
+ if (rootMetadata.isSymbolicLink())
202
+ throw symbolicLinkError(root, root);
203
+ if (!rootMetadata.isDirectory())
204
+ throw unsupportedEntryError(root, root);
205
+ const entries = [];
206
+ async function visit(directory) {
207
+ const names = await readdir(directory);
208
+ names.sort(compareArchiveNames);
209
+ for (const name of names) {
210
+ const absolutePath = join(directory, name);
211
+ if (isExcludedHubSpotArchivePath(root, absolutePath))
212
+ continue;
213
+ const metadata = await lstat(absolutePath);
214
+ const archivePath = relative(root, absolutePath).replaceAll('\\', '/');
215
+ if (metadata.isSymbolicLink()) {
216
+ throw symbolicLinkError(root, absolutePath);
217
+ }
218
+ if (metadata.isDirectory()) {
219
+ entries.push({ kind: 'directory', absolutePath, archivePath });
220
+ await visit(absolutePath);
221
+ continue;
222
+ }
223
+ if (metadata.isFile()) {
224
+ entries.push({ kind: 'file', absolutePath, archivePath });
225
+ continue;
226
+ }
227
+ throw unsupportedEntryError(root, absolutePath);
228
+ }
229
+ }
230
+ await visit(root);
231
+ return entries;
232
+ }
233
+ function compareArchiveNames(left, right) {
234
+ return left < right ? -1 : left > right ? 1 : 0;
235
+ }
236
+ async function writeAll(output, chunk) {
237
+ let offset = 0;
238
+ while (offset < chunk.byteLength) {
239
+ const { bytesWritten } = await output.write(chunk, offset, chunk.byteLength - offset, null);
240
+ if (bytesWritten === 0)
241
+ throw new Error('Archive output stopped accepting bytes.');
242
+ offset += bytesWritten;
243
+ }
244
+ }
245
+ function symbolicLinkError(projectRoot, path) {
246
+ const relativePath = safeProjectRelativePath(projectRoot, path);
247
+ return new HubSpotProjectArchiveSourceError('symbolic-link', `HubSpot deploy sources cannot contain symbolic links: ${relativePath}.`, 'Replace the link with a regular file or directory whose bytes live inside the project, then review a fresh deploy plan.', relativePath);
248
+ }
249
+ function sourceChangedError() {
250
+ return new HubSpotProjectArchiveSourceError('source-changed', 'HubSpot project sources changed after the deploy preview.', 'Wait for local edits or generators to settle, then review a fresh plan before consenting.');
251
+ }
252
+ function unsupportedEntryError(projectRoot, path) {
253
+ const relativePath = safeProjectRelativePath(projectRoot, path);
254
+ return new HubSpotProjectArchiveSourceError('unsupported-entry', `HubSpot deploy sources must contain only regular files and directories: ${relativePath}.`, 'Remove the FIFO, socket, or device entry, replace it with a regular file if needed, then review a fresh deploy plan.', relativePath);
255
+ }
256
+ const MAX_DIAGNOSTIC_PATH_LENGTH = 240;
257
+ function safeProjectRelativePath(projectRoot, path) {
258
+ const relativePath = relative(resolve(projectRoot), resolve(path));
259
+ if (relativePath === '..' ||
260
+ relativePath.startsWith('../') ||
261
+ relativePath.startsWith('..\\') ||
262
+ isAbsolute(relativePath)) {
263
+ return '<outside project root>';
264
+ }
265
+ const normalized = (relativePath || '.').replaceAll('\\', '/');
266
+ const escaped = Array.from(normalized, (character) => {
267
+ const codePoint = character.codePointAt(0) ?? 0;
268
+ return codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f)
269
+ ? `\\x${codePoint.toString(16).padStart(2, '0')}`
270
+ : character;
271
+ }).join('');
272
+ if (escaped.length <= MAX_DIAGNOSTIC_PATH_LENGTH)
273
+ return escaped;
274
+ const tailLength = 80;
275
+ const headLength = MAX_DIAGNOSTIC_PATH_LENGTH - tailLength - 1;
276
+ return `${escaped.slice(0, headLength)}…${escaped.slice(-tailLength)}`;
277
+ }
278
+ function isRecord(value) {
279
+ return typeof value === 'object' && value !== null;
280
+ }
281
+ //# sourceMappingURL=hubspot-project-archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubspot-project-archive.js","sourceRoot":"","sources":["../src/hubspot-project-archive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ValidationResult } from '@hs-x/validator';
2
+ export type LocalProjectMode = 'hs-x' | 'hubspot-direct' | 'none';
3
+ export interface HubSpotProjectDescriptor {
4
+ readonly name: string;
5
+ readonly platformVersion: string;
6
+ readonly srcDir: string;
7
+ readonly appUid?: string;
8
+ }
9
+ /**
10
+ * HS-X projects commonly contain both markers because codegen emits the
11
+ * HubSpot bundle beside `hsx.config.ts`. The HS-X marker therefore wins; an
12
+ * `hsproject.json` without it is a permanent HubSpot-direct project and must
13
+ * never be routed through the control plane implicitly.
14
+ */
15
+ export declare function detectLocalProjectMode(root: string): Promise<LocalProjectMode>;
16
+ export declare function readHubSpotProjectDescriptor(root: string): Promise<HubSpotProjectDescriptor>;
17
+ /**
18
+ * Validate a native HubSpot project with HubSpot's own project parser. This is
19
+ * deliberately separate from `@hs-x/validator`: direct projects do not need
20
+ * `hsx.config.ts`, HS-X capabilities, Cloudflare, or an HS-X account.
21
+ */
22
+ export declare function validateHubSpotProject(input: {
23
+ readonly root: string;
24
+ readonly profile?: string;
25
+ }): Promise<ValidationResult>;
26
+ /**
27
+ * Convert a third-party parser failure into a bounded diagnostic. Never call
28
+ * `toString()` on the failure: HubSpot errors can render nested request and
29
+ * credential context there even when their message is harmless.
30
+ */
31
+ export declare function describeHubSpotValidationError(cause: unknown): string;
32
+ //# sourceMappingURL=hubspot-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubspot-project.d.ts","sourceRoot":"","sources":["../src/hubspot-project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQpF;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CAwBnC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2D5B;AAyCD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA0BrE"}
@@ -0,0 +1,269 @@
1
+ import { access, readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ async function fileExists(path) {
4
+ try {
5
+ await access(path);
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ /**
13
+ * HS-X projects commonly contain both markers because codegen emits the
14
+ * HubSpot bundle beside `hsx.config.ts`. The HS-X marker therefore wins; an
15
+ * `hsproject.json` without it is a permanent HubSpot-direct project and must
16
+ * never be routed through the control plane implicitly.
17
+ */
18
+ export async function detectLocalProjectMode(root) {
19
+ const [hasHsxConfig, hasHubSpotProject] = await Promise.all([
20
+ fileExists(join(root, 'hsx.config.ts')),
21
+ fileExists(join(root, 'hsproject.json')),
22
+ ]);
23
+ if (hasHsxConfig)
24
+ return 'hs-x';
25
+ if (hasHubSpotProject)
26
+ return 'hubspot-direct';
27
+ return 'none';
28
+ }
29
+ export async function readHubSpotProjectDescriptor(root) {
30
+ const projectPath = join(root, 'hsproject.json');
31
+ let parsed;
32
+ try {
33
+ parsed = JSON.parse(await readFile(projectPath, 'utf8'));
34
+ }
35
+ catch (cause) {
36
+ throw new Error(`Could not read ${projectPath}: ${describeHubSpotValidationError(cause)}`);
37
+ }
38
+ if (!isRecord(parsed)) {
39
+ throw new Error('hsproject.json must contain a JSON object.');
40
+ }
41
+ const name = nonEmptyString(parsed.name);
42
+ const platformVersion = nonEmptyString(parsed.platformVersion);
43
+ const srcDir = nonEmptyString(parsed.srcDir) ?? 'src';
44
+ if (!name)
45
+ throw new Error('hsproject.json is missing a non-empty `name`.');
46
+ if (!platformVersion) {
47
+ throw new Error('hsproject.json is missing a non-empty `platformVersion`.');
48
+ }
49
+ return {
50
+ name,
51
+ platformVersion,
52
+ srcDir,
53
+ ...(await readAppUid(root, srcDir)),
54
+ };
55
+ }
56
+ /**
57
+ * Validate a native HubSpot project with HubSpot's own project parser. This is
58
+ * deliberately separate from `@hs-x/validator`: direct projects do not need
59
+ * `hsx.config.ts`, HS-X capabilities, Cloudflare, or an HS-X account.
60
+ */
61
+ export async function validateHubSpotProject(input) {
62
+ const diagnostics = [];
63
+ let descriptor;
64
+ try {
65
+ descriptor = await readHubSpotProjectDescriptor(input.root);
66
+ }
67
+ catch (cause) {
68
+ diagnostics.push({
69
+ code: 'hubspot.project.invalid',
70
+ severity: 'error',
71
+ message: describeHubSpotValidationError(cause),
72
+ file: 'hsproject.json',
73
+ });
74
+ return validationResult(input.root, diagnostics, 1);
75
+ }
76
+ try {
77
+ const [{ translate }, { getProjectMetadata }] = await Promise.all([
78
+ import('@hubspot/project-parsing-lib/translate'),
79
+ import('@hubspot/project-parsing-lib/projects'),
80
+ ]);
81
+ const sourceDir = join(input.root, descriptor.srcDir);
82
+ const [translated, metadata] = await Promise.all([
83
+ translate({
84
+ projectSourceDir: sourceDir,
85
+ platformVersion: descriptor.platformVersion,
86
+ }, {
87
+ // Validation is intentionally local-only. Account credentials are
88
+ // resolved only by explicit live commands such as deploy/dev.
89
+ skipValidation: true,
90
+ ...(input.profile ? { profile: input.profile } : {}),
91
+ }),
92
+ getProjectMetadata(sourceDir),
93
+ ]);
94
+ for (const file of translated.skippedHsMetaFiles) {
95
+ diagnostics.push({
96
+ code: 'hubspot.component.skipped',
97
+ severity: 'warning',
98
+ message: 'HubSpot skipped this component while translating the project.',
99
+ file,
100
+ });
101
+ }
102
+ diagnostics.push({
103
+ code: 'hubspot.schema.deferred',
104
+ severity: 'warning',
105
+ message: 'Local structure parsed successfully; account-scoped component schemas were not checked.',
106
+ });
107
+ return validationResult(input.root, diagnostics, metadata.hsMetaFiles.length + 1);
108
+ }
109
+ catch (cause) {
110
+ diagnostics.push({
111
+ code: 'hubspot.project.invalid',
112
+ severity: 'error',
113
+ message: describeHubSpotValidationError(cause),
114
+ });
115
+ return validationResult(input.root, diagnostics, 1);
116
+ }
117
+ }
118
+ function validationResult(root, diagnostics, filesChecked) {
119
+ return {
120
+ ok: diagnostics.every((diagnostic) => diagnostic.severity !== 'error'),
121
+ root,
122
+ diagnostics,
123
+ filesChecked,
124
+ };
125
+ }
126
+ async function readAppUid(root, srcDir) {
127
+ const candidates = [
128
+ join(root, srcDir, 'app', 'app-hsmeta.json'),
129
+ join(root, srcDir, 'app-hsmeta.json'),
130
+ ];
131
+ for (const path of candidates) {
132
+ try {
133
+ const parsed = JSON.parse(await readFile(path, 'utf8'));
134
+ if (isRecord(parsed)) {
135
+ const appUid = nonEmptyString(parsed.uid);
136
+ if (appUid)
137
+ return { appUid };
138
+ }
139
+ }
140
+ catch {
141
+ // The HubSpot translator reports malformed component metadata during
142
+ // validation. Descriptor reads stay tolerant so logs/status can still
143
+ // explain the project-level problem.
144
+ }
145
+ }
146
+ return {};
147
+ }
148
+ const HUBSPOT_VALIDATION_ERROR_FALLBACK = 'HubSpot project validation failed.';
149
+ const SENSITIVE_VALIDATION_CONTEXT = /(?:derivedContext|encodedOAuthRefreshToken|oauthRefreshToken|refreshToken|accessToken|personalAccessKey|developerApiKey|apiKey|clientSecret|password|authorization|\bbearer\b)/iu;
150
+ const KNOWN_VALIDATION_TOKEN = /\bpat-[a-z0-9][a-z0-9._-]{5,}\b/giu;
151
+ /**
152
+ * Convert a third-party parser failure into a bounded diagnostic. Never call
153
+ * `toString()` on the failure: HubSpot errors can render nested request and
154
+ * credential context there even when their message is harmless.
155
+ */
156
+ export function describeHubSpotValidationError(cause) {
157
+ const rawMessage = cause instanceof Error
158
+ ? cause.message
159
+ : isRecord(cause) && typeof cause.message === 'string'
160
+ ? cause.message
161
+ : typeof cause === 'string'
162
+ ? cause
163
+ : undefined;
164
+ const message = rawMessage
165
+ ?.split(/\r?\n/u)
166
+ .map((line) => line.trim())
167
+ .find((line) => line.length > 0);
168
+ if (!message) {
169
+ return HUBSPOT_VALIDATION_ERROR_FALLBACK;
170
+ }
171
+ const terminalSafeMessage = stripTerminalEscapeSequences(message)
172
+ .split('')
173
+ .map((character) => (isTerminalControlCharacter(character) ? ' ' : character))
174
+ .join('')
175
+ .replace(/\s+/gu, ' ')
176
+ .trim();
177
+ if (!terminalSafeMessage || SENSITIVE_VALIDATION_CONTEXT.test(terminalSafeMessage)) {
178
+ return HUBSPOT_VALIDATION_ERROR_FALLBACK;
179
+ }
180
+ return terminalSafeMessage.replace(KNOWN_VALIDATION_TOKEN, '[REDACTED]').slice(0, 500);
181
+ }
182
+ function isTerminalControlCharacter(character) {
183
+ const code = character.charCodeAt(0);
184
+ return code <= 0x1f || (code >= 0x7f && code <= 0x9f);
185
+ }
186
+ const MAX_VALIDATION_ERROR_SCAN_LENGTH = 2_000;
187
+ const ESCAPE = 0x1b;
188
+ const BELL = 0x07;
189
+ const STRING_TERMINATOR = 0x9c;
190
+ /**
191
+ * Strip terminal escape protocols before the remaining C0/C1 bytes are
192
+ * normalized. Dropping only ESC would leave OSC hyperlinks and DCS payloads
193
+ * visible, so consume each complete control string (or the bounded remainder
194
+ * when it is unterminated).
195
+ */
196
+ function stripTerminalEscapeSequences(value) {
197
+ const input = value.slice(0, MAX_VALIDATION_ERROR_SCAN_LENGTH);
198
+ let output = '';
199
+ let index = 0;
200
+ while (index < input.length) {
201
+ const code = input.charCodeAt(index);
202
+ if (code === ESCAPE) {
203
+ const next = input.charCodeAt(index + 1);
204
+ if (next === 0x5b) {
205
+ index = consumeControlSequence(input, index + 2);
206
+ }
207
+ else if (next === 0x5d) {
208
+ index = consumeControlString(input, index + 2, true);
209
+ }
210
+ else if (next === 0x50 || next === 0x58 || next === 0x5e || next === 0x5f) {
211
+ index = consumeControlString(input, index + 2, false);
212
+ }
213
+ else {
214
+ index = consumeEscapeSequence(input, index + 1);
215
+ }
216
+ continue;
217
+ }
218
+ if (code === 0x9b) {
219
+ index = consumeControlSequence(input, index + 1);
220
+ continue;
221
+ }
222
+ if (code === 0x9d) {
223
+ index = consumeControlString(input, index + 1, true);
224
+ continue;
225
+ }
226
+ if (code === 0x90 || code === 0x98 || code === 0x9e || code === 0x9f) {
227
+ index = consumeControlString(input, index + 1, false);
228
+ continue;
229
+ }
230
+ output += input[index] ?? '';
231
+ index += 1;
232
+ }
233
+ return output;
234
+ }
235
+ function consumeControlSequence(input, start) {
236
+ for (let index = start; index < input.length; index += 1) {
237
+ const code = input.charCodeAt(index);
238
+ if (code >= 0x40 && code <= 0x7e)
239
+ return index + 1;
240
+ }
241
+ return input.length;
242
+ }
243
+ function consumeControlString(input, start, bellTerminates) {
244
+ for (let index = start; index < input.length; index += 1) {
245
+ const code = input.charCodeAt(index);
246
+ if ((bellTerminates && code === BELL) || code === STRING_TERMINATOR)
247
+ return index + 1;
248
+ if (code === ESCAPE && input.charCodeAt(index + 1) === 0x5c)
249
+ return index + 2;
250
+ }
251
+ return input.length;
252
+ }
253
+ function consumeEscapeSequence(input, start) {
254
+ let index = start;
255
+ while (index < input.length) {
256
+ const code = input.charCodeAt(index);
257
+ index += 1;
258
+ if (code < 0x20 || code > 0x2f)
259
+ break;
260
+ }
261
+ return index;
262
+ }
263
+ function isRecord(value) {
264
+ return typeof value === 'object' && value !== null;
265
+ }
266
+ function nonEmptyString(value) {
267
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
268
+ }
269
+ //# sourceMappingURL=hubspot-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubspot-project.js","sourceRoot":"","sources":["../src/hubspot-project.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export class LocalProjectPickerCancelled extends Error {
25
25
  */
26
26
  export async function discoverLocalProjects(input) {
27
27
  const workspaceRoot = resolve(input.root);
28
- const markers = input.markers ?? ['hsx.config.ts'];
28
+ const markers = input.markers ?? ['hsx.config.ts', 'hsproject.json'];
29
29
  const maxDepth = input.maxDepth ?? 4;
30
30
  const maxDirectories = input.maxDirectories ?? 500;
31
31
  const excluded = input.excludedDirectories ?? DEFAULT_EXCLUDED_DIRECTORIES;
@@ -1 +1 @@
1
- {"version":3,"file":"local-project-picker.js","sourceRoot":"","sources":["../src/local-project-picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-project-picker.js","sourceRoot":"","sources":["../src/local-project-picker.ts"],"names":[],"mappings":"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"}