@salesforce/b2c-tooling-sdk 1.15.0 → 1.16.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 (49) hide show
  1. package/dist/esm/auth/dispatch-fetch.js +9 -2
  2. package/dist/esm/auth/dispatch-fetch.js.map +1 -1
  3. package/dist/esm/auth/oauth-jwt.js +9 -1
  4. package/dist/esm/auth/oauth-jwt.js.map +1 -1
  5. package/dist/esm/auth/oauth.js +9 -1
  6. package/dist/esm/auth/oauth.js.map +1 -1
  7. package/dist/esm/auth/stateful-oauth-strategy.js +26 -3
  8. package/dist/esm/auth/stateful-oauth-strategy.js.map +1 -1
  9. package/dist/esm/clients/am-api.js +9 -1
  10. package/dist/esm/clients/am-api.js.map +1 -1
  11. package/dist/esm/clients/middleware.js +9 -1
  12. package/dist/esm/clients/middleware.js.map +1 -1
  13. package/dist/esm/clients/webdav.js +14 -6
  14. package/dist/esm/clients/webdav.js.map +1 -1
  15. package/dist/esm/errors/index.d.ts +1 -0
  16. package/dist/esm/errors/index.js +1 -0
  17. package/dist/esm/errors/index.js.map +1 -1
  18. package/dist/esm/errors/network-error.d.ts +104 -0
  19. package/dist/esm/errors/network-error.js +301 -0
  20. package/dist/esm/errors/network-error.js.map +1 -0
  21. package/dist/esm/operations/cap/pull.js +4 -1
  22. package/dist/esm/operations/cap/pull.js.map +1 -1
  23. package/dist/esm/operations/code/constants.d.ts +17 -0
  24. package/dist/esm/operations/code/constants.js +23 -0
  25. package/dist/esm/operations/code/constants.js.map +1 -0
  26. package/dist/esm/operations/code/deploy.js +31 -2
  27. package/dist/esm/operations/code/deploy.js.map +1 -1
  28. package/dist/esm/operations/code/download.js +1 -2
  29. package/dist/esm/operations/code/download.js.map +1 -1
  30. package/dist/esm/operations/debug/dap-adapter.d.ts +9 -0
  31. package/dist/esm/operations/debug/dap-adapter.js +17 -0
  32. package/dist/esm/operations/debug/dap-adapter.js.map +1 -1
  33. package/dist/esm/operations/debug/debug-session.d.ts +8 -0
  34. package/dist/esm/operations/debug/debug-session.js +18 -0
  35. package/dist/esm/operations/debug/debug-session.js.map +1 -1
  36. package/dist/esm/operations/debug/sdapi-client.d.ts +30 -0
  37. package/dist/esm/operations/debug/sdapi-client.js +80 -6
  38. package/dist/esm/operations/debug/sdapi-client.js.map +1 -1
  39. package/dist/esm/operations/mrt/deployment.d.ts +5 -0
  40. package/dist/esm/operations/mrt/deployment.js +7 -1
  41. package/dist/esm/operations/mrt/deployment.js.map +1 -1
  42. package/dist/esm/operations/mrt/push.d.ts +4 -0
  43. package/dist/esm/operations/mrt/push.js +4 -3
  44. package/dist/esm/operations/mrt/push.js.map +1 -1
  45. package/dist/esm/skills/github.js +77 -24
  46. package/dist/esm/skills/github.js.map +1 -1
  47. package/dist/esm/slas/token.js +9 -1
  48. package/dist/esm/slas/token.js.map +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Custom error class for network-layer failures during fetch requests.
3
+ *
4
+ * Wraps low-level network errors (connection resets, timeouts, DNS failures, TLS errors, etc.)
5
+ * with actionable context about what operation failed, which host was targeted, and what remediation
6
+ * steps may help.
7
+ *
8
+ * @example
9
+ * try {
10
+ * await client.deploy();
11
+ * } catch (error) {
12
+ * if (error instanceof NetworkError && error.kind === 'timeout') {
13
+ * console.error('Request timed out, retrying...');
14
+ * }
15
+ * throw error;
16
+ * }
17
+ *
18
+ * @module errors/network-error
19
+ */
20
+ /**
21
+ * Classification of network error causes.
22
+ */
23
+ export type NetworkErrorKind = 'timeout' | 'connection-reset' | 'connection-refused' | 'dns' | 'tls' | 'aborted' | 'unknown';
24
+ /**
25
+ * Error thrown when a network-layer request fails.
26
+ *
27
+ * Provides structured classification of network failures and actionable hints for resolution.
28
+ */
29
+ export declare class NetworkError extends Error {
30
+ /**
31
+ * Classified network error kind.
32
+ */
33
+ readonly kind: NetworkErrorKind;
34
+ /**
35
+ * Description of the operation that failed (e.g., "WebDAV POST", "OAuth token request").
36
+ */
37
+ readonly operation?: string;
38
+ /**
39
+ * Target hostname (e.g., "sandbox.demandware.net").
40
+ */
41
+ readonly host?: string;
42
+ constructor(message: string, options: {
43
+ kind: NetworkErrorKind;
44
+ operation?: string;
45
+ host?: string;
46
+ cause?: unknown;
47
+ });
48
+ }
49
+ /**
50
+ * Classifies a network error by inspecting error properties.
51
+ *
52
+ * Checks error name, code (including nested cause.code for undici), and message content
53
+ * to determine the kind of network failure.
54
+ *
55
+ * @param err - The error to classify
56
+ * @returns Classified error kind
57
+ */
58
+ export declare function classifyNetworkError(err: unknown): NetworkErrorKind;
59
+ /**
60
+ * Checks if an error is a network-layer error (not an HTTP/application error).
61
+ *
62
+ * Returns true for thrown network errors like "fetch failed", AbortError, TimeoutError,
63
+ * or errors with recognizable network error codes.
64
+ *
65
+ * Returns false for HTTPError and other application-level errors that should pass through untouched.
66
+ *
67
+ * @param err - The error to check
68
+ * @returns true if this is a network error
69
+ */
70
+ export declare function isNetworkError(err: unknown): boolean;
71
+ /**
72
+ * Describes a network error kind with human-readable summary and actionable hint.
73
+ *
74
+ * @param kind - The network error kind
75
+ * @returns Summary and hint for the error kind
76
+ */
77
+ export declare function describeNetworkErrorKind(kind: NetworkErrorKind): {
78
+ summary: string;
79
+ hint: string;
80
+ };
81
+ /**
82
+ * Wraps a network error with context about the failed operation and target host.
83
+ *
84
+ * If the error is already a NetworkError, returns it as-is (possibly filling in missing context).
85
+ * If the error is not a network error (e.g., HTTPError), returns it unchanged.
86
+ * Otherwise, classifies and wraps the error in a NetworkError with an actionable message.
87
+ *
88
+ * This function does NOT throw — it returns the wrapped or original error. The caller must throw it.
89
+ *
90
+ * @param err - The error to wrap
91
+ * @param context - Operation and host context for the error
92
+ * @returns The wrapped NetworkError, or the original error if it's not a network error
93
+ *
94
+ * @example
95
+ * try {
96
+ * await fetch(url);
97
+ * } catch (err) {
98
+ * throw wrapNetworkError(err, { operation: 'OAuth token request', host: 'account.demandware.com' });
99
+ * }
100
+ */
101
+ export declare function wrapNetworkError(err: unknown, context: {
102
+ operation?: string;
103
+ host?: string;
104
+ }): NetworkError | unknown;
@@ -0,0 +1,301 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ /**
7
+ * Custom error class for network-layer failures during fetch requests.
8
+ *
9
+ * Wraps low-level network errors (connection resets, timeouts, DNS failures, TLS errors, etc.)
10
+ * with actionable context about what operation failed, which host was targeted, and what remediation
11
+ * steps may help.
12
+ *
13
+ * @example
14
+ * try {
15
+ * await client.deploy();
16
+ * } catch (error) {
17
+ * if (error instanceof NetworkError && error.kind === 'timeout') {
18
+ * console.error('Request timed out, retrying...');
19
+ * }
20
+ * throw error;
21
+ * }
22
+ *
23
+ * @module errors/network-error
24
+ */
25
+ /**
26
+ * Error thrown when a network-layer request fails.
27
+ *
28
+ * Provides structured classification of network failures and actionable hints for resolution.
29
+ */
30
+ export class NetworkError extends Error {
31
+ /**
32
+ * Classified network error kind.
33
+ */
34
+ kind;
35
+ /**
36
+ * Description of the operation that failed (e.g., "WebDAV POST", "OAuth token request").
37
+ */
38
+ operation;
39
+ /**
40
+ * Target hostname (e.g., "sandbox.demandware.net").
41
+ */
42
+ host;
43
+ constructor(message, options) {
44
+ super(message);
45
+ this.name = 'NetworkError';
46
+ this.kind = options.kind;
47
+ this.operation = options.operation;
48
+ this.host = options.host;
49
+ this.cause = options.cause;
50
+ }
51
+ }
52
+ /**
53
+ * Extracts error code from an error object.
54
+ * Undici nests the real cause in `err.cause`, so we check both `err.code` and `err.cause?.code`.
55
+ */
56
+ function extractErrorCode(err) {
57
+ if (err && typeof err === 'object') {
58
+ // Check top-level code
59
+ if ('code' in err && typeof err.code === 'string') {
60
+ return err.code;
61
+ }
62
+ // Check cause.code (undici nests real error in cause)
63
+ if ('cause' in err && err.cause && typeof err.cause === 'object' && 'code' in err.cause) {
64
+ const cause = err.cause;
65
+ if (typeof cause.code === 'string') {
66
+ return cause.code;
67
+ }
68
+ }
69
+ }
70
+ return undefined;
71
+ }
72
+ /**
73
+ * Extracts error message from an error object at any depth.
74
+ */
75
+ function extractErrorMessage(err) {
76
+ if (err && typeof err === 'object') {
77
+ if ('message' in err && typeof err.message === 'string') {
78
+ return err.message;
79
+ }
80
+ if ('cause' in err) {
81
+ return extractErrorMessage(err.cause);
82
+ }
83
+ }
84
+ return undefined;
85
+ }
86
+ /**
87
+ * Classifies a network error by inspecting error properties.
88
+ *
89
+ * Checks error name, code (including nested cause.code for undici), and message content
90
+ * to determine the kind of network failure.
91
+ *
92
+ * @param err - The error to classify
93
+ * @returns Classified error kind
94
+ */
95
+ export function classifyNetworkError(err) {
96
+ if (!err || typeof err !== 'object') {
97
+ return 'unknown';
98
+ }
99
+ const error = err;
100
+ // Check error name first
101
+ if (error.name === 'AbortError') {
102
+ return 'aborted';
103
+ }
104
+ if (error.name === 'TimeoutError') {
105
+ return 'timeout';
106
+ }
107
+ // Extract error code (checks both top-level and cause.code for undici)
108
+ const code = extractErrorCode(err);
109
+ if (code) {
110
+ // Connection reset
111
+ if (code === 'ECONNRESET' || code === 'UND_ERR_SOCKET' || code === 'EPIPE') {
112
+ return 'connection-reset';
113
+ }
114
+ // Connection refused
115
+ if (code === 'ECONNREFUSED') {
116
+ return 'connection-refused';
117
+ }
118
+ // DNS failures
119
+ if (code === 'ENOTFOUND' || code === 'EAI_AGAIN') {
120
+ return 'dns';
121
+ }
122
+ // Timeout codes
123
+ if (code === 'ETIMEDOUT' ||
124
+ code === 'UND_ERR_HEADERS_TIMEOUT' ||
125
+ code === 'UND_ERR_BODY_TIMEOUT' ||
126
+ code === 'UND_ERR_CONNECT_TIMEOUT') {
127
+ return 'timeout';
128
+ }
129
+ // TLS/certificate errors
130
+ if (code.startsWith('CERT_') ||
131
+ code.startsWith('ERR_TLS') ||
132
+ code === 'DEPTH_ZERO_SELF_SIGNED_CERT' ||
133
+ code === 'UNABLE_TO_VERIFY_LEAF_SIGNATURE') {
134
+ return 'tls';
135
+ }
136
+ }
137
+ // Check message content as fallback
138
+ const message = extractErrorMessage(err)?.toLowerCase();
139
+ if (message) {
140
+ if (message.includes('socket hang up')) {
141
+ return 'connection-reset';
142
+ }
143
+ if (message.includes('timeout')) {
144
+ return 'timeout';
145
+ }
146
+ }
147
+ return 'unknown';
148
+ }
149
+ /**
150
+ * Checks if an error is a network-layer error (not an HTTP/application error).
151
+ *
152
+ * Returns true for thrown network errors like "fetch failed", AbortError, TimeoutError,
153
+ * or errors with recognizable network error codes.
154
+ *
155
+ * Returns false for HTTPError and other application-level errors that should pass through untouched.
156
+ *
157
+ * @param err - The error to check
158
+ * @returns true if this is a network error
159
+ */
160
+ export function isNetworkError(err) {
161
+ if (!err || typeof err !== 'object') {
162
+ return false;
163
+ }
164
+ // Don't treat HTTPError as network error
165
+ const error = err;
166
+ if (error.name === 'HTTPError') {
167
+ return false;
168
+ }
169
+ // undici throws "fetch failed"; browsers/MSW throw "Failed to fetch"
170
+ if (err instanceof TypeError && error.message && /fetch failed|failed to fetch/i.test(error.message)) {
171
+ return true;
172
+ }
173
+ // Check for AbortError or TimeoutError
174
+ if (error.name === 'AbortError' || error.name === 'TimeoutError') {
175
+ return true;
176
+ }
177
+ // Check for recognizable network error codes
178
+ const code = extractErrorCode(err);
179
+ if (code) {
180
+ const networkCodes = [
181
+ 'ECONNRESET',
182
+ 'ECONNREFUSED',
183
+ 'ETIMEDOUT',
184
+ 'ENOTFOUND',
185
+ 'EAI_AGAIN',
186
+ 'EPIPE',
187
+ 'UND_ERR_SOCKET',
188
+ 'UND_ERR_HEADERS_TIMEOUT',
189
+ 'UND_ERR_BODY_TIMEOUT',
190
+ 'UND_ERR_CONNECT_TIMEOUT',
191
+ ];
192
+ if (networkCodes.includes(code) || code.startsWith('CERT_') || code.startsWith('ERR_TLS')) {
193
+ return true;
194
+ }
195
+ }
196
+ return false;
197
+ }
198
+ /**
199
+ * Describes a network error kind with human-readable summary and actionable hint.
200
+ *
201
+ * @param kind - The network error kind
202
+ * @returns Summary and hint for the error kind
203
+ */
204
+ export function describeNetworkErrorKind(kind) {
205
+ switch (kind) {
206
+ case 'timeout':
207
+ return {
208
+ summary: 'the request timed out',
209
+ hint: 'The server or an intermediary (proxy/load balancer/WAF) may have closed an idle connection. Large or slow server-side operations can exceed network idle limits — retrying or checking the instance status may help.',
210
+ };
211
+ case 'connection-reset':
212
+ return {
213
+ summary: 'the connection was reset (socket hang up)',
214
+ hint: 'The server, proxy, or load balancer closed the connection unexpectedly. This often happens when the sandbox is processing a long-running operation server-side (e.g., code activation) or when a network intermediary drops an idle connection. Retrying may succeed.',
215
+ };
216
+ case 'connection-refused':
217
+ return {
218
+ summary: 'the connection was refused',
219
+ hint: 'The host is unreachable or not listening on the expected port. Check that the instance hostname is correct and that the instance is running (not stopped).',
220
+ };
221
+ case 'dns':
222
+ return {
223
+ summary: 'the hostname could not be resolved',
224
+ hint: 'DNS lookup failed for the configured instance hostname. Verify the hostname in your dw.json or config, and check your network connection.',
225
+ };
226
+ case 'tls':
227
+ return {
228
+ summary: 'a TLS/certificate error occurred',
229
+ hint: 'There was a problem establishing a secure connection. Check client certificate configuration (mTLS), certificate validity, or trusted CA certificates if using self-signed certs.',
230
+ };
231
+ case 'aborted':
232
+ return {
233
+ summary: 'the operation was aborted',
234
+ hint: 'The request was canceled, likely due to a client-side timeout or explicit cancellation.',
235
+ };
236
+ case 'unknown':
237
+ return {
238
+ summary: 'a network error occurred',
239
+ hint: 'An unexpected network failure occurred. Check your connection, instance availability, and any proxy or firewall settings.',
240
+ };
241
+ }
242
+ }
243
+ /**
244
+ * Wraps a network error with context about the failed operation and target host.
245
+ *
246
+ * If the error is already a NetworkError, returns it as-is (possibly filling in missing context).
247
+ * If the error is not a network error (e.g., HTTPError), returns it unchanged.
248
+ * Otherwise, classifies and wraps the error in a NetworkError with an actionable message.
249
+ *
250
+ * This function does NOT throw — it returns the wrapped or original error. The caller must throw it.
251
+ *
252
+ * @param err - The error to wrap
253
+ * @param context - Operation and host context for the error
254
+ * @returns The wrapped NetworkError, or the original error if it's not a network error
255
+ *
256
+ * @example
257
+ * try {
258
+ * await fetch(url);
259
+ * } catch (err) {
260
+ * throw wrapNetworkError(err, { operation: 'OAuth token request', host: 'account.demandware.com' });
261
+ * }
262
+ */
263
+ export function wrapNetworkError(err, context) {
264
+ // If already a NetworkError, optionally fill in missing context but don't double-wrap
265
+ if (err instanceof NetworkError) {
266
+ if (context.operation && !err.operation) {
267
+ return new NetworkError(err.message, {
268
+ kind: err.kind,
269
+ operation: context.operation,
270
+ host: err.host ?? context.host,
271
+ cause: err.cause,
272
+ });
273
+ }
274
+ if (context.host && !err.host) {
275
+ return new NetworkError(err.message, {
276
+ kind: err.kind,
277
+ operation: err.operation ?? context.operation,
278
+ host: context.host,
279
+ cause: err.cause,
280
+ });
281
+ }
282
+ return err;
283
+ }
284
+ // If not a network error, pass through unchanged
285
+ if (!isNetworkError(err)) {
286
+ return err;
287
+ }
288
+ // Classify and wrap
289
+ const kind = classifyNetworkError(err);
290
+ const { summary, hint } = describeNetworkErrorKind(kind);
291
+ const operation = context.operation ?? 'Network request';
292
+ const hostPart = context.host ? ` to ${context.host}` : '';
293
+ const message = `${operation}${hostPart} failed: ${summary}. ${hint}`;
294
+ return new NetworkError(message, {
295
+ kind,
296
+ operation: context.operation,
297
+ host: context.host,
298
+ cause: err,
299
+ });
300
+ }
301
+ //# sourceMappingURL=network-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-error.js","sourceRoot":"","sources":["../../../src/errors/network-error.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import * as fs from 'node:fs';
7
7
  import * as path from 'node:path';
8
8
  import JSZip from 'jszip';
9
9
  import { B2CInstance } from '../../instance/index.js';
10
+ import { wrapNetworkError } from '../../errors/network-error.js';
10
11
  import { getLogger } from '../../logging/logger.js';
11
12
  const GITHUB_RAW_BASE = 'https://raw.githubusercontent.com/SalesforceCommerceCloud/commerce-apps/main';
12
13
  /**
@@ -68,7 +69,9 @@ export async function pullCommerceApps(instance, features, options = {}) {
68
69
  zipData = Buffer.from(await response.arrayBuffer());
69
70
  }
70
71
  catch (err) {
71
- const msg = err instanceof Error ? err.message : String(err);
72
+ const host = new URL(githubUrl).host;
73
+ const wrappedErr = wrapNetworkError(err, { operation: 'Commerce App GitHub download', host });
74
+ const msg = wrappedErr instanceof Error ? wrappedErr.message : String(wrappedErr);
72
75
  failed.push({ featureName, error: `GitHub download failed: ${msg}` });
73
76
  continue;
74
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/operations/cap/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/operations/cap/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Timeout for long-running WebDAV operations (10 minutes).
3
+ * Server-side zipping and large downloads can take significant time.
4
+ */
5
+ export declare const LONG_OPERATION_TIMEOUT_MS = 600000;
6
+ /**
7
+ * Timeout for the server-side unzip operation (5 minutes).
8
+ *
9
+ * The unzip is a synchronous WebDAV POST with no server-side job handle, so it is
10
+ * issued exactly ONCE and never retried on a network drop: re-issuing could start a
11
+ * second extraction concurrently with one still running on the backend, racing writes
12
+ * into the same code-version directory. This timeout therefore bounds how long the
13
+ * client waits for the single attempt before surfacing a clear error — it is generous
14
+ * enough for legitimately slow extractions of large archives to complete, while still
15
+ * guaranteeing we don't hang indefinitely on a dead connection.
16
+ */
17
+ export declare const UNZIP_TIMEOUT_MS = 300000;
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ /**
7
+ * Timeout for long-running WebDAV operations (10 minutes).
8
+ * Server-side zipping and large downloads can take significant time.
9
+ */
10
+ export const LONG_OPERATION_TIMEOUT_MS = 600_000;
11
+ /**
12
+ * Timeout for the server-side unzip operation (5 minutes).
13
+ *
14
+ * The unzip is a synchronous WebDAV POST with no server-side job handle, so it is
15
+ * issued exactly ONCE and never retried on a network drop: re-issuing could start a
16
+ * second extraction concurrently with one still running on the backend, racing writes
17
+ * into the same code-version directory. This timeout therefore bounds how long the
18
+ * client waits for the single attempt before surfacing a clear error — it is generous
19
+ * enough for legitimately slow extractions of large archives to complete, while still
20
+ * guaranteeing we don't hang indefinitely on a dead connection.
21
+ */
22
+ export const UNZIP_TIMEOUT_MS = 300_000;
23
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/operations/code/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC"}
@@ -9,6 +9,8 @@ import JSZip from 'jszip';
9
9
  import { getLogger } from '../../logging/logger.js';
10
10
  import { findCartridges } from './cartridges.js';
11
11
  import { activateCodeVersion, reloadCodeVersion } from './versions.js';
12
+ import { UNZIP_TIMEOUT_MS } from './constants.js';
13
+ import { NetworkError, describeNetworkErrorKind } from '../../errors/network-error.js';
12
14
  const UNZIP_BODY = new URLSearchParams({ method: 'UNZIP' }).toString();
13
15
  /**
14
16
  * Recursively adds a directory to a JSZip instance.
@@ -138,7 +140,16 @@ export async function uploadCartridges(instance, cartridges, options) {
138
140
  stopProgress();
139
141
  }
140
142
  logger.debug('Archive uploaded');
141
- // Unzip on server
143
+ // Unzip on server. Single attempt — deliberately NOT retried on a network drop.
144
+ //
145
+ // The unzip is a synchronous WebDAV POST with no server-side job handle, so a
146
+ // dropped connection is only a client-side observation: it tells us our socket
147
+ // died, not whether the backend is still extracting the archive. Re-issuing
148
+ // UNZIP could start a SECOND extraction concurrently with one still in progress,
149
+ // racing writes into the same Cartridges/<version>/ directory and corrupting the
150
+ // code version. So on a drop we surface a clear, actionable error that warns the
151
+ // extraction may still be running, and we leave the uploaded archive in place so
152
+ // the user can verify and decide — we never silently re-run.
142
153
  stopProgress = startProgress('unzipping');
143
154
  logger.debug('Unzipping archive on server...');
144
155
  let response;
@@ -149,11 +160,29 @@ export async function uploadCartridges(instance, cartridges, options) {
149
160
  headers: {
150
161
  'Content-Type': 'application/x-www-form-urlencoded',
151
162
  },
163
+ signal: AbortSignal.timeout(UNZIP_TIMEOUT_MS),
152
164
  });
165
+ stopProgress();
153
166
  }
154
- finally {
167
+ catch (error) {
155
168
  stopProgress();
169
+ // Enrich network failures with deploy-specific context and an explicit
170
+ // warning that the server-side extraction may still be in progress.
171
+ if (error instanceof NetworkError) {
172
+ const { summary, hint } = describeNetworkErrorKind(error.kind);
173
+ throw new NetworkError(`Server-side unzip of cartridge archive failed: ${summary}. ${hint} ` +
174
+ `Note: the connection dropped, but the server may still be extracting the archive — ` +
175
+ `do not assume the deploy failed. The uploaded archive remains at "${uploadPath}". ` +
176
+ `Wait for any in-progress extraction to finish and verify the code version before re-deploying.`, {
177
+ kind: error.kind,
178
+ operation: 'server-side unzip of cartridge archive',
179
+ host: instance.config.hostname,
180
+ cause: error.cause,
181
+ });
182
+ }
183
+ throw error;
156
184
  }
185
+ // Check response status (non-throwing error from server)
157
186
  if (!response.ok) {
158
187
  const text = await response.text();
159
188
  throw new Error(`Failed to unzip archive: ${response.status} ${response.statusText} - ${text}`);
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/operations/code/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/operations/code/deploy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAoD,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAC,MAAM,+BAA+B,CAAC;AAErF,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AA8CrE;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAU,EAAE,OAAe,EAAE,OAAe;IAC3E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;IAE1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAqB,EAAE,UAA8B;IAC1F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,MAAM,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAC,EAAE,YAAY,UAAU,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAC1F,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,cAAc,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAC,EAAE,WAAW,aAAa,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;YAC1C,MAAM,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAC,EAAE,oBAAoB,aAAa,kBAAkB,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAqB,EACrB,UAA8B,EAC9B,OAAuB;IAEvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,oBAAoB,GAAG,MAAM,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAEvC,sEAAsE;IACtE,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACnC,SAAS,aAAa,CAAC,KAAkC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,UAAU,EAAE,CAAC,EAAC,KAAK,EAAE,cAAc,EAAE,CAAC,EAAC,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU;YAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,EAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,oBAAoB,CAAC,CAAC;QACzB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,qBAAqB;IACrB,UAAU,EAAE,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAAC,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAExB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;QACrC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,SAAS;QACtB,kBAAkB,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC;KAC/B,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAC,EAAE,oBAAoB,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;IAE/E,iBAAiB;IACjB,IAAI,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,EAAE,sBAAsB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,YAAY,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEjC,gFAAgF;IAChF,EAAE;IACF,8EAA8E;IAC9E,+EAA+E;IAC/E,4EAA4E;IAC5E,iFAAiF;IACjF,iFAAiF;IACjF,iFAAiF;IACjF,iFAAiF;IACjF,6DAA6D;IAC7D,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC/C,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC9C,CAAC,CAAC;QACH,YAAY,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,uEAAuE;QACvE,oEAAoE;QACpE,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,EAAC,OAAO,EAAE,IAAI,EAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,YAAY,CACpB,kDAAkD,OAAO,KAAK,IAAI,GAAG;gBACnE,qFAAqF;gBACrF,qEAAqE,UAAU,KAAK;gBACpF,gGAAgG,EAClG;gBACE,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,wCAAwC;gBACnD,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEjC,iDAAiD;IACjD,UAAU,EAAE,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,EAAC,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uEAAuE;QACvE,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,UAAU,EAAC,EAAE,kDAAkD,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,KAAK,CACV,EAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,EAAC,EAClF,YAAY,UAAU,CAAC,MAAM,kBAAkB,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAC1E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAqB,EACrB,SAAiB,EACjB,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,EAAE,uBAAuB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAC,EAAE,SAAS,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC;IACpF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;IACpB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAC,CAAC,CAAC;IAE/E,gCAAgC;IAChC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,MAAM,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjD,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC/C,SAAS,GAAG,IAAI,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,OAAO;QACL,UAAU;QACV,WAAW;QACX,SAAS;QACT,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -8,9 +8,8 @@ import fs from 'node:fs';
8
8
  import JSZip from 'jszip';
9
9
  import { getLogger } from '../../logging/logger.js';
10
10
  import { getActiveCodeVersion } from './versions.js';
11
+ import { LONG_OPERATION_TIMEOUT_MS } from './constants.js';
11
12
  const ZIP_BODY = new URLSearchParams({ method: 'ZIP' }).toString();
12
- // 10 minutes — server-side zipping and large downloads can take a long time
13
- const LONG_OPERATION_TIMEOUT_MS = 600_000;
14
13
  // Progress helper: fires immediately (0s) then every 5s until stopped
15
14
  const PROGRESS_INTERVAL_MS = 5_000;
16
15
  function startProgress(phase, onProgress) {