leduo-patrol 2.2.1 → 2.2.4
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 +11 -2
- package/dist/server/__tests__/acp-session.test.js +115 -0
- package/dist/server/__tests__/activity-monitor.test.js +13 -1
- package/dist/server/__tests__/session-manager.test.js +380 -1
- package/dist/server/acp-session.js +476 -0
- package/dist/server/activity-monitor.js +22 -7
- package/dist/server/index.js +57 -1
- package/dist/server/session-manager.js +1301 -121
- package/dist/web/assets/index-Bll9nc_X.js +21 -0
- package/dist/web/assets/index-y1qgSOLv.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +3 -1
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/LICENSE +191 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/README.md +53 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.d.ts +823 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.js +965 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.test.d.ts +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.test.js +839 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/acp.test.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/agent.d.ts +2 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/agent.js +225 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/agent.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/client.d.ts +2 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/client.js +130 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/examples/client.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.d.ts +35 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.js +5 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/index.d.ts +27 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/index.js +28 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/index.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.d.ts +2870 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.js +3 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.d.ts +5333 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js +1554 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/stream.d.ts +24 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/stream.js +64 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +1 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/package.json +66 -0
- package/vendor/claude-code-acp/node_modules/@agentclientprotocol/sdk/schema/schema.json +4125 -0
- package/vendor/claude-code-acp/node_modules/@types/node/LICENSE +21 -0
- package/vendor/claude-code-acp/node_modules/@types/node/README.md +15 -0
- package/vendor/claude-code-acp/node_modules/@types/node/assert/strict.d.ts +105 -0
- package/vendor/claude-code-acp/node_modules/@types/node/assert.d.ts +955 -0
- package/vendor/claude-code-acp/node_modules/@types/node/async_hooks.d.ts +623 -0
- package/vendor/claude-code-acp/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/vendor/claude-code-acp/node_modules/@types/node/buffer.d.ts +1810 -0
- package/vendor/claude-code-acp/node_modules/@types/node/child_process.d.ts +1428 -0
- package/vendor/claude-code-acp/node_modules/@types/node/cluster.d.ts +486 -0
- package/vendor/claude-code-acp/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/vendor/claude-code-acp/node_modules/@types/node/console.d.ts +151 -0
- package/vendor/claude-code-acp/node_modules/@types/node/constants.d.ts +20 -0
- package/vendor/claude-code-acp/node_modules/@types/node/crypto.d.ts +4065 -0
- package/vendor/claude-code-acp/node_modules/@types/node/dgram.d.ts +564 -0
- package/vendor/claude-code-acp/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- package/vendor/claude-code-acp/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/vendor/claude-code-acp/node_modules/@types/node/dns.d.ts +922 -0
- package/vendor/claude-code-acp/node_modules/@types/node/domain.d.ts +166 -0
- package/vendor/claude-code-acp/node_modules/@types/node/events.d.ts +1054 -0
- package/vendor/claude-code-acp/node_modules/@types/node/fs/promises.d.ts +1329 -0
- package/vendor/claude-code-acp/node_modules/@types/node/fs.d.ts +4676 -0
- package/vendor/claude-code-acp/node_modules/@types/node/globals.d.ts +150 -0
- package/vendor/claude-code-acp/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/vendor/claude-code-acp/node_modules/@types/node/http.d.ts +2167 -0
- package/vendor/claude-code-acp/node_modules/@types/node/http2.d.ts +2480 -0
- package/vendor/claude-code-acp/node_modules/@types/node/https.d.ts +405 -0
- package/vendor/claude-code-acp/node_modules/@types/node/index.d.ts +115 -0
- package/vendor/claude-code-acp/node_modules/@types/node/inspector/promises.d.ts +41 -0
- package/vendor/claude-code-acp/node_modules/@types/node/inspector.d.ts +224 -0
- package/vendor/claude-code-acp/node_modules/@types/node/inspector.generated.d.ts +4226 -0
- package/vendor/claude-code-acp/node_modules/@types/node/module.d.ts +819 -0
- package/vendor/claude-code-acp/node_modules/@types/node/net.d.ts +933 -0
- package/vendor/claude-code-acp/node_modules/@types/node/os.d.ts +507 -0
- package/vendor/claude-code-acp/node_modules/@types/node/package.json +155 -0
- package/vendor/claude-code-acp/node_modules/@types/node/path/posix.d.ts +8 -0
- package/vendor/claude-code-acp/node_modules/@types/node/path/win32.d.ts +8 -0
- package/vendor/claude-code-acp/node_modules/@types/node/path.d.ts +187 -0
- package/vendor/claude-code-acp/node_modules/@types/node/perf_hooks.d.ts +643 -0
- package/vendor/claude-code-acp/node_modules/@types/node/process.d.ts +2161 -0
- package/vendor/claude-code-acp/node_modules/@types/node/punycode.d.ts +117 -0
- package/vendor/claude-code-acp/node_modules/@types/node/querystring.d.ts +152 -0
- package/vendor/claude-code-acp/node_modules/@types/node/quic.d.ts +910 -0
- package/vendor/claude-code-acp/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/vendor/claude-code-acp/node_modules/@types/node/readline.d.ts +541 -0
- package/vendor/claude-code-acp/node_modules/@types/node/repl.d.ts +415 -0
- package/vendor/claude-code-acp/node_modules/@types/node/sea.d.ts +162 -0
- package/vendor/claude-code-acp/node_modules/@types/node/sqlite.d.ts +955 -0
- package/vendor/claude-code-acp/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/vendor/claude-code-acp/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/vendor/claude-code-acp/node_modules/@types/node/stream/web.d.ts +296 -0
- package/vendor/claude-code-acp/node_modules/@types/node/stream.d.ts +1760 -0
- package/vendor/claude-code-acp/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/vendor/claude-code-acp/node_modules/@types/node/test/reporters.d.ts +96 -0
- package/vendor/claude-code-acp/node_modules/@types/node/test.d.ts +2240 -0
- package/vendor/claude-code-acp/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/vendor/claude-code-acp/node_modules/@types/node/timers.d.ts +159 -0
- package/vendor/claude-code-acp/node_modules/@types/node/tls.d.ts +1198 -0
- package/vendor/claude-code-acp/node_modules/@types/node/trace_events.d.ts +197 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/vendor/claude-code-acp/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- package/vendor/claude-code-acp/node_modules/@types/node/tty.d.ts +250 -0
- package/vendor/claude-code-acp/node_modules/@types/node/url.d.ts +519 -0
- package/vendor/claude-code-acp/node_modules/@types/node/util/types.d.ts +558 -0
- package/vendor/claude-code-acp/node_modules/@types/node/util.d.ts +1662 -0
- package/vendor/claude-code-acp/node_modules/@types/node/v8.d.ts +983 -0
- package/vendor/claude-code-acp/node_modules/@types/node/vm.d.ts +1208 -0
- package/vendor/claude-code-acp/node_modules/@types/node/wasi.d.ts +202 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/vendor/claude-code-acp/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/vendor/claude-code-acp/node_modules/@types/node/worker_threads.d.ts +717 -0
- package/vendor/claude-code-acp/node_modules/@types/node/zlib.d.ts +618 -0
- package/vendor/claude-code-acp/node_modules/undici-types/LICENSE +21 -0
- package/vendor/claude-code-acp/node_modules/undici-types/README.md +6 -0
- package/vendor/claude-code-acp/node_modules/undici-types/agent.d.ts +32 -0
- package/vendor/claude-code-acp/node_modules/undici-types/api.d.ts +43 -0
- package/vendor/claude-code-acp/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/vendor/claude-code-acp/node_modules/undici-types/cache-interceptor.d.ts +172 -0
- package/vendor/claude-code-acp/node_modules/undici-types/cache.d.ts +36 -0
- package/vendor/claude-code-acp/node_modules/undici-types/client-stats.d.ts +15 -0
- package/vendor/claude-code-acp/node_modules/undici-types/client.d.ts +108 -0
- package/vendor/claude-code-acp/node_modules/undici-types/connector.d.ts +34 -0
- package/vendor/claude-code-acp/node_modules/undici-types/content-type.d.ts +21 -0
- package/vendor/claude-code-acp/node_modules/undici-types/cookies.d.ts +30 -0
- package/vendor/claude-code-acp/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/vendor/claude-code-acp/node_modules/undici-types/dispatcher.d.ts +276 -0
- package/vendor/claude-code-acp/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/vendor/claude-code-acp/node_modules/undici-types/errors.d.ts +161 -0
- package/vendor/claude-code-acp/node_modules/undici-types/eventsource.d.ts +66 -0
- package/vendor/claude-code-acp/node_modules/undici-types/fetch.d.ts +211 -0
- package/vendor/claude-code-acp/node_modules/undici-types/formdata.d.ts +108 -0
- package/vendor/claude-code-acp/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/vendor/claude-code-acp/node_modules/undici-types/global-origin.d.ts +7 -0
- package/vendor/claude-code-acp/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/vendor/claude-code-acp/node_modules/undici-types/handlers.d.ts +15 -0
- package/vendor/claude-code-acp/node_modules/undici-types/header.d.ts +160 -0
- package/vendor/claude-code-acp/node_modules/undici-types/index.d.ts +80 -0
- package/vendor/claude-code-acp/node_modules/undici-types/interceptors.d.ts +39 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-client.d.ts +27 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/vendor/claude-code-acp/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/vendor/claude-code-acp/node_modules/undici-types/package.json +55 -0
- package/vendor/claude-code-acp/node_modules/undici-types/patch.d.ts +29 -0
- package/vendor/claude-code-acp/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/vendor/claude-code-acp/node_modules/undici-types/pool.d.ts +41 -0
- package/vendor/claude-code-acp/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/vendor/claude-code-acp/node_modules/undici-types/readable.d.ts +68 -0
- package/vendor/claude-code-acp/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/vendor/claude-code-acp/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/vendor/claude-code-acp/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/vendor/claude-code-acp/node_modules/undici-types/util.d.ts +18 -0
- package/vendor/claude-code-acp/node_modules/undici-types/utility.d.ts +7 -0
- package/vendor/claude-code-acp/node_modules/undici-types/webidl.d.ts +341 -0
- package/vendor/claude-code-acp/node_modules/undici-types/websocket.d.ts +186 -0
- package/dist/web/assets/index-B5Dh2E8j.css +0 -1
- package/dist/web/assets/index-xPPPaEde.js +0 -13
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import Dispatcher from './dispatcher'
|
|
2
|
+
|
|
3
|
+
export default RetryHandler
|
|
4
|
+
|
|
5
|
+
declare class RetryHandler implements Dispatcher.DispatchHandler {
|
|
6
|
+
constructor (
|
|
7
|
+
options: Dispatcher.DispatchOptions & {
|
|
8
|
+
retryOptions?: RetryHandler.RetryOptions;
|
|
9
|
+
},
|
|
10
|
+
retryHandlers: RetryHandler.RetryHandlers
|
|
11
|
+
)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare namespace RetryHandler {
|
|
15
|
+
export type RetryState = { counter: number; }
|
|
16
|
+
|
|
17
|
+
export type RetryContext = {
|
|
18
|
+
state: RetryState;
|
|
19
|
+
opts: Dispatcher.DispatchOptions & {
|
|
20
|
+
retryOptions?: RetryHandler.RetryOptions;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type OnRetryCallback = (result?: Error | null) => void
|
|
25
|
+
|
|
26
|
+
export type RetryCallback = (
|
|
27
|
+
err: Error,
|
|
28
|
+
context: {
|
|
29
|
+
state: RetryState;
|
|
30
|
+
opts: Dispatcher.DispatchOptions & {
|
|
31
|
+
retryOptions?: RetryHandler.RetryOptions;
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
callback: OnRetryCallback
|
|
35
|
+
) => void
|
|
36
|
+
|
|
37
|
+
export interface RetryOptions {
|
|
38
|
+
/**
|
|
39
|
+
* If true, the retry handler will throw an error if the request fails,
|
|
40
|
+
* this will prevent the folling handlers from being called, and will destroy the socket.
|
|
41
|
+
*
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
* @memberof RetryOptions
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
46
|
+
throwOnError?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Callback to be invoked on every retry iteration.
|
|
49
|
+
* It receives the error, current state of the retry object and the options object
|
|
50
|
+
* passed when instantiating the retry handler.
|
|
51
|
+
*
|
|
52
|
+
* @type {RetryCallback}
|
|
53
|
+
* @memberof RetryOptions
|
|
54
|
+
*/
|
|
55
|
+
retry?: RetryCallback;
|
|
56
|
+
/**
|
|
57
|
+
* Maximum number of retries to allow.
|
|
58
|
+
*
|
|
59
|
+
* @type {number}
|
|
60
|
+
* @memberof RetryOptions
|
|
61
|
+
* @default 5
|
|
62
|
+
*/
|
|
63
|
+
maxRetries?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Max number of milliseconds allow between retries
|
|
66
|
+
*
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @memberof RetryOptions
|
|
69
|
+
* @default 30000
|
|
70
|
+
*/
|
|
71
|
+
maxTimeout?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Initial number of milliseconds to wait before retrying for the first time.
|
|
74
|
+
*
|
|
75
|
+
* @type {number}
|
|
76
|
+
* @memberof RetryOptions
|
|
77
|
+
* @default 500
|
|
78
|
+
*/
|
|
79
|
+
minTimeout?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Factior to multiply the timeout factor between retries.
|
|
82
|
+
*
|
|
83
|
+
* @type {number}
|
|
84
|
+
* @memberof RetryOptions
|
|
85
|
+
* @default 2
|
|
86
|
+
*/
|
|
87
|
+
timeoutFactor?: number;
|
|
88
|
+
/**
|
|
89
|
+
* It enables to automatically infer timeout between retries based on the `Retry-After` header.
|
|
90
|
+
*
|
|
91
|
+
* @type {boolean}
|
|
92
|
+
* @memberof RetryOptions
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
retryAfter?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* HTTP methods to retry.
|
|
98
|
+
*
|
|
99
|
+
* @type {Dispatcher.HttpMethod[]}
|
|
100
|
+
* @memberof RetryOptions
|
|
101
|
+
* @default ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
|
|
102
|
+
*/
|
|
103
|
+
methods?: Dispatcher.HttpMethod[];
|
|
104
|
+
/**
|
|
105
|
+
* Error codes to be retried. e.g. `ECONNRESET`, `ENOTFOUND`, `ETIMEDOUT`, `ECONNREFUSED`, etc.
|
|
106
|
+
*
|
|
107
|
+
* @type {string[]}
|
|
108
|
+
* @default ['ECONNRESET','ECONNREFUSED','ENOTFOUND','ENETDOWN','ENETUNREACH','EHOSTDOWN','EHOSTUNREACH','EPIPE']
|
|
109
|
+
*/
|
|
110
|
+
errorCodes?: string[];
|
|
111
|
+
/**
|
|
112
|
+
* HTTP status codes to be retried.
|
|
113
|
+
*
|
|
114
|
+
* @type {number[]}
|
|
115
|
+
* @memberof RetryOptions
|
|
116
|
+
* @default [500, 502, 503, 504, 429],
|
|
117
|
+
*/
|
|
118
|
+
statusCodes?: number[];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface RetryHandlers {
|
|
122
|
+
dispatch: Dispatcher['dispatch'];
|
|
123
|
+
handler: Dispatcher.DispatchHandler;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import MockAgent from './mock-agent'
|
|
2
|
+
|
|
3
|
+
declare class SnapshotRecorder {
|
|
4
|
+
constructor (options?: SnapshotRecorder.Options)
|
|
5
|
+
|
|
6
|
+
record (requestOpts: any, response: any): Promise<void>
|
|
7
|
+
findSnapshot (requestOpts: any): SnapshotRecorder.Snapshot | undefined
|
|
8
|
+
loadSnapshots (filePath?: string): Promise<void>
|
|
9
|
+
saveSnapshots (filePath?: string): Promise<void>
|
|
10
|
+
clear (): void
|
|
11
|
+
getSnapshots (): SnapshotRecorder.Snapshot[]
|
|
12
|
+
size (): number
|
|
13
|
+
resetCallCounts (): void
|
|
14
|
+
deleteSnapshot (requestOpts: any): boolean
|
|
15
|
+
getSnapshotInfo (requestOpts: any): SnapshotRecorder.SnapshotInfo | null
|
|
16
|
+
replaceSnapshots (snapshotData: SnapshotRecorder.SnapshotData[]): void
|
|
17
|
+
destroy (): void
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare namespace SnapshotRecorder {
|
|
21
|
+
type SnapshotRecorderMode = 'record' | 'playback' | 'update'
|
|
22
|
+
|
|
23
|
+
export interface Options {
|
|
24
|
+
snapshotPath?: string
|
|
25
|
+
mode?: SnapshotRecorderMode
|
|
26
|
+
maxSnapshots?: number
|
|
27
|
+
autoFlush?: boolean
|
|
28
|
+
flushInterval?: number
|
|
29
|
+
matchHeaders?: string[]
|
|
30
|
+
ignoreHeaders?: string[]
|
|
31
|
+
excludeHeaders?: string[]
|
|
32
|
+
matchBody?: boolean
|
|
33
|
+
matchQuery?: boolean
|
|
34
|
+
caseSensitive?: boolean
|
|
35
|
+
shouldRecord?: (requestOpts: any) => boolean
|
|
36
|
+
shouldPlayback?: (requestOpts: any) => boolean
|
|
37
|
+
excludeUrls?: (string | RegExp)[]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface Snapshot {
|
|
41
|
+
request: {
|
|
42
|
+
method: string
|
|
43
|
+
url: string
|
|
44
|
+
headers: Record<string, string>
|
|
45
|
+
body?: string
|
|
46
|
+
}
|
|
47
|
+
responses: {
|
|
48
|
+
statusCode: number
|
|
49
|
+
headers: Record<string, string>
|
|
50
|
+
body: string
|
|
51
|
+
trailers: Record<string, string>
|
|
52
|
+
}[]
|
|
53
|
+
callCount: number
|
|
54
|
+
timestamp: string
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface SnapshotInfo {
|
|
58
|
+
hash: string
|
|
59
|
+
request: {
|
|
60
|
+
method: string
|
|
61
|
+
url: string
|
|
62
|
+
headers: Record<string, string>
|
|
63
|
+
body?: string
|
|
64
|
+
}
|
|
65
|
+
responseCount: number
|
|
66
|
+
callCount: number
|
|
67
|
+
timestamp: string
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface SnapshotData {
|
|
71
|
+
hash: string
|
|
72
|
+
snapshot: Snapshot
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare class SnapshotAgent extends MockAgent {
|
|
77
|
+
constructor (options?: SnapshotAgent.Options)
|
|
78
|
+
|
|
79
|
+
saveSnapshots (filePath?: string): Promise<void>
|
|
80
|
+
loadSnapshots (filePath?: string): Promise<void>
|
|
81
|
+
getRecorder (): SnapshotRecorder
|
|
82
|
+
getMode (): SnapshotRecorder.SnapshotRecorderMode
|
|
83
|
+
clearSnapshots (): void
|
|
84
|
+
resetCallCounts (): void
|
|
85
|
+
deleteSnapshot (requestOpts: any): boolean
|
|
86
|
+
getSnapshotInfo (requestOpts: any): SnapshotRecorder.SnapshotInfo | null
|
|
87
|
+
replaceSnapshots (snapshotData: SnapshotRecorder.SnapshotData[]): void
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare namespace SnapshotAgent {
|
|
91
|
+
export interface Options extends MockAgent.Options {
|
|
92
|
+
mode?: SnapshotRecorder.SnapshotRecorderMode
|
|
93
|
+
snapshotPath?: string
|
|
94
|
+
maxSnapshots?: number
|
|
95
|
+
autoFlush?: boolean
|
|
96
|
+
flushInterval?: number
|
|
97
|
+
matchHeaders?: string[]
|
|
98
|
+
ignoreHeaders?: string[]
|
|
99
|
+
excludeHeaders?: string[]
|
|
100
|
+
matchBody?: boolean
|
|
101
|
+
matchQuery?: boolean
|
|
102
|
+
caseSensitive?: boolean
|
|
103
|
+
shouldRecord?: (requestOpts: any) => boolean
|
|
104
|
+
shouldPlayback?: (requestOpts: any) => boolean
|
|
105
|
+
excludeUrls?: (string | RegExp)[]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { SnapshotAgent, SnapshotRecorder }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export namespace util {
|
|
2
|
+
/**
|
|
3
|
+
* Retrieves a header name and returns its lowercase value.
|
|
4
|
+
* @param value Header name
|
|
5
|
+
*/
|
|
6
|
+
export function headerNameToString (value: string | Buffer): string
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Receives a header object and returns the parsed value.
|
|
10
|
+
* @param headers Header object
|
|
11
|
+
* @param obj Object to specify a proxy object. Used to assign parsed values.
|
|
12
|
+
* @returns If `obj` is specified, it is equivalent to `obj`.
|
|
13
|
+
*/
|
|
14
|
+
export function parseHeaders (
|
|
15
|
+
headers: (Buffer | string | (Buffer | string)[])[],
|
|
16
|
+
obj?: Record<string, string | string[]>
|
|
17
|
+
): Record<string, string | string[]>
|
|
18
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
// These types are not exported, and are only used internally
|
|
2
|
+
import * as undici from './index'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Take in an unknown value and return one that is of type T
|
|
6
|
+
*/
|
|
7
|
+
type Converter<T> = (object: unknown) => T
|
|
8
|
+
|
|
9
|
+
type SequenceConverter<T> = (object: unknown, iterable?: IterableIterator<T>) => T[]
|
|
10
|
+
|
|
11
|
+
type RecordConverter<K extends string, V> = (object: unknown) => Record<K, V>
|
|
12
|
+
|
|
13
|
+
interface WebidlErrors {
|
|
14
|
+
/**
|
|
15
|
+
* @description Instantiate an error
|
|
16
|
+
*/
|
|
17
|
+
exception (opts: { header: string, message: string }): TypeError
|
|
18
|
+
/**
|
|
19
|
+
* @description Instantiate an error when conversion from one type to another has failed
|
|
20
|
+
*/
|
|
21
|
+
conversionFailed (opts: {
|
|
22
|
+
prefix: string
|
|
23
|
+
argument: string
|
|
24
|
+
types: string[]
|
|
25
|
+
}): TypeError
|
|
26
|
+
/**
|
|
27
|
+
* @description Throw an error when an invalid argument is provided
|
|
28
|
+
*/
|
|
29
|
+
invalidArgument (opts: {
|
|
30
|
+
prefix: string
|
|
31
|
+
value: string
|
|
32
|
+
type: string
|
|
33
|
+
}): TypeError
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface WebIDLTypes {
|
|
37
|
+
UNDEFINED: 1,
|
|
38
|
+
BOOLEAN: 2,
|
|
39
|
+
STRING: 3,
|
|
40
|
+
SYMBOL: 4,
|
|
41
|
+
NUMBER: 5,
|
|
42
|
+
BIGINT: 6,
|
|
43
|
+
NULL: 7
|
|
44
|
+
OBJECT: 8
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
interface WebidlUtil {
|
|
48
|
+
/**
|
|
49
|
+
* @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
|
|
50
|
+
*/
|
|
51
|
+
Type (object: unknown): WebIDLTypes[keyof WebIDLTypes]
|
|
52
|
+
|
|
53
|
+
TypeValueToString (o: unknown):
|
|
54
|
+
| 'Undefined'
|
|
55
|
+
| 'Boolean'
|
|
56
|
+
| 'String'
|
|
57
|
+
| 'Symbol'
|
|
58
|
+
| 'Number'
|
|
59
|
+
| 'BigInt'
|
|
60
|
+
| 'Null'
|
|
61
|
+
| 'Object'
|
|
62
|
+
|
|
63
|
+
Types: WebIDLTypes
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
|
|
67
|
+
*/
|
|
68
|
+
ConvertToInt (
|
|
69
|
+
V: unknown,
|
|
70
|
+
bitLength: number,
|
|
71
|
+
signedness: 'signed' | 'unsigned',
|
|
72
|
+
flags?: number
|
|
73
|
+
): number
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @see https://webidl.spec.whatwg.org/#abstract-opdef-integerpart
|
|
77
|
+
*/
|
|
78
|
+
IntegerPart (N: number): number
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Stringifies {@param V}
|
|
82
|
+
*/
|
|
83
|
+
Stringify (V: any): string
|
|
84
|
+
|
|
85
|
+
MakeTypeAssertion <I>(I: I): (arg: any) => arg is I
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Mark a value as uncloneable for Node.js.
|
|
89
|
+
* This is only effective in some newer Node.js versions.
|
|
90
|
+
*/
|
|
91
|
+
markAsUncloneable (V: any): void
|
|
92
|
+
|
|
93
|
+
IsResizableArrayBuffer (V: ArrayBufferLike): boolean
|
|
94
|
+
|
|
95
|
+
HasFlag (flag: number, attributes: number): boolean
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface WebidlConverters {
|
|
99
|
+
/**
|
|
100
|
+
* @see https://webidl.spec.whatwg.org/#es-DOMString
|
|
101
|
+
*/
|
|
102
|
+
DOMString (V: unknown, prefix: string, argument: string, flags?: number): string
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @see https://webidl.spec.whatwg.org/#es-ByteString
|
|
106
|
+
*/
|
|
107
|
+
ByteString (V: unknown, prefix: string, argument: string): string
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @see https://webidl.spec.whatwg.org/#es-USVString
|
|
111
|
+
*/
|
|
112
|
+
USVString (V: unknown): string
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @see https://webidl.spec.whatwg.org/#es-boolean
|
|
116
|
+
*/
|
|
117
|
+
boolean (V: unknown): boolean
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @see https://webidl.spec.whatwg.org/#es-any
|
|
121
|
+
*/
|
|
122
|
+
any <Value>(V: Value): Value
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @see https://webidl.spec.whatwg.org/#es-long-long
|
|
126
|
+
*/
|
|
127
|
+
['long long'] (V: unknown): number
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-long-long
|
|
131
|
+
*/
|
|
132
|
+
['unsigned long long'] (V: unknown): number
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-long
|
|
136
|
+
*/
|
|
137
|
+
['unsigned long'] (V: unknown): number
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-short
|
|
141
|
+
*/
|
|
142
|
+
['unsigned short'] (V: unknown, flags?: number): number
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
|
|
146
|
+
*/
|
|
147
|
+
ArrayBuffer (
|
|
148
|
+
V: unknown,
|
|
149
|
+
prefix: string,
|
|
150
|
+
argument: string,
|
|
151
|
+
options?: { allowResizable: boolean }
|
|
152
|
+
): ArrayBuffer
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @see https://webidl.spec.whatwg.org/#idl-SharedArrayBuffer
|
|
156
|
+
*/
|
|
157
|
+
SharedArrayBuffer (
|
|
158
|
+
V: unknown,
|
|
159
|
+
prefix: string,
|
|
160
|
+
argument: string,
|
|
161
|
+
options?: { allowResizable: boolean }
|
|
162
|
+
): SharedArrayBuffer
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @see https://webidl.spec.whatwg.org/#es-buffer-source-types
|
|
166
|
+
*/
|
|
167
|
+
TypedArray (
|
|
168
|
+
V: unknown,
|
|
169
|
+
T: new () => NodeJS.TypedArray,
|
|
170
|
+
prefix: string,
|
|
171
|
+
argument: string,
|
|
172
|
+
flags?: number
|
|
173
|
+
): NodeJS.TypedArray
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @see https://webidl.spec.whatwg.org/#es-buffer-source-types
|
|
177
|
+
*/
|
|
178
|
+
DataView (
|
|
179
|
+
V: unknown,
|
|
180
|
+
prefix: string,
|
|
181
|
+
argument: string,
|
|
182
|
+
flags?: number
|
|
183
|
+
): DataView
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @see https://webidl.spec.whatwg.org/#es-buffer-source-types
|
|
187
|
+
*/
|
|
188
|
+
ArrayBufferView (
|
|
189
|
+
V: unknown,
|
|
190
|
+
prefix: string,
|
|
191
|
+
argument: string,
|
|
192
|
+
flags?: number
|
|
193
|
+
): NodeJS.ArrayBufferView
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @see https://webidl.spec.whatwg.org/#BufferSource
|
|
197
|
+
*/
|
|
198
|
+
BufferSource (
|
|
199
|
+
V: unknown,
|
|
200
|
+
prefix: string,
|
|
201
|
+
argument: string,
|
|
202
|
+
flags?: number
|
|
203
|
+
): ArrayBuffer | NodeJS.ArrayBufferView
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @see https://webidl.spec.whatwg.org/#AllowSharedBufferSource
|
|
207
|
+
*/
|
|
208
|
+
AllowSharedBufferSource (
|
|
209
|
+
V: unknown,
|
|
210
|
+
prefix: string,
|
|
211
|
+
argument: string,
|
|
212
|
+
flags?: number
|
|
213
|
+
): ArrayBuffer | SharedArrayBuffer | NodeJS.ArrayBufferView
|
|
214
|
+
|
|
215
|
+
['sequence<ByteString>']: SequenceConverter<string>
|
|
216
|
+
|
|
217
|
+
['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
|
|
218
|
+
|
|
219
|
+
['record<ByteString, ByteString>']: RecordConverter<string, string>
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @see https://fetch.spec.whatwg.org/#requestinfo
|
|
223
|
+
*/
|
|
224
|
+
RequestInfo (V: unknown): undici.Request | string
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @see https://fetch.spec.whatwg.org/#requestinit
|
|
228
|
+
*/
|
|
229
|
+
RequestInit (V: unknown): undici.RequestInit
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* @see https://html.spec.whatwg.org/multipage/webappapis.html#eventhandlernonnull
|
|
233
|
+
*/
|
|
234
|
+
EventHandlerNonNull (V: unknown): Function | null
|
|
235
|
+
|
|
236
|
+
WebSocketStreamWrite (V: unknown): ArrayBuffer | NodeJS.TypedArray | string
|
|
237
|
+
|
|
238
|
+
[Key: string]: (...args: any[]) => unknown
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
type WebidlIsFunction<T> = (arg: any) => arg is T
|
|
242
|
+
|
|
243
|
+
interface WebidlIs {
|
|
244
|
+
Request: WebidlIsFunction<undici.Request>
|
|
245
|
+
Response: WebidlIsFunction<undici.Response>
|
|
246
|
+
ReadableStream: WebidlIsFunction<ReadableStream>
|
|
247
|
+
Blob: WebidlIsFunction<Blob>
|
|
248
|
+
URLSearchParams: WebidlIsFunction<URLSearchParams>
|
|
249
|
+
File: WebidlIsFunction<File>
|
|
250
|
+
FormData: WebidlIsFunction<undici.FormData>
|
|
251
|
+
URL: WebidlIsFunction<URL>
|
|
252
|
+
WebSocketError: WebidlIsFunction<undici.WebSocketError>
|
|
253
|
+
AbortSignal: WebidlIsFunction<AbortSignal>
|
|
254
|
+
MessagePort: WebidlIsFunction<MessagePort>
|
|
255
|
+
USVString: WebidlIsFunction<string>
|
|
256
|
+
/**
|
|
257
|
+
* @see https://webidl.spec.whatwg.org/#BufferSource
|
|
258
|
+
*/
|
|
259
|
+
BufferSource: WebidlIsFunction<ArrayBuffer | NodeJS.TypedArray>
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export interface Webidl {
|
|
263
|
+
errors: WebidlErrors
|
|
264
|
+
util: WebidlUtil
|
|
265
|
+
converters: WebidlConverters
|
|
266
|
+
is: WebidlIs
|
|
267
|
+
attributes: WebIDLExtendedAttributes
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* @description Performs a brand-check on {@param V} to ensure it is a
|
|
271
|
+
* {@param cls} object.
|
|
272
|
+
*/
|
|
273
|
+
brandCheck <Interface extends new () => unknown>(V: unknown, cls: Interface): asserts V is Interface
|
|
274
|
+
|
|
275
|
+
brandCheckMultiple <Interfaces extends (new () => unknown)[]> (list: Interfaces): (V: any) => asserts V is Interfaces[number]
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @see https://webidl.spec.whatwg.org/#es-sequence
|
|
279
|
+
* @description Convert a value, V, to a WebIDL sequence type.
|
|
280
|
+
*/
|
|
281
|
+
sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
|
|
282
|
+
|
|
283
|
+
illegalConstructor (): never
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* @see https://webidl.spec.whatwg.org/#es-to-record
|
|
287
|
+
* @description Convert a value, V, to a WebIDL record type.
|
|
288
|
+
*/
|
|
289
|
+
recordConverter <K extends string, V>(
|
|
290
|
+
keyConverter: Converter<K>,
|
|
291
|
+
valueConverter: Converter<V>
|
|
292
|
+
): RecordConverter<K, V>
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
|
|
296
|
+
* interfaces are allowed.
|
|
297
|
+
*/
|
|
298
|
+
interfaceConverter <Interface>(typeCheck: WebidlIsFunction<Interface>, name: string): (
|
|
299
|
+
V: unknown,
|
|
300
|
+
prefix: string,
|
|
301
|
+
argument: string
|
|
302
|
+
) => asserts V is Interface
|
|
303
|
+
|
|
304
|
+
// TODO(@KhafraDev): a type could likely be implemented that can infer the return type
|
|
305
|
+
// from the converters given?
|
|
306
|
+
/**
|
|
307
|
+
* Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
|
|
308
|
+
* allowed, values allowed, optional and required keys. Auto converts the value to
|
|
309
|
+
* a type given a converter.
|
|
310
|
+
*/
|
|
311
|
+
dictionaryConverter (converters: {
|
|
312
|
+
key: string,
|
|
313
|
+
defaultValue?: () => unknown,
|
|
314
|
+
required?: boolean,
|
|
315
|
+
converter: (...args: unknown[]) => unknown,
|
|
316
|
+
allowedValues?: unknown[]
|
|
317
|
+
}[]): (V: unknown) => Record<string, unknown>
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* @see https://webidl.spec.whatwg.org/#idl-nullable-type
|
|
321
|
+
* @description allows a type, V, to be null
|
|
322
|
+
*/
|
|
323
|
+
nullableConverter <T>(
|
|
324
|
+
converter: Converter<T>
|
|
325
|
+
): (V: unknown) => ReturnType<typeof converter> | null
|
|
326
|
+
|
|
327
|
+
argumentLengthCheck (args: { length: number }, min: number, context: string): void
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
interface WebIDLExtendedAttributes {
|
|
331
|
+
/** https://webidl.spec.whatwg.org/#Clamp */
|
|
332
|
+
Clamp: number
|
|
333
|
+
/** https://webidl.spec.whatwg.org/#EnforceRange */
|
|
334
|
+
EnforceRange: number
|
|
335
|
+
/** https://webidl.spec.whatwg.org/#AllowShared */
|
|
336
|
+
AllowShared: number
|
|
337
|
+
/** https://webidl.spec.whatwg.org/#AllowResizable */
|
|
338
|
+
AllowResizable: number
|
|
339
|
+
/** https://webidl.spec.whatwg.org/#LegacyNullToEmptyString */
|
|
340
|
+
LegacyNullToEmptyString: number
|
|
341
|
+
}
|