@vercel/sandbox 2.0.0-beta.2 → 2.0.0-beta.20
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.
- package/README.md +48 -1
- package/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/api-client/api-client.cjs +445 -0
- package/dist/api-client/api-client.cjs.map +1 -0
- package/dist/api-client/api-client.d.cts +6235 -0
- package/dist/api-client/api-client.d.ts +6229 -706
- package/dist/api-client/api-client.js +436 -472
- package/dist/api-client/api-client.js.map +1 -1
- package/dist/api-client/api-error.cjs +32 -0
- package/dist/api-client/api-error.cjs.map +1 -0
- package/dist/api-client/api-error.d.cts +29 -0
- package/dist/api-client/api-error.d.ts +21 -16
- package/dist/api-client/api-error.js +28 -32
- package/dist/api-client/api-error.js.map +1 -1
- package/dist/api-client/base-client.cjs +126 -0
- package/dist/api-client/base-client.cjs.map +1 -0
- package/dist/api-client/base-client.d.cts +38 -0
- package/dist/api-client/base-client.d.ts +31 -36
- package/dist/api-client/base-client.js +114 -118
- package/dist/api-client/base-client.js.map +1 -1
- package/dist/api-client/file-writer.cjs +62 -0
- package/dist/api-client/file-writer.cjs.map +1 -0
- package/dist/api-client/file-writer.d.cts +66 -0
- package/dist/api-client/file-writer.d.ts +56 -42
- package/dist/api-client/file-writer.js +57 -61
- package/dist/api-client/file-writer.js.map +1 -1
- package/dist/api-client/index.cjs +2 -0
- package/dist/api-client/index.d.ts +2 -2
- package/dist/api-client/index.js +4 -21
- package/dist/api-client/validators.cjs +229 -0
- package/dist/api-client/validators.cjs.map +1 -0
- package/dist/api-client/validators.d.cts +26885 -0
- package/dist/api-client/validators.d.ts +26732 -3706
- package/dist/api-client/validators.js +198 -191
- package/dist/api-client/validators.js.map +1 -1
- package/dist/api-client/with-retry.cjs +89 -0
- package/dist/api-client/with-retry.cjs.map +1 -0
- package/dist/api-client/with-retry.d.cts +10 -0
- package/dist/api-client/with-retry.d.ts +9 -13
- package/dist/api-client/with-retry.js +81 -102
- package/dist/api-client/with-retry.js.map +1 -1
- package/dist/auth/api.cjs +29 -0
- package/dist/auth/api.cjs.map +1 -0
- package/dist/auth/api.js +26 -25
- package/dist/auth/api.js.map +1 -1
- package/dist/auth/error.cjs +13 -0
- package/dist/auth/error.cjs.map +1 -0
- package/dist/auth/error.js +11 -11
- package/dist/auth/error.js.map +1 -1
- package/dist/auth/file.cjs +64 -0
- package/dist/auth/file.cjs.map +1 -0
- package/dist/auth/file.d.cts +26 -0
- package/dist/auth/file.d.ts +19 -15
- package/dist/auth/file.js +49 -64
- package/dist/auth/file.js.map +1 -1
- package/dist/auth/index.cjs +11 -0
- package/dist/auth/index.d.cts +5 -0
- package/dist/auth/index.d.ts +5 -6
- package/dist/auth/index.js +6 -27
- package/dist/auth/linked-project.cjs +38 -0
- package/dist/auth/linked-project.cjs.map +1 -0
- package/dist/auth/linked-project.js +30 -64
- package/dist/auth/linked-project.js.map +1 -1
- package/dist/auth/oauth.cjs +205 -0
- package/dist/auth/oauth.cjs.map +1 -0
- package/dist/auth/oauth.d.cts +135 -0
- package/dist/auth/oauth.d.ts +113 -109
- package/dist/auth/oauth.js +185 -252
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/poll-for-token.cjs +82 -0
- package/dist/auth/poll-for-token.cjs.map +1 -0
- package/dist/auth/poll-for-token.d.cts +28 -0
- package/dist/auth/poll-for-token.d.ts +23 -15
- package/dist/auth/poll-for-token.js +79 -64
- package/dist/auth/poll-for-token.js.map +1 -1
- package/dist/auth/project.cjs +178 -0
- package/dist/auth/project.cjs.map +1 -0
- package/dist/auth/project.d.cts +40 -0
- package/dist/auth/project.d.ts +19 -19
- package/dist/auth/project.js +169 -72
- package/dist/auth/project.js.map +1 -1
- package/dist/auth/zod.cjs +22 -0
- package/dist/auth/zod.cjs.map +1 -0
- package/dist/auth/zod.js +18 -17
- package/dist/auth/zod.js.map +1 -1
- package/dist/command.cjs +328 -0
- package/dist/command.cjs.map +1 -0
- package/dist/command.d.cts +289 -0
- package/dist/command.d.ts +265 -171
- package/dist/command.js +323 -226
- package/dist/command.js.map +1 -1
- package/dist/constants.d.cts +5 -0
- package/dist/constants.d.ts +5 -1
- package/dist/filesystem.cjs +499 -0
- package/dist/filesystem.cjs.map +1 -0
- package/dist/filesystem.d.cts +258 -0
- package/dist/filesystem.d.ts +258 -0
- package/dist/filesystem.js +497 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/index.cjs +15 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.js +8 -17
- package/dist/network-policy.d.cts +156 -0
- package/dist/network-policy.d.ts +88 -28
- package/dist/sandbox.cjs +816 -0
- package/dist/sandbox.cjs.map +1 -0
- package/dist/sandbox.d.cts +2847 -0
- package/dist/sandbox.d.ts +2834 -628
- package/dist/sandbox.js +808 -557
- package/dist/sandbox.js.map +1 -1
- package/dist/session.cjs +527 -0
- package/dist/session.cjs.map +1 -0
- package/dist/session.d.cts +410 -0
- package/dist/session.d.ts +403 -368
- package/dist/session.js +524 -489
- package/dist/session.js.map +1 -1
- package/dist/snapshot.cjs +204 -0
- package/dist/snapshot.cjs.map +1 -0
- package/dist/snapshot.d.cts +161 -0
- package/dist/snapshot.d.ts +152 -92
- package/dist/snapshot.js +201 -114
- package/dist/snapshot.js.map +1 -1
- package/dist/utils/array.cjs +17 -0
- package/dist/utils/array.cjs.map +1 -0
- package/dist/utils/array.js +12 -15
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/consume-readable.cjs +18 -0
- package/dist/utils/consume-readable.cjs.map +1 -0
- package/dist/utils/consume-readable.js +13 -12
- package/dist/utils/consume-readable.js.map +1 -1
- package/dist/utils/decode-base64-url.cjs +15 -0
- package/dist/utils/decode-base64-url.cjs.map +1 -0
- package/dist/utils/decode-base64-url.js +10 -9
- package/dist/utils/decode-base64-url.js.map +1 -1
- package/dist/utils/dev-credentials.cjs +142 -0
- package/dist/utils/dev-credentials.cjs.map +1 -0
- package/dist/utils/dev-credentials.js +126 -184
- package/dist/utils/dev-credentials.js.map +1 -1
- package/dist/utils/get-credentials.cjs +123 -0
- package/dist/utils/get-credentials.cjs.map +1 -0
- package/dist/utils/get-credentials.d.cts +21 -0
- package/dist/utils/get-credentials.d.ts +19 -61
- package/dist/utils/get-credentials.js +106 -140
- package/dist/utils/get-credentials.js.map +1 -1
- package/dist/utils/log.cjs +25 -0
- package/dist/utils/log.cjs.map +1 -0
- package/dist/utils/log.js +15 -17
- package/dist/utils/log.js.map +1 -1
- package/dist/utils/network-policy.cjs +49 -0
- package/dist/utils/network-policy.cjs.map +1 -0
- package/dist/utils/network-policy.js +42 -77
- package/dist/utils/network-policy.js.map +1 -1
- package/dist/utils/normalizePath.cjs +27 -0
- package/dist/utils/normalizePath.cjs.map +1 -0
- package/dist/utils/normalizePath.js +21 -28
- package/dist/utils/normalizePath.js.map +1 -1
- package/dist/utils/paginator.cjs +41 -0
- package/dist/utils/paginator.cjs.map +1 -0
- package/dist/utils/paginator.d.cts +16 -0
- package/dist/utils/paginator.d.ts +16 -0
- package/dist/utils/paginator.js +40 -0
- package/dist/utils/paginator.js.map +1 -0
- package/dist/utils/resolveSignal.cjs +20 -0
- package/dist/utils/resolveSignal.cjs.map +1 -0
- package/dist/utils/resolveSignal.d.cts +15 -0
- package/dist/utils/resolveSignal.d.ts +12 -10
- package/dist/utils/resolveSignal.js +14 -17
- package/dist/utils/resolveSignal.js.map +1 -1
- package/dist/utils/sandbox-snapshot.cjs +14 -0
- package/dist/utils/sandbox-snapshot.cjs.map +1 -0
- package/dist/utils/sandbox-snapshot.d.cts +10 -0
- package/dist/utils/sandbox-snapshot.d.ts +11 -0
- package/dist/utils/sandbox-snapshot.js +14 -0
- package/dist/utils/sandbox-snapshot.js.map +1 -0
- package/dist/utils/types.cjs +13 -0
- package/dist/utils/types.cjs.map +1 -0
- package/dist/utils/types.d.cts +11 -0
- package/dist/utils/types.d.ts +5 -7
- package/dist/utils/types.js +8 -8
- package/dist/utils/types.js.map +1 -1
- package/dist/version.cjs +7 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.js +5 -5
- package/dist/version.js.map +1 -1
- package/package.json +23 -3
- package/dist/api-client/index.js.map +0 -1
- package/dist/auth/api.d.ts +0 -6
- package/dist/auth/error.d.ts +0 -11
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/linked-project.d.ts +0 -10
- package/dist/auth/zod.d.ts +0 -5
- package/dist/constants.js +0 -3
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/network-policy.js +0 -3
- package/dist/network-policy.js.map +0 -1
- package/dist/utils/array.d.ts +0 -9
- package/dist/utils/consume-readable.d.ts +0 -5
- package/dist/utils/convert-sandbox.d.ts +0 -6
- package/dist/utils/convert-sandbox.js +0 -14
- package/dist/utils/convert-sandbox.js.map +0 -1
- package/dist/utils/decode-base64-url.d.ts +0 -7
- package/dist/utils/dev-credentials.d.ts +0 -37
- package/dist/utils/log.d.ts +0 -2
- package/dist/utils/network-policy.d.ts +0 -7
- package/dist/utils/normalizePath.d.ts +0 -17
- package/dist/version.d.ts +0 -1
|
@@ -1,193 +1,200 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/api-client/validators.ts
|
|
4
|
+
const RuleMatcherValidator = z.object({
|
|
5
|
+
exact: z.string().optional(),
|
|
6
|
+
startsWith: z.string().optional(),
|
|
7
|
+
regex: z.string().optional()
|
|
8
|
+
});
|
|
9
|
+
const KeyValueMatcherValidator = z.object({
|
|
10
|
+
key: RuleMatcherValidator.optional(),
|
|
11
|
+
value: RuleMatcherValidator.optional()
|
|
12
|
+
});
|
|
13
|
+
const RuleMatchValidator = z.object({
|
|
14
|
+
path: RuleMatcherValidator.optional(),
|
|
15
|
+
method: z.array(z.string()).optional(),
|
|
16
|
+
queryString: z.array(KeyValueMatcherValidator).optional(),
|
|
17
|
+
headers: z.array(KeyValueMatcherValidator).optional()
|
|
18
|
+
});
|
|
19
|
+
const InjectionRuleValidator = z.object({
|
|
20
|
+
domain: z.string(),
|
|
21
|
+
headers: z.record(z.string()).optional(),
|
|
22
|
+
headerNames: z.array(z.string()).optional(),
|
|
23
|
+
match: RuleMatchValidator.optional()
|
|
24
|
+
});
|
|
25
|
+
const ForwardRuleValidator = z.object({
|
|
26
|
+
domain: z.string(),
|
|
27
|
+
forwardURL: z.string(),
|
|
28
|
+
match: RuleMatchValidator.optional()
|
|
29
|
+
});
|
|
30
|
+
const NetworkPolicyTransformValidator = z.object({ headers: z.record(z.string()).optional() });
|
|
31
|
+
const NetworkPolicyRuleValidator = z.object({
|
|
32
|
+
match: RuleMatchValidator.optional(),
|
|
33
|
+
transform: z.array(NetworkPolicyTransformValidator).optional(),
|
|
34
|
+
forwardURL: z.string().optional()
|
|
35
|
+
});
|
|
36
|
+
const V2NetworkPolicyObjectValidator = z.object({
|
|
37
|
+
allow: z.union([z.array(z.string()), z.record(z.array(NetworkPolicyRuleValidator))]).optional(),
|
|
38
|
+
subnets: z.object({
|
|
39
|
+
allow: z.array(z.string()).optional(),
|
|
40
|
+
deny: z.array(z.string()).optional()
|
|
41
|
+
}).optional()
|
|
42
|
+
});
|
|
43
|
+
const NetworkPolicyModeValidator = z.union([z.object({ mode: z.literal("allow-all") }).passthrough(), z.object({ mode: z.literal("deny-all") }).passthrough()]);
|
|
44
|
+
const LegacyCustomNetworkPolicyValidator = z.object({
|
|
45
|
+
mode: z.literal("custom"),
|
|
46
|
+
allowedDomains: z.array(z.string()).optional(),
|
|
47
|
+
allowedCIDRs: z.array(z.string()).optional(),
|
|
48
|
+
deniedCIDRs: z.array(z.string()).optional(),
|
|
49
|
+
injectionRules: z.array(InjectionRuleValidator).optional(),
|
|
50
|
+
forwardRules: z.array(ForwardRuleValidator).optional()
|
|
51
|
+
}).passthrough();
|
|
52
|
+
const NetworkPolicyRequestValidator = z.union([NetworkPolicyModeValidator, V2NetworkPolicyObjectValidator.passthrough()]);
|
|
53
|
+
const NetworkPolicyResponseValidator = z.union([NetworkPolicyModeValidator, LegacyCustomNetworkPolicyValidator]);
|
|
54
|
+
const Session = z.object({
|
|
55
|
+
id: z.string(),
|
|
56
|
+
memory: z.number(),
|
|
57
|
+
vcpus: z.number(),
|
|
58
|
+
region: z.string(),
|
|
59
|
+
runtime: z.string(),
|
|
60
|
+
timeout: z.number(),
|
|
61
|
+
status: z.enum([
|
|
62
|
+
"pending",
|
|
63
|
+
"running",
|
|
64
|
+
"stopping",
|
|
65
|
+
"stopped",
|
|
66
|
+
"failed",
|
|
67
|
+
"aborted",
|
|
68
|
+
"snapshotting"
|
|
69
|
+
]),
|
|
70
|
+
requestedAt: z.number(),
|
|
71
|
+
startedAt: z.number().optional(),
|
|
72
|
+
requestedStopAt: z.number().optional(),
|
|
73
|
+
stoppedAt: z.number().optional(),
|
|
74
|
+
abortedAt: z.number().optional(),
|
|
75
|
+
duration: z.number().optional(),
|
|
76
|
+
sourceSnapshotId: z.string().optional(),
|
|
77
|
+
snapshottedAt: z.number().optional(),
|
|
78
|
+
createdAt: z.number(),
|
|
79
|
+
cwd: z.string(),
|
|
80
|
+
updatedAt: z.number(),
|
|
81
|
+
interactivePort: z.number().optional(),
|
|
82
|
+
networkPolicy: NetworkPolicyResponseValidator.optional(),
|
|
83
|
+
activeCpuDurationMs: z.number().optional(),
|
|
84
|
+
networkTransfer: z.object({
|
|
85
|
+
ingress: z.number(),
|
|
86
|
+
egress: z.number()
|
|
87
|
+
}).optional()
|
|
88
|
+
});
|
|
89
|
+
const SandboxRoute = z.object({
|
|
90
|
+
url: z.string(),
|
|
91
|
+
subdomain: z.string(),
|
|
92
|
+
port: z.number()
|
|
93
|
+
});
|
|
94
|
+
const Snapshot = z.object({
|
|
95
|
+
id: z.string(),
|
|
96
|
+
sourceSessionId: z.string(),
|
|
97
|
+
region: z.string(),
|
|
98
|
+
status: z.enum([
|
|
99
|
+
"created",
|
|
100
|
+
"deleted",
|
|
101
|
+
"failed"
|
|
102
|
+
]),
|
|
103
|
+
sizeBytes: z.number(),
|
|
104
|
+
expiresAt: z.number().optional(),
|
|
105
|
+
createdAt: z.number(),
|
|
106
|
+
updatedAt: z.number()
|
|
107
|
+
});
|
|
108
|
+
const CursorPagination = z.object({
|
|
109
|
+
count: z.number(),
|
|
110
|
+
next: z.string().nullable()
|
|
111
|
+
});
|
|
112
|
+
const Command = z.object({
|
|
113
|
+
id: z.string(),
|
|
114
|
+
name: z.string(),
|
|
115
|
+
args: z.array(z.string()),
|
|
116
|
+
cwd: z.string(),
|
|
117
|
+
sessionId: z.string(),
|
|
118
|
+
exitCode: z.number().nullable(),
|
|
119
|
+
startedAt: z.number()
|
|
120
|
+
});
|
|
121
|
+
const CommandFinished = Command.extend({ exitCode: z.number() });
|
|
122
|
+
const SessionResponse = z.object({ session: Session.passthrough() });
|
|
123
|
+
const SessionAndRoutesResponse = SessionResponse.extend({ routes: z.array(SandboxRoute) });
|
|
124
|
+
const SessionsResponse = z.object({
|
|
125
|
+
sessions: z.array(Session.passthrough()),
|
|
126
|
+
pagination: CursorPagination
|
|
127
|
+
});
|
|
128
|
+
const CommandResponse = z.object({ command: Command });
|
|
129
|
+
const CommandFinishedResponse = z.object({ command: CommandFinished });
|
|
130
|
+
const EmptyResponse = z.object({});
|
|
131
|
+
const LogLineBase = z.object({ data: z.string() });
|
|
132
|
+
const LogLineStdout = LogLineBase.extend({ stream: z.literal("stdout") });
|
|
133
|
+
const LogLineStderr = LogLineBase.extend({ stream: z.literal("stderr") });
|
|
134
|
+
const LogError = z.object({
|
|
135
|
+
stream: z.literal("error"),
|
|
136
|
+
data: z.object({
|
|
137
|
+
code: z.string(),
|
|
138
|
+
message: z.string()
|
|
139
|
+
})
|
|
140
|
+
});
|
|
141
|
+
const LogLine = z.discriminatedUnion("stream", [
|
|
142
|
+
LogLineStdout,
|
|
143
|
+
LogLineStderr,
|
|
144
|
+
LogError
|
|
24
145
|
]);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
*/
|
|
80
|
-
count: zod_1.z.number(),
|
|
81
|
-
/**
|
|
82
|
-
* Timestamp that must be used to request the next page.
|
|
83
|
-
* @example 1540095775951
|
|
84
|
-
*/
|
|
85
|
-
next: zod_1.z.number().nullable(),
|
|
86
|
-
/**
|
|
87
|
-
* Timestamp that must be used to request the previous page.
|
|
88
|
-
* @example 1540095775951
|
|
89
|
-
*/
|
|
90
|
-
prev: zod_1.z.number().nullable(),
|
|
91
|
-
});
|
|
92
|
-
exports.Command = zod_1.z.object({
|
|
93
|
-
id: zod_1.z.string(),
|
|
94
|
-
name: zod_1.z.string(),
|
|
95
|
-
args: zod_1.z.array(zod_1.z.string()),
|
|
96
|
-
cwd: zod_1.z.string(),
|
|
97
|
-
sandboxId: zod_1.z.string(),
|
|
98
|
-
exitCode: zod_1.z.number().nullable(),
|
|
99
|
-
startedAt: zod_1.z.number(),
|
|
100
|
-
});
|
|
101
|
-
const CommandFinished = exports.Command.extend({
|
|
102
|
-
exitCode: zod_1.z.number(),
|
|
103
|
-
});
|
|
104
|
-
exports.SandboxResponse = zod_1.z.object({
|
|
105
|
-
sandbox: exports.Sandbox,
|
|
106
|
-
});
|
|
107
|
-
exports.SandboxAndRoutesResponse = exports.SandboxResponse.extend({
|
|
108
|
-
routes: zod_1.z.array(exports.SandboxRoute),
|
|
109
|
-
});
|
|
110
|
-
exports.CommandResponse = zod_1.z.object({
|
|
111
|
-
command: exports.Command,
|
|
112
|
-
});
|
|
113
|
-
exports.CommandFinishedResponse = zod_1.z.object({
|
|
114
|
-
command: CommandFinished,
|
|
115
|
-
});
|
|
116
|
-
exports.EmptyResponse = zod_1.z.object({});
|
|
117
|
-
const LogLineBase = zod_1.z.object({ data: zod_1.z.string() });
|
|
118
|
-
exports.LogLineStdout = LogLineBase.extend({
|
|
119
|
-
stream: zod_1.z.literal("stdout"),
|
|
120
|
-
});
|
|
121
|
-
exports.LogLineStderr = LogLineBase.extend({
|
|
122
|
-
stream: zod_1.z.literal("stderr"),
|
|
123
|
-
});
|
|
124
|
-
exports.LogError = zod_1.z.object({
|
|
125
|
-
stream: zod_1.z.literal("error"),
|
|
126
|
-
data: zod_1.z.object({
|
|
127
|
-
code: zod_1.z.string(),
|
|
128
|
-
message: zod_1.z.string(),
|
|
129
|
-
}),
|
|
130
|
-
});
|
|
131
|
-
exports.LogLine = zod_1.z.discriminatedUnion("stream", [
|
|
132
|
-
exports.LogLineStdout,
|
|
133
|
-
exports.LogLineStderr,
|
|
134
|
-
exports.LogError,
|
|
135
|
-
]);
|
|
136
|
-
exports.SandboxesResponse = zod_1.z.object({
|
|
137
|
-
sandboxes: zod_1.z.array(exports.Sandbox),
|
|
138
|
-
pagination: exports.Pagination,
|
|
139
|
-
});
|
|
140
|
-
exports.SnapshotsResponse = zod_1.z.object({
|
|
141
|
-
snapshots: zod_1.z.array(exports.Snapshot),
|
|
142
|
-
pagination: exports.Pagination,
|
|
143
|
-
});
|
|
144
|
-
exports.ExtendTimeoutResponse = zod_1.z.object({
|
|
145
|
-
sandbox: exports.Sandbox,
|
|
146
|
-
});
|
|
147
|
-
exports.UpdateNetworkPolicyResponse = zod_1.z.object({
|
|
148
|
-
sandbox: exports.Sandbox,
|
|
149
|
-
});
|
|
150
|
-
exports.CreateSnapshotResponse = zod_1.z.object({
|
|
151
|
-
snapshot: exports.Snapshot,
|
|
152
|
-
sandbox: exports.Sandbox,
|
|
153
|
-
});
|
|
154
|
-
exports.SnapshotResponse = zod_1.z.object({
|
|
155
|
-
snapshot: exports.Snapshot,
|
|
156
|
-
});
|
|
157
|
-
exports.NamedSandbox = zod_1.z.object({
|
|
158
|
-
name: zod_1.z.string(),
|
|
159
|
-
persistent: zod_1.z.boolean(),
|
|
160
|
-
region: zod_1.z.string(),
|
|
161
|
-
vcpus: zod_1.z.number(),
|
|
162
|
-
memory: zod_1.z.number(),
|
|
163
|
-
runtime: zod_1.z.string(),
|
|
164
|
-
timeout: zod_1.z.number(),
|
|
165
|
-
networkPolicy: exports.NetworkPolicyValidator.optional(),
|
|
166
|
-
totalEgressBytes: zod_1.z.number().optional(),
|
|
167
|
-
totalIngressBytes: zod_1.z.number().optional(),
|
|
168
|
-
totalActiveCpuDurationMs: zod_1.z.number().optional(),
|
|
169
|
-
totalDurationMs: zod_1.z.number().optional(),
|
|
170
|
-
createdAt: zod_1.z.number(),
|
|
171
|
-
updatedAt: zod_1.z.number(),
|
|
172
|
-
currentSandboxId: zod_1.z.string(),
|
|
173
|
-
currentSnapshotId: zod_1.z.string().optional(),
|
|
174
|
-
status: exports.Sandbox.shape.status,
|
|
175
|
-
});
|
|
176
|
-
exports.NamedSandboxAndSessionResponse = zod_1.z.object({
|
|
177
|
-
namedSandbox: exports.NamedSandbox,
|
|
178
|
-
sandbox: exports.Sandbox,
|
|
179
|
-
routes: zod_1.z.array(exports.SandboxRoute),
|
|
180
|
-
});
|
|
181
|
-
exports.CursorPagination = zod_1.z.object({
|
|
182
|
-
count: zod_1.z.number(),
|
|
183
|
-
next: zod_1.z.string().nullable(),
|
|
184
|
-
total: zod_1.z.number(),
|
|
185
|
-
});
|
|
186
|
-
exports.NamedSandboxesPaginationResponse = zod_1.z.object({
|
|
187
|
-
namedSandboxes: zod_1.z.array(exports.NamedSandbox),
|
|
188
|
-
pagination: exports.CursorPagination,
|
|
189
|
-
});
|
|
190
|
-
exports.UpdateNamedSandboxResponse = zod_1.z.object({
|
|
191
|
-
namedSandbox: exports.NamedSandbox,
|
|
192
|
-
});
|
|
146
|
+
const SnapshotsResponse = z.object({
|
|
147
|
+
snapshots: z.array(Snapshot),
|
|
148
|
+
pagination: CursorPagination
|
|
149
|
+
});
|
|
150
|
+
const CreateSnapshotResponse = z.object({
|
|
151
|
+
snapshot: Snapshot,
|
|
152
|
+
session: Session.passthrough()
|
|
153
|
+
});
|
|
154
|
+
const SnapshotResponse = z.object({ snapshot: Snapshot });
|
|
155
|
+
const Sandbox = z.object({
|
|
156
|
+
name: z.string(),
|
|
157
|
+
persistent: z.boolean(),
|
|
158
|
+
region: z.string().optional(),
|
|
159
|
+
vcpus: z.number().optional(),
|
|
160
|
+
memory: z.number().optional(),
|
|
161
|
+
runtime: z.string().optional(),
|
|
162
|
+
timeout: z.number().optional(),
|
|
163
|
+
networkPolicy: NetworkPolicyResponseValidator.optional(),
|
|
164
|
+
totalEgressBytes: z.number().optional(),
|
|
165
|
+
totalIngressBytes: z.number().optional(),
|
|
166
|
+
totalActiveCpuDurationMs: z.number().optional(),
|
|
167
|
+
totalDurationMs: z.number().optional(),
|
|
168
|
+
createdAt: z.number(),
|
|
169
|
+
updatedAt: z.number(),
|
|
170
|
+
currentSessionId: z.string(),
|
|
171
|
+
currentSnapshotId: z.string().optional(),
|
|
172
|
+
status: Session.shape.status,
|
|
173
|
+
statusUpdatedAt: z.number().optional(),
|
|
174
|
+
cwd: z.string().optional(),
|
|
175
|
+
tags: z.record(z.string()).optional(),
|
|
176
|
+
snapshotExpiration: z.number().optional()
|
|
177
|
+
});
|
|
178
|
+
const StopSessionResponse = z.object({
|
|
179
|
+
session: Session.passthrough(),
|
|
180
|
+
sandbox: Sandbox.optional(),
|
|
181
|
+
snapshot: Snapshot.optional()
|
|
182
|
+
});
|
|
183
|
+
const SandboxAndSessionResponse = z.object({
|
|
184
|
+
sandbox: Sandbox,
|
|
185
|
+
session: Session.passthrough(),
|
|
186
|
+
routes: z.array(SandboxRoute),
|
|
187
|
+
resumed: z.boolean().optional()
|
|
188
|
+
});
|
|
189
|
+
const SandboxesPaginationResponse = z.object({
|
|
190
|
+
sandboxes: z.array(Sandbox),
|
|
191
|
+
pagination: CursorPagination
|
|
192
|
+
});
|
|
193
|
+
const UpdateSandboxResponse = z.object({
|
|
194
|
+
sandbox: Sandbox,
|
|
195
|
+
routes: z.array(SandboxRoute).optional()
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
//#endregion
|
|
199
|
+
export { Command, CommandFinishedResponse, CommandResponse, CreateSnapshotResponse, CursorPagination, EmptyResponse, ForwardRuleValidator, InjectionRuleValidator, LogError, LogLine, LogLineStderr, LogLineStdout, NetworkPolicyResponseValidator, NetworkPolicyRuleValidator, NetworkPolicyTransformValidator, Sandbox, SandboxAndSessionResponse, SandboxRoute, SandboxesPaginationResponse, Session, SessionAndRoutesResponse, SessionResponse, SessionsResponse, Snapshot, SnapshotResponse, SnapshotsResponse, StopSessionResponse, UpdateSandboxResponse, V2NetworkPolicyObjectValidator };
|
|
193
200
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/api-client/validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators.js","names":[],"sources":["../../src/api-client/validators.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type SessionMetaData = z.infer<typeof Session>;\n\nconst RuleMatcherValidator = z.object({\n exact: z.string().optional(),\n startsWith: z.string().optional(),\n regex: z.string().optional(),\n});\n\nconst KeyValueMatcherValidator = z.object({\n key: RuleMatcherValidator.optional(),\n value: RuleMatcherValidator.optional(),\n});\n\nconst RuleMatchValidator = z.object({\n path: RuleMatcherValidator.optional(),\n method: z.array(z.string()).optional(),\n queryString: z.array(KeyValueMatcherValidator).optional(),\n headers: z.array(KeyValueMatcherValidator).optional(),\n});\n\nexport const InjectionRuleValidator = z.object({\n domain: z.string(),\n // headers are only sent in requests\n headers: z.record(z.string()).optional(),\n // headerNames are returned in responses\n headerNames: z.array(z.string()).optional(),\n match: RuleMatchValidator.optional(),\n});\n\nexport const ForwardRuleValidator = z.object({\n domain: z.string(),\n forwardURL: z.string(),\n match: RuleMatchValidator.optional(),\n});\n\nexport const NetworkPolicyTransformValidator = z.object({\n headers: z.record(z.string()).optional(),\n});\n\nexport const NetworkPolicyRuleValidator = z.object({\n match: RuleMatchValidator.optional(),\n transform: z.array(NetworkPolicyTransformValidator).optional(),\n forwardURL: z.string().optional(),\n});\n\nexport const V2NetworkPolicyObjectValidator = z.object({\n allow: z\n .union([\n z.array(z.string()),\n z.record(z.array(NetworkPolicyRuleValidator)),\n ])\n .optional(),\n subnets: z\n .object({\n allow: z.array(z.string()).optional(),\n deny: z.array(z.string()).optional(),\n })\n .optional(),\n});\n\nconst NetworkPolicyModeValidator = z.union([\n z.object({ mode: z.literal(\"allow-all\") }).passthrough(),\n z.object({ mode: z.literal(\"deny-all\") }).passthrough(),\n]);\n\nconst LegacyCustomNetworkPolicyValidator = z\n .object({\n mode: z.literal(\"custom\"),\n allowedDomains: z.array(z.string()).optional(),\n allowedCIDRs: z.array(z.string()).optional(),\n deniedCIDRs: z.array(z.string()).optional(),\n injectionRules: z.array(InjectionRuleValidator).optional(),\n forwardRules: z.array(ForwardRuleValidator).optional(),\n })\n .passthrough();\n\nexport const NetworkPolicyRequestValidator = z.union([\n NetworkPolicyModeValidator,\n V2NetworkPolicyObjectValidator.passthrough(),\n]);\n\nexport const NetworkPolicyResponseValidator = z.union([\n NetworkPolicyModeValidator,\n LegacyCustomNetworkPolicyValidator,\n]);\n\nexport const Session = z.object({\n id: z.string(),\n memory: z.number(),\n vcpus: z.number(),\n region: z.string(),\n runtime: z.string(),\n timeout: z.number(),\n status: z.enum([\n \"pending\",\n \"running\",\n \"stopping\",\n \"stopped\",\n \"failed\",\n \"aborted\",\n \"snapshotting\",\n ]),\n requestedAt: z.number(),\n startedAt: z.number().optional(),\n requestedStopAt: z.number().optional(),\n stoppedAt: z.number().optional(),\n abortedAt: z.number().optional(),\n duration: z.number().optional(),\n sourceSnapshotId: z.string().optional(),\n snapshottedAt: z.number().optional(),\n createdAt: z.number(),\n cwd: z.string(),\n updatedAt: z.number(),\n interactivePort: z.number().optional(),\n networkPolicy: NetworkPolicyResponseValidator.optional(),\n activeCpuDurationMs: z.number().optional(),\n networkTransfer: z.object({\n ingress: z.number(),\n egress: z.number(),\n }).optional(),\n});\n\nexport type SandboxRouteData = z.infer<typeof SandboxRoute>;\n\nexport const SandboxRoute = z.object({\n url: z.string(),\n subdomain: z.string(),\n port: z.number(),\n});\n\nexport type SnapshotMetadata = z.infer<typeof Snapshot>;\n\nexport const Snapshot = z.object({\n id: z.string(),\n sourceSessionId: z.string(),\n region: z.string(),\n status: z.enum([\"created\", \"deleted\", \"failed\"]),\n sizeBytes: z.number(),\n expiresAt: z.number().optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\nexport const CursorPagination = z.object({\n count: z.number(),\n next: z.string().nullable(),\n});\n\nexport type CommandData = z.infer<typeof Command>;\n\nexport const Command = z.object({\n id: z.string(),\n name: z.string(),\n args: z.array(z.string()),\n cwd: z.string(),\n sessionId: z.string(),\n exitCode: z.number().nullable(),\n startedAt: z.number(),\n});\n\nconst CommandFinished = Command.extend({\n exitCode: z.number(),\n});\n\nexport const SessionResponse = z.object({\n session: Session.passthrough(),\n});\n\nexport const SessionAndRoutesResponse = SessionResponse.extend({\n routes: z.array(SandboxRoute),\n});\n\nexport const SessionsResponse = z.object({\n sessions: z.array(Session.passthrough()),\n pagination: CursorPagination,\n});\n\nexport const CommandResponse = z.object({\n command: Command,\n});\n\nexport type CommandFinishedData = z.infer<typeof CommandFinishedResponse>[\"command\"];\n\nexport const CommandFinishedResponse = z.object({\n command: CommandFinished,\n});\n\nexport const EmptyResponse = z.object({});\n\nconst LogLineBase = z.object({ data: z.string() });\nexport const LogLineStdout = LogLineBase.extend({\n stream: z.literal(\"stdout\"),\n});\nexport const LogLineStderr = LogLineBase.extend({\n stream: z.literal(\"stderr\"),\n});\n\nexport const LogError = z.object({\n stream: z.literal(\"error\"),\n data: z.object({\n code: z.string(),\n message: z.string(),\n }),\n});\n\nexport const LogLine = z.discriminatedUnion(\"stream\", [\n LogLineStdout,\n LogLineStderr,\n LogError,\n]);\n\nexport const SnapshotsResponse = z.object({\n snapshots: z.array(Snapshot),\n pagination: CursorPagination,\n});\n\nexport const CreateSnapshotResponse = z.object({\n snapshot: Snapshot,\n session: Session.passthrough(),\n});\n\nexport const SnapshotResponse = z.object({\n snapshot: Snapshot,\n});\n\nexport const Sandbox = z.object({\n name: z.string(),\n persistent: z.boolean(),\n region: z.string().optional(),\n vcpus: z.number().optional(),\n memory: z.number().optional(),\n runtime: z.string().optional(),\n timeout: z.number().optional(),\n networkPolicy: NetworkPolicyResponseValidator.optional(),\n totalEgressBytes: z.number().optional(),\n totalIngressBytes: z.number().optional(),\n totalActiveCpuDurationMs: z.number().optional(),\n totalDurationMs: z.number().optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n currentSessionId: z.string(),\n currentSnapshotId: z.string().optional(),\n status: Session.shape.status,\n statusUpdatedAt: z.number().optional(),\n cwd: z.string().optional(),\n tags: z.record(z.string()).optional(),\n snapshotExpiration: z.number().optional(),\n});\n\nexport type SandboxMetaData = z.infer<typeof Sandbox>;\n\nexport const StopSessionResponse = z.object({\n session: Session.passthrough(),\n sandbox: Sandbox.optional(),\n snapshot: Snapshot.optional(),\n});\n\nexport const SandboxAndSessionResponse = z.object({\n sandbox: Sandbox,\n session: Session.passthrough(),\n routes: z.array(SandboxRoute),\n resumed: z.boolean().optional(),\n});\n\nexport const SandboxesPaginationResponse = z.object({\n sandboxes: z.array(Sandbox),\n pagination: CursorPagination,\n});\n\nexport const UpdateSandboxResponse = z.object({\n sandbox: Sandbox,\n routes: z.array(SandboxRoute).optional(),\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_api_error = require('./api-error.cjs');
|
|
3
|
+
let node_timers_promises = require("node:timers/promises");
|
|
4
|
+
let async_retry = require("async-retry");
|
|
5
|
+
async_retry = require_rolldown_runtime.__toESM(async_retry);
|
|
6
|
+
|
|
7
|
+
//#region src/api-client/with-retry.ts
|
|
8
|
+
/**
|
|
9
|
+
* Wraps a fetch function with retry logic. The retry logic will retry
|
|
10
|
+
* on network errors, 429 responses and 5xx responses. The retry logic
|
|
11
|
+
* will not retry on 4xx responses.
|
|
12
|
+
*
|
|
13
|
+
* @param rawFetch The fetch function to wrap.
|
|
14
|
+
* @returns The wrapped fetch function.
|
|
15
|
+
*/
|
|
16
|
+
function withRetry(rawFetch) {
|
|
17
|
+
return async (url, opts = {}) => {
|
|
18
|
+
/**
|
|
19
|
+
* Timeouts by default will be [10, 60, 360, 2160, 12960]
|
|
20
|
+
* before randomization is added.
|
|
21
|
+
*/
|
|
22
|
+
const retryOpts = Object.assign({
|
|
23
|
+
minTimeout: 10,
|
|
24
|
+
retries: 5,
|
|
25
|
+
factor: 6,
|
|
26
|
+
maxRetryAfter: 20
|
|
27
|
+
}, opts.retry);
|
|
28
|
+
if (opts.onRetry) retryOpts.onRetry = (error, attempts) => {
|
|
29
|
+
opts.onRetry(error, opts);
|
|
30
|
+
if (opts.retry && opts.retry.onRetry) opts.retry.onRetry(error, attempts);
|
|
31
|
+
};
|
|
32
|
+
try {
|
|
33
|
+
return await (0, async_retry.default)(async (bail) => {
|
|
34
|
+
try {
|
|
35
|
+
if (opts.signal?.aborted) return bail(opts.signal.reason || /* @__PURE__ */ new Error("Request aborted"));
|
|
36
|
+
const response = await rawFetch(url, opts);
|
|
37
|
+
/**
|
|
38
|
+
* When the response is 429 we will try to parse the Retry-After
|
|
39
|
+
* header. If the header exists we will try to parse it and, if
|
|
40
|
+
* the wait time is higher than the maximum defined, we respond.
|
|
41
|
+
* Otherwise we wait for the time given in the header and throw
|
|
42
|
+
* to retry.
|
|
43
|
+
*/
|
|
44
|
+
if (response.status === 429) {
|
|
45
|
+
const retryAfter = parseInt(response.headers.get("retry-after") || "", 10);
|
|
46
|
+
if (retryAfter && !isNaN(retryAfter)) {
|
|
47
|
+
if (retryAfter > retryOpts.maxRetryAfter) return response;
|
|
48
|
+
await (0, node_timers_promises.setTimeout)(retryAfter * 1e3);
|
|
49
|
+
}
|
|
50
|
+
throw new require_api_error.APIError(response);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* If the response is a a retryable error, we throw in
|
|
54
|
+
* order to retry.
|
|
55
|
+
*/
|
|
56
|
+
if (response.status >= 500 && response.status < 600) throw new require_api_error.APIError(response);
|
|
57
|
+
return response;
|
|
58
|
+
} catch (error) {
|
|
59
|
+
/**
|
|
60
|
+
* If the request was aborted using the AbortController
|
|
61
|
+
* we bail from retrying throwing the original error.
|
|
62
|
+
*/
|
|
63
|
+
if (isAbortError(error)) return bail(error);
|
|
64
|
+
/**
|
|
65
|
+
* If the signal was aborted meanwhile we were
|
|
66
|
+
* waiting, we bail from retrying.
|
|
67
|
+
*/
|
|
68
|
+
if (opts.signal?.aborted) return bail(opts.signal.reason || /* @__PURE__ */ new Error("Request aborted"));
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}, retryOpts);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
/**
|
|
74
|
+
* The ResponseError is only intended for retries so in case we
|
|
75
|
+
* ran out of attempts we will respond with the last response
|
|
76
|
+
* we obtained.
|
|
77
|
+
*/
|
|
78
|
+
if (error instanceof require_api_error.APIError) return error.response;
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function isAbortError(error) {
|
|
84
|
+
return error !== void 0 && error !== null && error.name === "AbortError";
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.withRetry = withRetry;
|
|
89
|
+
//# sourceMappingURL=with-retry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-retry.cjs","names":["APIError"],"sources":["../../src/api-client/with-retry.ts"],"sourcesContent":["import type { Options as RetryOptions } from \"async-retry\";\nimport { APIError } from \"./api-error.js\";\nimport { setTimeout } from \"node:timers/promises\";\nimport retry from \"async-retry\";\n\nexport interface RequestOptions {\n onRetry?(error: any, options: RequestOptions): void;\n retry?: Partial<RetryOptions>;\n}\n\n/**\n * Wraps a fetch function with retry logic. The retry logic will retry\n * on network errors, 429 responses and 5xx responses. The retry logic\n * will not retry on 4xx responses.\n *\n * @param rawFetch The fetch function to wrap.\n * @returns The wrapped fetch function.\n */\nexport function withRetry<T extends RequestInit>(\n rawFetch: (url: URL | string, init?: T) => Promise<Response>,\n) {\n return async (\n url: URL | string,\n opts: T & RequestOptions = <T & RequestOptions>{},\n ) => {\n /**\n * Timeouts by default will be [10, 60, 360, 2160, 12960]\n * before randomization is added.\n */\n const retryOpts = Object.assign(\n {\n minTimeout: 10,\n retries: 5,\n factor: 6,\n maxRetryAfter: 20,\n },\n opts.retry,\n );\n\n if (opts.onRetry) {\n retryOpts.onRetry = (error, attempts) => {\n opts.onRetry!(error, opts);\n if (opts.retry && opts.retry.onRetry) {\n opts.retry.onRetry(error, attempts);\n }\n };\n }\n\n try {\n return (await retry(async (bail) => {\n try {\n if (opts.signal?.aborted) {\n return bail(opts.signal.reason || new Error(\"Request aborted\"));\n }\n const response = await rawFetch(url, opts);\n\n /**\n * When the response is 429 we will try to parse the Retry-After\n * header. If the header exists we will try to parse it and, if\n * the wait time is higher than the maximum defined, we respond.\n * Otherwise we wait for the time given in the header and throw\n * to retry.\n */\n if (response.status === 429) {\n const retryAfter = parseInt(\n response.headers.get(\"retry-after\") || \"\",\n 10,\n );\n\n if (retryAfter && !isNaN(retryAfter)) {\n if (retryAfter > retryOpts.maxRetryAfter) {\n return response;\n }\n\n await setTimeout(retryAfter * 1e3);\n }\n\n throw new APIError(response);\n }\n\n /**\n * If the response is a a retryable error, we throw in\n * order to retry.\n */\n if (response.status >= 500 && response.status < 600) {\n throw new APIError(response);\n }\n\n return response;\n } catch (error) {\n /**\n * If the request was aborted using the AbortController\n * we bail from retrying throwing the original error.\n */\n if (isAbortError(error)) {\n return bail(error);\n }\n\n /**\n * If the signal was aborted meanwhile we were\n * waiting, we bail from retrying.\n */\n if (opts.signal?.aborted) {\n return bail(opts.signal.reason || new Error(\"Request aborted\"));\n }\n\n throw error;\n }\n }, retryOpts)) as Response;\n } catch (error) {\n /**\n * The ResponseError is only intended for retries so in case we\n * ran out of attempts we will respond with the last response\n * we obtained.\n */\n if (error instanceof APIError) {\n return error.response;\n }\n\n throw error;\n }\n };\n}\n\nfunction isAbortError(error: unknown): error is Error {\n return (\n error !== undefined &&\n error !== null &&\n (error as Error).name === \"AbortError\"\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,SAAgB,UACd,UACA;AACA,QAAO,OACL,KACA,OAA+C,EAAE,KAC9C;;;;;EAKH,MAAM,YAAY,OAAO,OACvB;GACE,YAAY;GACZ,SAAS;GACT,QAAQ;GACR,eAAe;GAChB,EACD,KAAK,MACN;AAED,MAAI,KAAK,QACP,WAAU,WAAW,OAAO,aAAa;AACvC,QAAK,QAAS,OAAO,KAAK;AAC1B,OAAI,KAAK,SAAS,KAAK,MAAM,QAC3B,MAAK,MAAM,QAAQ,OAAO,SAAS;;AAKzC,MAAI;AACF,UAAQ,+BAAY,OAAO,SAAS;AAClC,QAAI;AACF,SAAI,KAAK,QAAQ,QACf,QAAO,KAAK,KAAK,OAAO,0BAAU,IAAI,MAAM,kBAAkB,CAAC;KAEjE,MAAM,WAAW,MAAM,SAAS,KAAK,KAAK;;;;;;;;AAS1C,SAAI,SAAS,WAAW,KAAK;MAC3B,MAAM,aAAa,SACjB,SAAS,QAAQ,IAAI,cAAc,IAAI,IACvC,GACD;AAED,UAAI,cAAc,CAAC,MAAM,WAAW,EAAE;AACpC,WAAI,aAAa,UAAU,cACzB,QAAO;AAGT,kDAAiB,aAAa,IAAI;;AAGpC,YAAM,IAAIA,2BAAS,SAAS;;;;;;AAO9B,SAAI,SAAS,UAAU,OAAO,SAAS,SAAS,IAC9C,OAAM,IAAIA,2BAAS,SAAS;AAG9B,YAAO;aACA,OAAO;;;;;AAKd,SAAI,aAAa,MAAM,CACrB,QAAO,KAAK,MAAM;;;;;AAOpB,SAAI,KAAK,QAAQ,QACf,QAAO,KAAK,KAAK,OAAO,0BAAU,IAAI,MAAM,kBAAkB,CAAC;AAGjE,WAAM;;MAEP,UAAU;WACN,OAAO;;;;;;AAMd,OAAI,iBAAiBA,2BACnB,QAAO,MAAM;AAGf,SAAM;;;;AAKZ,SAAS,aAAa,OAAgC;AACpD,QACE,UAAU,UACV,UAAU,QACT,MAAgB,SAAS"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Options } from "async-retry";
|
|
2
|
+
|
|
3
|
+
//#region src/api-client/with-retry.d.ts
|
|
4
|
+
interface RequestOptions {
|
|
5
|
+
onRetry?(error: any, options: RequestOptions): void;
|
|
6
|
+
retry?: Partial<Options>;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { RequestOptions };
|
|
10
|
+
//# sourceMappingURL=with-retry.d.cts.map
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Options } from "async-retry";
|
|
2
|
+
|
|
3
|
+
//#region src/api-client/with-retry.d.ts
|
|
4
|
+
interface RequestOptions {
|
|
5
|
+
onRetry?(error: any, options: RequestOptions): void;
|
|
6
|
+
retry?: Partial<Options>;
|
|
5
7
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* will not retry on 4xx responses.
|
|
10
|
-
*
|
|
11
|
-
* @param rawFetch The fetch function to wrap.
|
|
12
|
-
* @returns The wrapped fetch function.
|
|
13
|
-
*/
|
|
14
|
-
export declare function withRetry<T extends RequestInit>(rawFetch: (url: URL | string, init?: T) => Promise<Response>): (url: URL | string, opts?: T & RequestOptions) => Promise<Response>;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { RequestOptions };
|
|
10
|
+
//# sourceMappingURL=with-retry.d.ts.map
|