deepv-code 1.0.182

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 (223) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +3 -0
  3. package/bundle/assets/help/README.md +113 -0
  4. package/bundle/assets/help/cli-help-knowledge.md +1382 -0
  5. package/bundle/assets/sounds/README.md +74 -0
  6. package/bundle/assets/sounds/confirmation-required.wav +0 -0
  7. package/bundle/assets/sounds/response-complete.wav +0 -0
  8. package/bundle/assets/sounds/selection-made.wav +0 -0
  9. package/bundle/dvcode.js +4442 -0
  10. package/bundle/fix-binary-permissions.js +215 -0
  11. package/bundle/login/templates/authSelectPage.html +870 -0
  12. package/bundle/login/templates/deepv.ico +0 -0
  13. package/bundle/login/templates/feishu.ico +0 -0
  14. package/bundle/node_modules/@vscode/ripgrep/bin/darwin-arm64-rg +0 -0
  15. package/bundle/node_modules/@vscode/ripgrep/bin/darwin-x64-rg +0 -0
  16. package/bundle/node_modules/@vscode/ripgrep/bin/linux-arm-rg +0 -0
  17. package/bundle/node_modules/@vscode/ripgrep/bin/linux-arm64-rg +0 -0
  18. package/bundle/node_modules/@vscode/ripgrep/bin/linux-x64-rg +0 -0
  19. package/bundle/node_modules/@vscode/ripgrep/bin/rg.exe +0 -0
  20. package/bundle/node_modules/@vscode/ripgrep/bin/win32-arm64-rg.exe +0 -0
  21. package/bundle/node_modules/@vscode/ripgrep/bin/win32-ia32-rg.exe +0 -0
  22. package/bundle/node_modules/@vscode/ripgrep/bin/win32-x64-rg.exe +0 -0
  23. package/bundle/node_modules/@vscode/ripgrep/lib/download.js +357 -0
  24. package/bundle/node_modules/@vscode/ripgrep/lib/index.d.ts +1 -0
  25. package/bundle/node_modules/@vscode/ripgrep/lib/index.js +42 -0
  26. package/bundle/node_modules/@vscode/ripgrep/lib/postinstall.js +121 -0
  27. package/bundle/node_modules/@vscode/ripgrep/package.json +24 -0
  28. package/bundle/node_modules/undici/LICENSE +21 -0
  29. package/bundle/node_modules/undici/README.md +472 -0
  30. package/bundle/node_modules/undici/docs/docs/api/Agent.md +83 -0
  31. package/bundle/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  32. package/bundle/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  33. package/bundle/node_modules/undici/docs/docs/api/CacheStore.md +151 -0
  34. package/bundle/node_modules/undici/docs/docs/api/Client.md +281 -0
  35. package/bundle/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  36. package/bundle/node_modules/undici/docs/docs/api/Connector.md +115 -0
  37. package/bundle/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  38. package/bundle/node_modules/undici/docs/docs/api/Cookies.md +101 -0
  39. package/bundle/node_modules/undici/docs/docs/api/Debug.md +62 -0
  40. package/bundle/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +204 -0
  41. package/bundle/node_modules/undici/docs/docs/api/Dispatcher.md +1200 -0
  42. package/bundle/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  43. package/bundle/node_modules/undici/docs/docs/api/Errors.md +49 -0
  44. package/bundle/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  45. package/bundle/node_modules/undici/docs/docs/api/Fetch.md +52 -0
  46. package/bundle/node_modules/undici/docs/docs/api/H2CClient.md +262 -0
  47. package/bundle/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  48. package/bundle/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  49. package/bundle/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  50. package/bundle/node_modules/undici/docs/docs/api/MockClient.md +77 -0
  51. package/bundle/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  52. package/bundle/node_modules/undici/docs/docs/api/MockPool.md +548 -0
  53. package/bundle/node_modules/undici/docs/docs/api/Pool.md +84 -0
  54. package/bundle/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  55. package/bundle/node_modules/undici/docs/docs/api/ProxyAgent.md +227 -0
  56. package/bundle/node_modules/undici/docs/docs/api/RedirectHandler.md +96 -0
  57. package/bundle/node_modules/undici/docs/docs/api/RetryAgent.md +45 -0
  58. package/bundle/node_modules/undici/docs/docs/api/RetryHandler.md +117 -0
  59. package/bundle/node_modules/undici/docs/docs/api/Util.md +25 -0
  60. package/bundle/node_modules/undici/docs/docs/api/WebSocket.md +85 -0
  61. package/bundle/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  62. package/bundle/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  63. package/bundle/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  64. package/bundle/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  65. package/bundle/node_modules/undici/docs/docs/best-practices/writing-tests.md +20 -0
  66. package/bundle/node_modules/undici/index-fetch.js +35 -0
  67. package/bundle/node_modules/undici/index.d.ts +3 -0
  68. package/bundle/node_modules/undici/index.js +183 -0
  69. package/bundle/node_modules/undici/lib/api/abort-signal.js +59 -0
  70. package/bundle/node_modules/undici/lib/api/api-connect.js +110 -0
  71. package/bundle/node_modules/undici/lib/api/api-pipeline.js +252 -0
  72. package/bundle/node_modules/undici/lib/api/api-request.js +199 -0
  73. package/bundle/node_modules/undici/lib/api/api-stream.js +209 -0
  74. package/bundle/node_modules/undici/lib/api/api-upgrade.js +110 -0
  75. package/bundle/node_modules/undici/lib/api/index.js +7 -0
  76. package/bundle/node_modules/undici/lib/api/readable.js +558 -0
  77. package/bundle/node_modules/undici/lib/api/util.js +95 -0
  78. package/bundle/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
  79. package/bundle/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
  80. package/bundle/node_modules/undici/lib/core/connect.js +164 -0
  81. package/bundle/node_modules/undici/lib/core/constants.js +143 -0
  82. package/bundle/node_modules/undici/lib/core/diagnostics.js +196 -0
  83. package/bundle/node_modules/undici/lib/core/errors.js +244 -0
  84. package/bundle/node_modules/undici/lib/core/request.js +397 -0
  85. package/bundle/node_modules/undici/lib/core/symbols.js +68 -0
  86. package/bundle/node_modules/undici/lib/core/tree.js +160 -0
  87. package/bundle/node_modules/undici/lib/core/util.js +988 -0
  88. package/bundle/node_modules/undici/lib/dispatcher/agent.js +135 -0
  89. package/bundle/node_modules/undici/lib/dispatcher/balanced-pool.js +206 -0
  90. package/bundle/node_modules/undici/lib/dispatcher/client-h1.js +1615 -0
  91. package/bundle/node_modules/undici/lib/dispatcher/client-h2.js +798 -0
  92. package/bundle/node_modules/undici/lib/dispatcher/client.js +614 -0
  93. package/bundle/node_modules/undici/lib/dispatcher/dispatcher-base.js +161 -0
  94. package/bundle/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  95. package/bundle/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +151 -0
  96. package/bundle/node_modules/undici/lib/dispatcher/fixed-queue.js +159 -0
  97. package/bundle/node_modules/undici/lib/dispatcher/h2c-client.js +122 -0
  98. package/bundle/node_modules/undici/lib/dispatcher/pool-base.js +191 -0
  99. package/bundle/node_modules/undici/lib/dispatcher/pool.js +118 -0
  100. package/bundle/node_modules/undici/lib/dispatcher/proxy-agent.js +275 -0
  101. package/bundle/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  102. package/bundle/node_modules/undici/lib/global.js +32 -0
  103. package/bundle/node_modules/undici/lib/handler/cache-handler.js +448 -0
  104. package/bundle/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
  105. package/bundle/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  106. package/bundle/node_modules/undici/lib/handler/redirect-handler.js +227 -0
  107. package/bundle/node_modules/undici/lib/handler/retry-handler.js +342 -0
  108. package/bundle/node_modules/undici/lib/handler/unwrap-handler.js +96 -0
  109. package/bundle/node_modules/undici/lib/handler/wrap-handler.js +95 -0
  110. package/bundle/node_modules/undici/lib/interceptor/cache.js +372 -0
  111. package/bundle/node_modules/undici/lib/interceptor/dns.js +432 -0
  112. package/bundle/node_modules/undici/lib/interceptor/dump.js +111 -0
  113. package/bundle/node_modules/undici/lib/interceptor/redirect.js +21 -0
  114. package/bundle/node_modules/undici/lib/interceptor/response-error.js +95 -0
  115. package/bundle/node_modules/undici/lib/interceptor/retry.js +19 -0
  116. package/bundle/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  117. package/bundle/node_modules/undici/lib/llhttp/constants.d.ts +97 -0
  118. package/bundle/node_modules/undici/lib/llhttp/constants.js +498 -0
  119. package/bundle/node_modules/undici/lib/llhttp/constants.js.map +1 -0
  120. package/bundle/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  121. package/bundle/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  122. package/bundle/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
  123. package/bundle/node_modules/undici/lib/llhttp/utils.js +15 -0
  124. package/bundle/node_modules/undici/lib/llhttp/utils.js.map +1 -0
  125. package/bundle/node_modules/undici/lib/mock/mock-agent.js +224 -0
  126. package/bundle/node_modules/undici/lib/mock/mock-call-history.js +248 -0
  127. package/bundle/node_modules/undici/lib/mock/mock-client.js +64 -0
  128. package/bundle/node_modules/undici/lib/mock/mock-errors.js +19 -0
  129. package/bundle/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  130. package/bundle/node_modules/undici/lib/mock/mock-pool.js +64 -0
  131. package/bundle/node_modules/undici/lib/mock/mock-symbols.js +31 -0
  132. package/bundle/node_modules/undici/lib/mock/mock-utils.js +433 -0
  133. package/bundle/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  134. package/bundle/node_modules/undici/lib/util/cache.js +368 -0
  135. package/bundle/node_modules/undici/lib/util/date.js +259 -0
  136. package/bundle/node_modules/undici/lib/util/stats.js +32 -0
  137. package/bundle/node_modules/undici/lib/util/timers.js +423 -0
  138. package/bundle/node_modules/undici/lib/web/cache/cache.js +862 -0
  139. package/bundle/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  140. package/bundle/node_modules/undici/lib/web/cache/util.js +45 -0
  141. package/bundle/node_modules/undici/lib/web/cookies/constants.js +12 -0
  142. package/bundle/node_modules/undici/lib/web/cookies/index.js +199 -0
  143. package/bundle/node_modules/undici/lib/web/cookies/parse.js +322 -0
  144. package/bundle/node_modules/undici/lib/web/cookies/util.js +282 -0
  145. package/bundle/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
  146. package/bundle/node_modules/undici/lib/web/eventsource/eventsource.js +484 -0
  147. package/bundle/node_modules/undici/lib/web/eventsource/util.js +37 -0
  148. package/bundle/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  149. package/bundle/node_modules/undici/lib/web/fetch/body.js +532 -0
  150. package/bundle/node_modules/undici/lib/web/fetch/constants.js +131 -0
  151. package/bundle/node_modules/undici/lib/web/fetch/data-url.js +744 -0
  152. package/bundle/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
  153. package/bundle/node_modules/undici/lib/web/fetch/formdata-parser.js +501 -0
  154. package/bundle/node_modules/undici/lib/web/fetch/formdata.js +263 -0
  155. package/bundle/node_modules/undici/lib/web/fetch/global.js +40 -0
  156. package/bundle/node_modules/undici/lib/web/fetch/headers.js +719 -0
  157. package/bundle/node_modules/undici/lib/web/fetch/index.js +2258 -0
  158. package/bundle/node_modules/undici/lib/web/fetch/request.js +1099 -0
  159. package/bundle/node_modules/undici/lib/web/fetch/response.js +636 -0
  160. package/bundle/node_modules/undici/lib/web/fetch/util.js +1782 -0
  161. package/bundle/node_modules/undici/lib/web/fetch/webidl.js +740 -0
  162. package/bundle/node_modules/undici/lib/web/websocket/connection.js +325 -0
  163. package/bundle/node_modules/undici/lib/web/websocket/constants.js +126 -0
  164. package/bundle/node_modules/undici/lib/web/websocket/events.js +331 -0
  165. package/bundle/node_modules/undici/lib/web/websocket/frame.js +138 -0
  166. package/bundle/node_modules/undici/lib/web/websocket/permessage-deflate.js +70 -0
  167. package/bundle/node_modules/undici/lib/web/websocket/receiver.js +454 -0
  168. package/bundle/node_modules/undici/lib/web/websocket/sender.js +109 -0
  169. package/bundle/node_modules/undici/lib/web/websocket/stream/websocketerror.js +83 -0
  170. package/bundle/node_modules/undici/lib/web/websocket/stream/websocketstream.js +485 -0
  171. package/bundle/node_modules/undici/lib/web/websocket/util.js +338 -0
  172. package/bundle/node_modules/undici/lib/web/websocket/websocket.js +686 -0
  173. package/bundle/node_modules/undici/package.json +149 -0
  174. package/bundle/node_modules/undici/scripts/strip-comments.js +10 -0
  175. package/bundle/node_modules/undici/types/README.md +6 -0
  176. package/bundle/node_modules/undici/types/agent.d.ts +35 -0
  177. package/bundle/node_modules/undici/types/api.d.ts +43 -0
  178. package/bundle/node_modules/undici/types/balanced-pool.d.ts +29 -0
  179. package/bundle/node_modules/undici/types/cache-interceptor.d.ts +172 -0
  180. package/bundle/node_modules/undici/types/cache.d.ts +36 -0
  181. package/bundle/node_modules/undici/types/client-stats.d.ts +15 -0
  182. package/bundle/node_modules/undici/types/client.d.ts +110 -0
  183. package/bundle/node_modules/undici/types/connector.d.ts +34 -0
  184. package/bundle/node_modules/undici/types/content-type.d.ts +21 -0
  185. package/bundle/node_modules/undici/types/cookies.d.ts +30 -0
  186. package/bundle/node_modules/undici/types/diagnostics-channel.d.ts +66 -0
  187. package/bundle/node_modules/undici/types/dispatcher.d.ts +281 -0
  188. package/bundle/node_modules/undici/types/env-http-proxy-agent.d.ts +21 -0
  189. package/bundle/node_modules/undici/types/errors.d.ts +171 -0
  190. package/bundle/node_modules/undici/types/eventsource.d.ts +61 -0
  191. package/bundle/node_modules/undici/types/fetch.d.ts +210 -0
  192. package/bundle/node_modules/undici/types/formdata.d.ts +108 -0
  193. package/bundle/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  194. package/bundle/node_modules/undici/types/global-origin.d.ts +7 -0
  195. package/bundle/node_modules/undici/types/h2c-client.d.ts +75 -0
  196. package/bundle/node_modules/undici/types/handlers.d.ts +15 -0
  197. package/bundle/node_modules/undici/types/header.d.ts +160 -0
  198. package/bundle/node_modules/undici/types/index.d.ts +75 -0
  199. package/bundle/node_modules/undici/types/interceptors.d.ts +34 -0
  200. package/bundle/node_modules/undici/types/mock-agent.d.ts +68 -0
  201. package/bundle/node_modules/undici/types/mock-call-history.d.ts +111 -0
  202. package/bundle/node_modules/undici/types/mock-client.d.ts +25 -0
  203. package/bundle/node_modules/undici/types/mock-errors.d.ts +12 -0
  204. package/bundle/node_modules/undici/types/mock-interceptor.d.ts +93 -0
  205. package/bundle/node_modules/undici/types/mock-pool.d.ts +25 -0
  206. package/bundle/node_modules/undici/types/patch.d.ts +29 -0
  207. package/bundle/node_modules/undici/types/pool-stats.d.ts +19 -0
  208. package/bundle/node_modules/undici/types/pool.d.ts +41 -0
  209. package/bundle/node_modules/undici/types/proxy-agent.d.ts +29 -0
  210. package/bundle/node_modules/undici/types/readable.d.ts +68 -0
  211. package/bundle/node_modules/undici/types/retry-agent.d.ts +8 -0
  212. package/bundle/node_modules/undici/types/retry-handler.d.ts +116 -0
  213. package/bundle/node_modules/undici/types/util.d.ts +18 -0
  214. package/bundle/node_modules/undici/types/utility.d.ts +7 -0
  215. package/bundle/node_modules/undici/types/webidl.d.ts +266 -0
  216. package/bundle/node_modules/undici/types/websocket.d.ts +184 -0
  217. package/bundle/sandbox-macos-permissive-closed.sb +26 -0
  218. package/bundle/sandbox-macos-permissive-open.sb +19 -0
  219. package/bundle/sandbox-macos-permissive-proxied.sb +31 -0
  220. package/bundle/sandbox-macos-restrictive-closed.sb +87 -0
  221. package/bundle/sandbox-macos-restrictive-open.sb +90 -0
  222. package/bundle/sandbox-macos-restrictive-proxied.sb +92 -0
  223. package/package.json +137 -0
@@ -0,0 +1,116 @@
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
+ * Callback to be invoked on every retry iteration.
40
+ * It receives the error, current state of the retry object and the options object
41
+ * passed when instantiating the retry handler.
42
+ *
43
+ * @type {RetryCallback}
44
+ * @memberof RetryOptions
45
+ */
46
+ retry?: RetryCallback;
47
+ /**
48
+ * Maximum number of retries to allow.
49
+ *
50
+ * @type {number}
51
+ * @memberof RetryOptions
52
+ * @default 5
53
+ */
54
+ maxRetries?: number;
55
+ /**
56
+ * Max number of milliseconds allow between retries
57
+ *
58
+ * @type {number}
59
+ * @memberof RetryOptions
60
+ * @default 30000
61
+ */
62
+ maxTimeout?: number;
63
+ /**
64
+ * Initial number of milliseconds to wait before retrying for the first time.
65
+ *
66
+ * @type {number}
67
+ * @memberof RetryOptions
68
+ * @default 500
69
+ */
70
+ minTimeout?: number;
71
+ /**
72
+ * Factior to multiply the timeout factor between retries.
73
+ *
74
+ * @type {number}
75
+ * @memberof RetryOptions
76
+ * @default 2
77
+ */
78
+ timeoutFactor?: number;
79
+ /**
80
+ * It enables to automatically infer timeout between retries based on the `Retry-After` header.
81
+ *
82
+ * @type {boolean}
83
+ * @memberof RetryOptions
84
+ * @default true
85
+ */
86
+ retryAfter?: boolean;
87
+ /**
88
+ * HTTP methods to retry.
89
+ *
90
+ * @type {Dispatcher.HttpMethod[]}
91
+ * @memberof RetryOptions
92
+ * @default ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
93
+ */
94
+ methods?: Dispatcher.HttpMethod[];
95
+ /**
96
+ * Error codes to be retried. e.g. `ECONNRESET`, `ENOTFOUND`, `ETIMEDOUT`, `ECONNREFUSED`, etc.
97
+ *
98
+ * @type {string[]}
99
+ * @default ['ECONNRESET','ECONNREFUSED','ENOTFOUND','ENETDOWN','ENETUNREACH','EHOSTDOWN','EHOSTUNREACH','EPIPE']
100
+ */
101
+ errorCodes?: string[];
102
+ /**
103
+ * HTTP status codes to be retried.
104
+ *
105
+ * @type {number[]}
106
+ * @memberof RetryOptions
107
+ * @default [500, 502, 503, 504, 429],
108
+ */
109
+ statusCodes?: number[];
110
+ }
111
+
112
+ export interface RetryHandlers {
113
+ dispatch: Dispatcher['dispatch'];
114
+ handler: Dispatcher.DispatchHandler;
115
+ }
116
+ }
@@ -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,7 @@
1
+ type AutocompletePrimitiveBaseType<T> =
2
+ T extends string ? string :
3
+ T extends number ? number :
4
+ T extends boolean ? boolean :
5
+ never
6
+
7
+ export type Autocomplete<T> = T | (AutocompletePrimitiveBaseType<T> & Record<never, never>)
@@ -0,0 +1,266 @@
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 ConvertToIntOpts {
14
+ clamp?: boolean
15
+ enforceRange?: boolean
16
+ }
17
+
18
+ interface WebidlErrors {
19
+ exception (opts: { header: string, message: string }): TypeError
20
+ /**
21
+ * @description Throw an error when conversion from one type to another has failed
22
+ */
23
+ conversionFailed (opts: {
24
+ prefix: string
25
+ argument: string
26
+ types: string[]
27
+ }): TypeError
28
+ /**
29
+ * @description Throw an error when an invalid argument is provided
30
+ */
31
+ invalidArgument (opts: {
32
+ prefix: string
33
+ value: string
34
+ type: string
35
+ }): TypeError
36
+ }
37
+
38
+ interface WebIDLTypes {
39
+ UNDEFINED: 1,
40
+ BOOLEAN: 2,
41
+ STRING: 3,
42
+ SYMBOL: 4,
43
+ NUMBER: 5,
44
+ BIGINT: 6,
45
+ NULL: 7
46
+ OBJECT: 8
47
+ }
48
+
49
+ interface WebidlUtil {
50
+ /**
51
+ * @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
52
+ */
53
+ Type (object: unknown): WebIDLTypes[keyof WebIDLTypes]
54
+
55
+ TypeValueToString (o: unknown):
56
+ | 'Undefined'
57
+ | 'Boolean'
58
+ | 'String'
59
+ | 'Symbol'
60
+ | 'Number'
61
+ | 'BigInt'
62
+ | 'Null'
63
+ | 'Object'
64
+
65
+ Types: WebIDLTypes
66
+
67
+ /**
68
+ * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
69
+ */
70
+ ConvertToInt (
71
+ V: unknown,
72
+ bitLength: number,
73
+ signedness: 'signed' | 'unsigned',
74
+ opts?: ConvertToIntOpts
75
+ ): number
76
+
77
+ /**
78
+ * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
79
+ */
80
+ IntegerPart (N: number): number
81
+
82
+ /**
83
+ * Stringifies {@param V}
84
+ */
85
+ Stringify (V: any): string
86
+
87
+ MakeTypeAssertion <I>(I: I): (arg: any) => arg is I
88
+
89
+ /**
90
+ * Mark a value as uncloneable for Node.js.
91
+ * This is only effective in some newer Node.js versions.
92
+ */
93
+ markAsUncloneable (V: any): void
94
+ }
95
+
96
+ interface WebidlConverters {
97
+ /**
98
+ * @see https://webidl.spec.whatwg.org/#es-DOMString
99
+ */
100
+ DOMString (V: unknown, prefix: string, argument: string, opts?: {
101
+ legacyNullToEmptyString: boolean
102
+ }): 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, opts?: ConvertToIntOpts): number
143
+
144
+ /**
145
+ * @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
146
+ */
147
+ ArrayBuffer (V: unknown): ArrayBufferLike
148
+ ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer
149
+
150
+ /**
151
+ * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
152
+ */
153
+ TypedArray (
154
+ V: unknown,
155
+ TypedArray: NodeJS.TypedArray | ArrayBufferLike
156
+ ): NodeJS.TypedArray | ArrayBufferLike
157
+ TypedArray (
158
+ V: unknown,
159
+ TypedArray: NodeJS.TypedArray | ArrayBufferLike,
160
+ opts?: { allowShared: false }
161
+ ): NodeJS.TypedArray | ArrayBuffer
162
+
163
+ /**
164
+ * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
165
+ */
166
+ DataView (V: unknown, opts?: { allowShared: boolean }): DataView
167
+
168
+ /**
169
+ * @see https://webidl.spec.whatwg.org/#BufferSource
170
+ */
171
+ BufferSource (
172
+ V: unknown,
173
+ opts?: { allowShared: boolean }
174
+ ): NodeJS.TypedArray | ArrayBufferLike | DataView
175
+
176
+ ['sequence<ByteString>']: SequenceConverter<string>
177
+
178
+ ['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
179
+
180
+ ['record<ByteString, ByteString>']: RecordConverter<string, string>
181
+
182
+ [Key: string]: (...args: any[]) => unknown
183
+ }
184
+
185
+ type IsAssertion<T> = (arg: any) => arg is T
186
+
187
+ interface WebidlIs {
188
+ Request: IsAssertion<undici.Request>
189
+ Response: IsAssertion<undici.Response>
190
+ ReadableStream: IsAssertion<ReadableStream>
191
+ Blob: IsAssertion<Blob>
192
+ URLSearchParams: IsAssertion<URLSearchParams>
193
+ File: IsAssertion<File>
194
+ FormData: IsAssertion<undici.FormData>
195
+ URL: IsAssertion<URL>
196
+ WebSocketError: IsAssertion<undici.WebSocketError>
197
+ AbortSignal: IsAssertion<AbortSignal>
198
+ MessagePort: IsAssertion<MessagePort>
199
+ }
200
+
201
+ export interface Webidl {
202
+ errors: WebidlErrors
203
+ util: WebidlUtil
204
+ converters: WebidlConverters
205
+ is: WebidlIs
206
+
207
+ /**
208
+ * @description Performs a brand-check on {@param V} to ensure it is a
209
+ * {@param cls} object.
210
+ */
211
+ brandCheck <Interface extends new () => unknown>(V: unknown, cls: Interface): asserts V is Interface
212
+
213
+ brandCheckMultiple <Interfaces extends (new () => unknown)[]> (list: Interfaces): (V: any) => asserts V is Interfaces[number]
214
+
215
+ /**
216
+ * @see https://webidl.spec.whatwg.org/#es-sequence
217
+ * @description Convert a value, V, to a WebIDL sequence type.
218
+ */
219
+ sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
220
+
221
+ illegalConstructor (): never
222
+
223
+ /**
224
+ * @see https://webidl.spec.whatwg.org/#es-to-record
225
+ * @description Convert a value, V, to a WebIDL record type.
226
+ */
227
+ recordConverter <K extends string, V>(
228
+ keyConverter: Converter<K>,
229
+ valueConverter: Converter<V>
230
+ ): RecordConverter<K, V>
231
+
232
+ /**
233
+ * Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
234
+ * interfaces are allowed.
235
+ */
236
+ interfaceConverter <Interface>(typeCheck: IsAssertion<Interface>, name: string): (
237
+ V: unknown,
238
+ prefix: string,
239
+ argument: string
240
+ ) => asserts V is Interface
241
+
242
+ // TODO(@KhafraDev): a type could likely be implemented that can infer the return type
243
+ // from the converters given?
244
+ /**
245
+ * Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
246
+ * allowed, values allowed, optional and required keys. Auto converts the value to
247
+ * a type given a converter.
248
+ */
249
+ dictionaryConverter (converters: {
250
+ key: string,
251
+ defaultValue?: () => unknown,
252
+ required?: boolean,
253
+ converter: (...args: unknown[]) => unknown,
254
+ allowedValues?: unknown[]
255
+ }[]): (V: unknown) => Record<string, unknown>
256
+
257
+ /**
258
+ * @see https://webidl.spec.whatwg.org/#idl-nullable-type
259
+ * @description allows a type, V, to be null
260
+ */
261
+ nullableConverter <T>(
262
+ converter: Converter<T>
263
+ ): (V: unknown) => ReturnType<typeof converter> | null
264
+
265
+ argumentLengthCheck (args: { length: number }, min: number, context: string): void
266
+ }
@@ -0,0 +1,184 @@
1
+ /// <reference types="node" />
2
+
3
+ import type { Blob } from 'buffer'
4
+ import type { ReadableStream, WritableStream } from 'stream/web'
5
+ import type { MessagePort } from 'worker_threads'
6
+ import {
7
+ EventInit,
8
+ EventListenerOptions,
9
+ AddEventListenerOptions,
10
+ EventListenerOrEventListenerObject
11
+ } from './patch'
12
+ import Dispatcher from './dispatcher'
13
+ import { HeadersInit } from './fetch'
14
+
15
+ export type BinaryType = 'blob' | 'arraybuffer'
16
+
17
+ interface WebSocketEventMap {
18
+ close: CloseEvent
19
+ error: ErrorEvent
20
+ message: MessageEvent
21
+ open: Event
22
+ }
23
+
24
+ interface WebSocket extends EventTarget {
25
+ binaryType: BinaryType
26
+
27
+ readonly bufferedAmount: number
28
+ readonly extensions: string
29
+
30
+ onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
31
+ onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
32
+ onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
33
+ onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
34
+
35
+ readonly protocol: string
36
+ readonly readyState: number
37
+ readonly url: string
38
+
39
+ close(code?: number, reason?: string): void
40
+ send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
41
+
42
+ readonly CLOSED: number
43
+ readonly CLOSING: number
44
+ readonly CONNECTING: number
45
+ readonly OPEN: number
46
+
47
+ addEventListener<K extends keyof WebSocketEventMap>(
48
+ type: K,
49
+ listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
50
+ options?: boolean | AddEventListenerOptions
51
+ ): void
52
+ addEventListener(
53
+ type: string,
54
+ listener: EventListenerOrEventListenerObject,
55
+ options?: boolean | AddEventListenerOptions
56
+ ): void
57
+ removeEventListener<K extends keyof WebSocketEventMap>(
58
+ type: K,
59
+ listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
60
+ options?: boolean | EventListenerOptions
61
+ ): void
62
+ removeEventListener(
63
+ type: string,
64
+ listener: EventListenerOrEventListenerObject,
65
+ options?: boolean | EventListenerOptions
66
+ ): void
67
+ }
68
+
69
+ export declare const WebSocket: {
70
+ prototype: WebSocket
71
+ new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
72
+ readonly CLOSED: number
73
+ readonly CLOSING: number
74
+ readonly CONNECTING: number
75
+ readonly OPEN: number
76
+ }
77
+
78
+ interface CloseEventInit extends EventInit {
79
+ code?: number
80
+ reason?: string
81
+ wasClean?: boolean
82
+ }
83
+
84
+ interface CloseEvent extends Event {
85
+ readonly code: number
86
+ readonly reason: string
87
+ readonly wasClean: boolean
88
+ }
89
+
90
+ export declare const CloseEvent: {
91
+ prototype: CloseEvent
92
+ new (type: string, eventInitDict?: CloseEventInit): CloseEvent
93
+ }
94
+
95
+ interface MessageEventInit<T = any> extends EventInit {
96
+ data?: T
97
+ lastEventId?: string
98
+ origin?: string
99
+ ports?: (typeof MessagePort)[]
100
+ source?: typeof MessagePort | null
101
+ }
102
+
103
+ interface MessageEvent<T = any> extends Event {
104
+ readonly data: T
105
+ readonly lastEventId: string
106
+ readonly origin: string
107
+ readonly ports: ReadonlyArray<typeof MessagePort>
108
+ readonly source: typeof MessagePort | null
109
+ initMessageEvent(
110
+ type: string,
111
+ bubbles?: boolean,
112
+ cancelable?: boolean,
113
+ data?: any,
114
+ origin?: string,
115
+ lastEventId?: string,
116
+ source?: typeof MessagePort | null,
117
+ ports?: (typeof MessagePort)[]
118
+ ): void;
119
+ }
120
+
121
+ export declare const MessageEvent: {
122
+ prototype: MessageEvent
123
+ new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
124
+ }
125
+
126
+ interface ErrorEventInit extends EventInit {
127
+ message?: string
128
+ filename?: string
129
+ lineno?: number
130
+ colno?: number
131
+ error?: any
132
+ }
133
+
134
+ interface ErrorEvent extends Event {
135
+ readonly message: string
136
+ readonly filename: string
137
+ readonly lineno: number
138
+ readonly colno: number
139
+ readonly error: any
140
+ }
141
+
142
+ export declare const ErrorEvent: {
143
+ prototype: ErrorEvent
144
+ new (type: string, eventInitDict?: ErrorEventInit): ErrorEvent
145
+ }
146
+
147
+ interface WebSocketInit {
148
+ protocols?: string | string[],
149
+ dispatcher?: Dispatcher,
150
+ headers?: HeadersInit
151
+ }
152
+
153
+ interface WebSocketStreamOptions {
154
+ protocols?: string | string[]
155
+ signal?: AbortSignal
156
+ }
157
+
158
+ interface WebSocketCloseInfo {
159
+ closeCode: number
160
+ reason: string
161
+ }
162
+
163
+ interface WebSocketStream {
164
+ closed: Promise<WebSocketCloseInfo>
165
+ opened: Promise<{
166
+ extensions: string
167
+ protocol: string
168
+ readable: ReadableStream
169
+ writable: WritableStream
170
+ }>
171
+ url: string
172
+ }
173
+
174
+ export declare const WebSocketStream: {
175
+ prototype: WebSocketStream
176
+ new (url: string | URL, options?: WebSocketStreamOptions): WebSocketStream
177
+ }
178
+
179
+ interface WebSocketError extends Event, WebSocketCloseInfo {}
180
+
181
+ export declare const WebSocketError: {
182
+ prototype: WebSocketError
183
+ new (type: string, init?: WebSocketCloseInfo): WebSocketError
184
+ }
@@ -0,0 +1,26 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.gemini"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
20
+
21
+ ;; deny all inbound network traffic EXCEPT on debugger port
22
+ (deny network-inbound)
23
+ (allow network-inbound (local ip "localhost:9229"))
24
+
25
+ ;; deny all outbound network traffic
26
+ (deny network-outbound)
@@ -0,0 +1,19 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.gemini"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
@@ -0,0 +1,31 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.gemini"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
20
+
21
+ ;; deny all inbound network traffic EXCEPT on debugger port
22
+ (deny network-inbound)
23
+ (allow network-inbound (local ip "localhost:9229"))
24
+
25
+ ;; deny all outbound network traffic EXCEPT through proxy on localhost:8877
26
+ ;; set `GEMINI_SANDBOX_PROXY_COMMAND=<command>` to run proxy alongside sandbox
27
+ ;; proxy must listen on :::8877 (see docs/examples/proxy-script.md)
28
+ (deny network-outbound)
29
+ (allow network-outbound (remote tcp "localhost:8877"))
30
+
31
+ (allow network-bind (local ip "*:*"))