@yolk-sdk/emulators 0.1.0-canary.96

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 (333) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2135 -0
  3. package/dist/anthropic.d.mts +269 -0
  4. package/dist/anthropic.d.mts.map +1 -0
  5. package/dist/anthropic.mjs +177 -0
  6. package/dist/anthropic.mjs.map +1 -0
  7. package/dist/chat-completions.d.mts +288 -0
  8. package/dist/chat-completions.d.mts.map +1 -0
  9. package/dist/chat-completions.mjs +451 -0
  10. package/dist/chat-completions.mjs.map +1 -0
  11. package/dist/codex.d.mts +265 -0
  12. package/dist/codex.d.mts.map +1 -0
  13. package/dist/codex.mjs +199 -0
  14. package/dist/codex.mjs.map +1 -0
  15. package/dist/dropbox/api.d.mts +63 -0
  16. package/dist/dropbox/api.d.mts.map +1 -0
  17. package/dist/dropbox/api.mjs +565 -0
  18. package/dist/dropbox/api.mjs.map +1 -0
  19. package/dist/dropbox/state.d.mts +136 -0
  20. package/dist/dropbox/state.d.mts.map +1 -0
  21. package/dist/dropbox/state.mjs +209 -0
  22. package/dist/dropbox/state.mjs.map +1 -0
  23. package/dist/dropbox.d.mts +79 -0
  24. package/dist/dropbox.d.mts.map +1 -0
  25. package/dist/dropbox.mjs +124 -0
  26. package/dist/dropbox.mjs.map +1 -0
  27. package/dist/email-fixtures.d.mts +36 -0
  28. package/dist/email-fixtures.d.mts.map +1 -0
  29. package/dist/email-fixtures.mjs +1080 -0
  30. package/dist/email-fixtures.mjs.map +1 -0
  31. package/dist/email.d.mts +160 -0
  32. package/dist/email.d.mts.map +1 -0
  33. package/dist/email.mjs +608 -0
  34. package/dist/email.mjs.map +1 -0
  35. package/dist/emulator-compose.d.mts +40 -0
  36. package/dist/emulator-compose.d.mts.map +1 -0
  37. package/dist/emulator-compose.mjs +91 -0
  38. package/dist/emulator-compose.mjs.map +1 -0
  39. package/dist/emulator-http.d.mts +53 -0
  40. package/dist/emulator-http.d.mts.map +1 -0
  41. package/dist/emulator-http.mjs +117 -0
  42. package/dist/emulator-http.mjs.map +1 -0
  43. package/dist/emulator-kernel.d.mts +176 -0
  44. package/dist/emulator-kernel.d.mts.map +1 -0
  45. package/dist/emulator-kernel.mjs +413 -0
  46. package/dist/emulator-kernel.mjs.map +1 -0
  47. package/dist/fixture-route.d.mts +129 -0
  48. package/dist/fixture-route.d.mts.map +1 -0
  49. package/dist/fixture-route.mjs +257 -0
  50. package/dist/fixture-route.mjs.map +1 -0
  51. package/dist/fortnox/api.d.mts +92 -0
  52. package/dist/fortnox/api.d.mts.map +1 -0
  53. package/dist/fortnox/api.mjs +750 -0
  54. package/dist/fortnox/api.mjs.map +1 -0
  55. package/dist/fortnox/state.d.mts +533 -0
  56. package/dist/fortnox/state.d.mts.map +1 -0
  57. package/dist/fortnox/state.mjs +612 -0
  58. package/dist/fortnox/state.mjs.map +1 -0
  59. package/dist/fortnox.d.mts +128 -0
  60. package/dist/fortnox.d.mts.map +1 -0
  61. package/dist/fortnox.mjs +403 -0
  62. package/dist/fortnox.mjs.map +1 -0
  63. package/dist/gateway-evaluate-recordings.d.mts +12 -0
  64. package/dist/gateway-evaluate-recordings.d.mts.map +1 -0
  65. package/dist/gateway-evaluate-recordings.mjs +128 -0
  66. package/dist/gateway-evaluate-recordings.mjs.map +1 -0
  67. package/dist/gateway.d.mts +272 -0
  68. package/dist/gateway.d.mts.map +1 -0
  69. package/dist/gateway.mjs +400 -0
  70. package/dist/gateway.mjs.map +1 -0
  71. package/dist/github/api.d.mts +63 -0
  72. package/dist/github/api.d.mts.map +1 -0
  73. package/dist/github/api.mjs +527 -0
  74. package/dist/github/api.mjs.map +1 -0
  75. package/dist/github/state.d.mts +272 -0
  76. package/dist/github/state.d.mts.map +1 -0
  77. package/dist/github/state.mjs +303 -0
  78. package/dist/github/state.mjs.map +1 -0
  79. package/dist/github.d.mts +77 -0
  80. package/dist/github.d.mts.map +1 -0
  81. package/dist/github.mjs +180 -0
  82. package/dist/github.mjs.map +1 -0
  83. package/dist/google/calendar.d.mts +10 -0
  84. package/dist/google/calendar.d.mts.map +1 -0
  85. package/dist/google/calendar.mjs +252 -0
  86. package/dist/google/calendar.mjs.map +1 -0
  87. package/dist/google/drive.d.mts +8 -0
  88. package/dist/google/drive.d.mts.map +1 -0
  89. package/dist/google/drive.mjs +252 -0
  90. package/dist/google/drive.mjs.map +1 -0
  91. package/dist/google/gmail.d.mts +10 -0
  92. package/dist/google/gmail.d.mts.map +1 -0
  93. package/dist/google/gmail.mjs +591 -0
  94. package/dist/google/gmail.mjs.map +1 -0
  95. package/dist/google/shared.d.mts +107 -0
  96. package/dist/google/shared.d.mts.map +1 -0
  97. package/dist/google/shared.mjs +146 -0
  98. package/dist/google/shared.mjs.map +1 -0
  99. package/dist/google/state.d.mts +385 -0
  100. package/dist/google/state.d.mts.map +1 -0
  101. package/dist/google/state.mjs +496 -0
  102. package/dist/google/state.mjs.map +1 -0
  103. package/dist/google.d.mts +75 -0
  104. package/dist/google.d.mts.map +1 -0
  105. package/dist/google.mjs +210 -0
  106. package/dist/google.mjs.map +1 -0
  107. package/dist/linkedin-search/api.d.mts +45 -0
  108. package/dist/linkedin-search/api.d.mts.map +1 -0
  109. package/dist/linkedin-search/api.mjs +181 -0
  110. package/dist/linkedin-search/api.mjs.map +1 -0
  111. package/dist/linkedin-search/state.d.mts +123 -0
  112. package/dist/linkedin-search/state.d.mts.map +1 -0
  113. package/dist/linkedin-search/state.mjs +261 -0
  114. package/dist/linkedin-search/state.mjs.map +1 -0
  115. package/dist/linkedin-search.d.mts +69 -0
  116. package/dist/linkedin-search.d.mts.map +1 -0
  117. package/dist/linkedin-search.mjs +158 -0
  118. package/dist/linkedin-search.mjs.map +1 -0
  119. package/dist/mcp/api.d.mts +44 -0
  120. package/dist/mcp/api.d.mts.map +1 -0
  121. package/dist/mcp/api.mjs +557 -0
  122. package/dist/mcp/api.mjs.map +1 -0
  123. package/dist/mcp/recordings.d.mts +40 -0
  124. package/dist/mcp/recordings.d.mts.map +1 -0
  125. package/dist/mcp/recordings.mjs +2390 -0
  126. package/dist/mcp/recordings.mjs.map +1 -0
  127. package/dist/mcp/state.d.mts +71 -0
  128. package/dist/mcp/state.d.mts.map +1 -0
  129. package/dist/mcp/state.mjs +83 -0
  130. package/dist/mcp/state.mjs.map +1 -0
  131. package/dist/mcp.d.mts +84 -0
  132. package/dist/mcp.d.mts.map +1 -0
  133. package/dist/mcp.mjs +241 -0
  134. package/dist/mcp.mjs.map +1 -0
  135. package/dist/messages.d.mts +183 -0
  136. package/dist/messages.d.mts.map +1 -0
  137. package/dist/messages.mjs +532 -0
  138. package/dist/messages.mjs.map +1 -0
  139. package/dist/microsoft/api.d.mts +47 -0
  140. package/dist/microsoft/api.d.mts.map +1 -0
  141. package/dist/microsoft/api.mjs +178 -0
  142. package/dist/microsoft/api.mjs.map +1 -0
  143. package/dist/microsoft/calendar.d.mts +30 -0
  144. package/dist/microsoft/calendar.d.mts.map +1 -0
  145. package/dist/microsoft/calendar.mjs +271 -0
  146. package/dist/microsoft/calendar.mjs.map +1 -0
  147. package/dist/microsoft/drive.d.mts +36 -0
  148. package/dist/microsoft/drive.d.mts.map +1 -0
  149. package/dist/microsoft/drive.mjs +298 -0
  150. package/dist/microsoft/drive.mjs.map +1 -0
  151. package/dist/microsoft/graph.d.mts +198 -0
  152. package/dist/microsoft/graph.d.mts.map +1 -0
  153. package/dist/microsoft/graph.mjs +264 -0
  154. package/dist/microsoft/graph.mjs.map +1 -0
  155. package/dist/microsoft/mail.d.mts +48 -0
  156. package/dist/microsoft/mail.d.mts.map +1 -0
  157. package/dist/microsoft/mail.mjs +488 -0
  158. package/dist/microsoft/mail.mjs.map +1 -0
  159. package/dist/microsoft/state.d.mts +480 -0
  160. package/dist/microsoft/state.d.mts.map +1 -0
  161. package/dist/microsoft/state.mjs +625 -0
  162. package/dist/microsoft/state.mjs.map +1 -0
  163. package/dist/microsoft.d.mts +168 -0
  164. package/dist/microsoft.d.mts.map +1 -0
  165. package/dist/microsoft.mjs +483 -0
  166. package/dist/microsoft.mjs.map +1 -0
  167. package/dist/node.d.mts +47 -0
  168. package/dist/node.d.mts.map +1 -0
  169. package/dist/node.mjs +178 -0
  170. package/dist/node.mjs.map +1 -0
  171. package/dist/notion/api.d.mts +51 -0
  172. package/dist/notion/api.d.mts.map +1 -0
  173. package/dist/notion/api.mjs +507 -0
  174. package/dist/notion/api.mjs.map +1 -0
  175. package/dist/notion/state.d.mts +329 -0
  176. package/dist/notion/state.d.mts.map +1 -0
  177. package/dist/notion/state.mjs +432 -0
  178. package/dist/notion/state.mjs.map +1 -0
  179. package/dist/notion.d.mts +72 -0
  180. package/dist/notion.d.mts.map +1 -0
  181. package/dist/notion.mjs +127 -0
  182. package/dist/notion.mjs.map +1 -0
  183. package/dist/openai.d.mts +165 -0
  184. package/dist/openai.d.mts.map +1 -0
  185. package/dist/openai.mjs +141 -0
  186. package/dist/openai.mjs.map +1 -0
  187. package/dist/opencode-recordings.d.mts +7 -0
  188. package/dist/opencode-recordings.d.mts.map +1 -0
  189. package/dist/opencode-recordings.mjs +222 -0
  190. package/dist/opencode-recordings.mjs.map +1 -0
  191. package/dist/opencode.d.mts +70 -0
  192. package/dist/opencode.d.mts.map +1 -0
  193. package/dist/opencode.mjs +217 -0
  194. package/dist/opencode.mjs.map +1 -0
  195. package/dist/r2-fixtures.d.mts +36 -0
  196. package/dist/r2-fixtures.d.mts.map +1 -0
  197. package/dist/r2-fixtures.mjs +245 -0
  198. package/dist/r2-fixtures.mjs.map +1 -0
  199. package/dist/r2-guard.d.mts +43 -0
  200. package/dist/r2-guard.d.mts.map +1 -0
  201. package/dist/r2-guard.mjs +215 -0
  202. package/dist/r2-guard.mjs.map +1 -0
  203. package/dist/r2.d.mts +166 -0
  204. package/dist/r2.d.mts.map +1 -0
  205. package/dist/r2.mjs +517 -0
  206. package/dist/r2.mjs.map +1 -0
  207. package/dist/responses.d.mts +231 -0
  208. package/dist/responses.d.mts.map +1 -0
  209. package/dist/responses.mjs +556 -0
  210. package/dist/responses.mjs.map +1 -0
  211. package/dist/route-evidence.d.mts +45 -0
  212. package/dist/route-evidence.d.mts.map +1 -0
  213. package/dist/route-evidence.mjs +56 -0
  214. package/dist/route-evidence.mjs.map +1 -0
  215. package/dist/router.d.mts +93 -0
  216. package/dist/router.d.mts.map +1 -0
  217. package/dist/router.mjs +259 -0
  218. package/dist/router.mjs.map +1 -0
  219. package/dist/stateful-core.d.mts +17 -0
  220. package/dist/stateful-core.d.mts.map +1 -0
  221. package/dist/stateful-core.mjs +41 -0
  222. package/dist/stateful-core.mjs.map +1 -0
  223. package/dist/stateful-emulator.d.mts +565 -0
  224. package/dist/stateful-emulator.d.mts.map +1 -0
  225. package/dist/stateful-emulator.mjs +1228 -0
  226. package/dist/stateful-emulator.mjs.map +1 -0
  227. package/dist/stateful-secrets.d.mts +84 -0
  228. package/dist/stateful-secrets.d.mts.map +1 -0
  229. package/dist/stateful-secrets.mjs +216 -0
  230. package/dist/stateful-secrets.mjs.map +1 -0
  231. package/dist/subscription-usage-recordings.d.mts +9 -0
  232. package/dist/subscription-usage-recordings.d.mts.map +1 -0
  233. package/dist/subscription-usage-recordings.mjs +53 -0
  234. package/dist/subscription-usage-recordings.mjs.map +1 -0
  235. package/dist/subscription-usage.d.mts +53 -0
  236. package/dist/subscription-usage.d.mts.map +1 -0
  237. package/dist/subscription-usage.mjs +21 -0
  238. package/dist/subscription-usage.mjs.map +1 -0
  239. package/dist/telegram/api.d.mts +34 -0
  240. package/dist/telegram/api.d.mts.map +1 -0
  241. package/dist/telegram/api.mjs +257 -0
  242. package/dist/telegram/api.mjs.map +1 -0
  243. package/dist/telegram/state.d.mts +128 -0
  244. package/dist/telegram/state.d.mts.map +1 -0
  245. package/dist/telegram/state.mjs +154 -0
  246. package/dist/telegram/state.mjs.map +1 -0
  247. package/dist/telegram.d.mts +62 -0
  248. package/dist/telegram.d.mts.map +1 -0
  249. package/dist/telegram.mjs +127 -0
  250. package/dist/telegram.mjs.map +1 -0
  251. package/dist/todoist/api.d.mts +55 -0
  252. package/dist/todoist/api.d.mts.map +1 -0
  253. package/dist/todoist/api.mjs +415 -0
  254. package/dist/todoist/api.mjs.map +1 -0
  255. package/dist/todoist/state.d.mts +275 -0
  256. package/dist/todoist/state.d.mts.map +1 -0
  257. package/dist/todoist/state.mjs +345 -0
  258. package/dist/todoist/state.mjs.map +1 -0
  259. package/dist/todoist.d.mts +68 -0
  260. package/dist/todoist.d.mts.map +1 -0
  261. package/dist/todoist.mjs +181 -0
  262. package/dist/todoist.mjs.map +1 -0
  263. package/dist/xai.d.mts +267 -0
  264. package/dist/xai.d.mts.map +1 -0
  265. package/dist/xai.mjs +252 -0
  266. package/dist/xai.mjs.map +1 -0
  267. package/package.json +157 -0
  268. package/src/anthropic.ts +289 -0
  269. package/src/chat-completions.ts +924 -0
  270. package/src/codex.ts +296 -0
  271. package/src/dropbox/api.ts +1084 -0
  272. package/src/dropbox/state.ts +364 -0
  273. package/src/dropbox.ts +203 -0
  274. package/src/email-fixtures.ts +1297 -0
  275. package/src/email.ts +1108 -0
  276. package/src/emulator-compose.ts +147 -0
  277. package/src/emulator-http.ts +184 -0
  278. package/src/emulator-kernel.ts +844 -0
  279. package/src/fixture-route.ts +561 -0
  280. package/src/fortnox/api.ts +1352 -0
  281. package/src/fortnox/state.ts +798 -0
  282. package/src/fortnox.ts +801 -0
  283. package/src/gateway-evaluate-recordings.ts +153 -0
  284. package/src/gateway.ts +530 -0
  285. package/src/github/api.ts +986 -0
  286. package/src/github/state.ts +439 -0
  287. package/src/github.ts +271 -0
  288. package/src/google/calendar.ts +486 -0
  289. package/src/google/drive.ts +471 -0
  290. package/src/google/gmail.ts +1011 -0
  291. package/src/google/shared.ts +321 -0
  292. package/src/google/state.ts +686 -0
  293. package/src/google.ts +298 -0
  294. package/src/linkedin-search/api.ts +363 -0
  295. package/src/linkedin-search/state.ts +373 -0
  296. package/src/linkedin-search.ts +241 -0
  297. package/src/mcp/api.ts +995 -0
  298. package/src/mcp/recordings.ts +2665 -0
  299. package/src/mcp/state.ts +125 -0
  300. package/src/mcp.ts +319 -0
  301. package/src/messages.ts +844 -0
  302. package/src/microsoft/api.ts +426 -0
  303. package/src/microsoft/calendar.ts +491 -0
  304. package/src/microsoft/drive.ts +541 -0
  305. package/src/microsoft/graph.ts +550 -0
  306. package/src/microsoft/mail.ts +833 -0
  307. package/src/microsoft/state.ts +822 -0
  308. package/src/microsoft.ts +982 -0
  309. package/src/node.ts +293 -0
  310. package/src/notion/api.ts +976 -0
  311. package/src/notion/state.ts +512 -0
  312. package/src/notion.ts +210 -0
  313. package/src/openai.ts +198 -0
  314. package/src/opencode-recordings.ts +257 -0
  315. package/src/opencode.ts +271 -0
  316. package/src/r2-fixtures.ts +295 -0
  317. package/src/r2-guard.ts +323 -0
  318. package/src/r2.ts +890 -0
  319. package/src/responses.ts +901 -0
  320. package/src/route-evidence.ts +90 -0
  321. package/src/router.ts +490 -0
  322. package/src/stateful-core.ts +70 -0
  323. package/src/stateful-emulator.ts +2571 -0
  324. package/src/stateful-secrets.ts +299 -0
  325. package/src/subscription-usage-recordings.ts +77 -0
  326. package/src/subscription-usage.ts +68 -0
  327. package/src/telegram/api.ts +437 -0
  328. package/src/telegram/state.ts +229 -0
  329. package/src/telegram.ts +227 -0
  330. package/src/todoist/api.ts +736 -0
  331. package/src/todoist/state.ts +456 -0
  332. package/src/todoist.ts +316 -0
  333. package/src/xai.ts +341 -0
package/dist/r2.d.mts ADDED
@@ -0,0 +1,166 @@
1
+ import { EmulatorEvidence, EmulatorRouteEvidence } from "./route-evidence.mjs";
2
+ import { R2EmulatorFailure, R2EmulatorFixture, r2EmulatorFixtures } from "./r2-fixtures.mjs";
3
+ import * as Schema from "effect/Schema";
4
+
5
+ //#region src/r2.d.ts
6
+ /** The presigner port the presign fixture and manifest route name. */
7
+ declare const r2EmulatorPresignerPort = "R2Presigner";
8
+ /** The object-client port the get and put fixtures and manifest routes name. */
9
+ declare const r2EmulatorObjectClientPort = "R2ObjectClient";
10
+ /** Manifest routes of port emulators use this pseudo method; `path` is `<Port>.<method>`. */
11
+ declare const r2EmulatorRouteMethod = "PORT";
12
+ /**
13
+ * Route evidence manifest: every emulated port method (`PORT <Port>.<method>`) and the R2
14
+ * conformance cases whose (synthetic, unverified) fixtures it follows. `R2ObjectClient.put` is an
15
+ * unverified connector write: it needs a pending entry in the repo's evidence check until an
16
+ * owner-approved live run against a practice bucket verifies it. Presigning is local signing and
17
+ * `get` reads, so neither is a write.
18
+ */
19
+ declare const r2EmulatorRoutes: ReadonlyArray<EmulatorRouteEvidence>;
20
+ /** One object in the emulated bucket: its key, its etag (quotes kept), and its bytes as base64. */
21
+ declare const R2EmulatorObject: Schema.Struct<{
22
+ readonly key: Schema.String;
23
+ readonly etag: Schema.String;
24
+ readonly bodyBase64: Schema.String;
25
+ }>;
26
+ type R2EmulatorObject = typeof R2EmulatorObject.Type;
27
+ declare const R2EmulatorBucket: Schema.Struct<{
28
+ readonly name: Schema.String;
29
+ readonly objects: Schema.$Array<Schema.Struct<{
30
+ readonly key: Schema.String;
31
+ readonly etag: Schema.String;
32
+ readonly bodyBase64: Schema.String;
33
+ }>>;
34
+ }>;
35
+ type R2EmulatorBucket = typeof R2EmulatorBucket.Type;
36
+ /** The emulated buckets: plain JSON, used both as the seed and as the `state()` snapshot. */
37
+ declare const R2EmulatorSeed: Schema.Struct<{
38
+ readonly buckets: Schema.$Array<Schema.Struct<{
39
+ readonly name: Schema.String;
40
+ readonly objects: Schema.$Array<Schema.Struct<{
41
+ readonly key: Schema.String;
42
+ readonly etag: Schema.String;
43
+ readonly bodyBase64: Schema.String;
44
+ }>>;
45
+ }>>;
46
+ }>;
47
+ type R2EmulatorSeed = typeof R2EmulatorSeed.Type;
48
+ /**
49
+ * The synthetic practice bucket the R2 fixtures describe (the default seed): the seeded object the
50
+ * get fixtures read, with the etag and bytes they answer.
51
+ */
52
+ declare const r2EmulatorDefaultSeed: R2EmulatorSeed;
53
+ /**
54
+ * A fault: answer the next `count` calls (every one when omitted) of `port` and `method` whose
55
+ * credential-free request contains `match` (a deep subset: objects by key, arrays element by
56
+ * element, other values exactly) with `failure` instead of a fixture. Faults apply only to a call a
57
+ * fixture would answer, and change no bucket state.
58
+ */
59
+ declare const R2EmulatorFault: Schema.Struct<{
60
+ readonly kind: Schema.Literal<"failure">;
61
+ readonly port: Schema.String;
62
+ readonly method: Schema.String;
63
+ readonly match: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
64
+ readonly count: Schema.optionalKey<Schema.Int>;
65
+ readonly failure: Schema.Struct<{
66
+ readonly kind: Schema.Literals<readonly ["expected", "error"]>;
67
+ readonly code: Schema.String;
68
+ readonly message: Schema.String;
69
+ readonly status: Schema.optionalKey<Schema.Int>;
70
+ }>;
71
+ }>;
72
+ type R2EmulatorFault = typeof R2EmulatorFault.Type;
73
+ type R2EmulatorFaultState = {
74
+ readonly id: number;
75
+ readonly fault: R2EmulatorFault; /** Remaining matching calls; `undefined` for an unlimited fault. */
76
+ readonly remaining: number | undefined;
77
+ readonly applied: number;
78
+ };
79
+ declare const R2EmulatorInputInvalid_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => import("effect/Cause").YieldableError & {
80
+ readonly _tag: "R2EmulatorInputInvalid";
81
+ } & Readonly<A>;
82
+ /** Thrown by `makeR2Emulator` (invalid seed) and `faults.add` (invalid fault). */
83
+ declare class R2EmulatorInputInvalid extends R2EmulatorInputInvalid_base<{
84
+ readonly input: 'seed' | 'fault';
85
+ readonly reason: string;
86
+ }> {
87
+ get message(): string;
88
+ }
89
+ /** Why a call failed closed. */
90
+ type R2EmulatorNotEmulatedReason = 'unknown-method' | 'invalid-request' | 'uncheckable-body' | 'credential-in-request' | 'uncheckable-request' | 'no-matching-fixture' | 'state-conflict';
91
+ /** The constant port, method, and request of a ledger entry that records nothing it received. */
92
+ declare const r2EmulatorRedacted = "<redacted>";
93
+ declare const r2EmulatorUnrecognised = "<unrecognised>";
94
+ /** One emulator answer; structurally the reply of a plain-JSON `R2Backend`. */
95
+ type R2EmulatorReply = {
96
+ readonly response: Schema.Json;
97
+ } | {
98
+ readonly failure: R2EmulatorFailure;
99
+ } | {
100
+ readonly notEmulated: {
101
+ readonly reason: string;
102
+ };
103
+ };
104
+ type R2EmulatorLedgerEntry = {
105
+ readonly seq: number; /** The port, or `<unrecognised>` for an `unknown-method` or `uncheckable-request` refusal. */
106
+ readonly port: string; /** The method, or `<unrecognised>` for an `unknown-method` or `uncheckable-request` refusal. */
107
+ readonly method: string;
108
+ /**
109
+ * For an answered or faulted call, the request without credential fields (a fixture request) with
110
+ * every `bodyBase64` value replaced by `<redacted>`; `<redacted>` whole for every refusal.
111
+ */
112
+ readonly request: Schema.Json; /** The decoded byte length of a recorded request's top-level `bodyBase64`. */
113
+ readonly bodyBytes?: number;
114
+ readonly outcome: 'answered' | 'fault' | 'not-emulated'; /** `unknown-method` for a call outside the manifest. */
115
+ readonly evidence: EmulatorEvidence | 'unknown-method';
116
+ readonly fixtureId?: string;
117
+ readonly faultId?: number;
118
+ readonly reason?: R2EmulatorNotEmulatedReason;
119
+ };
120
+ type R2EmulatorRouteCoverage = EmulatorRouteEvidence & {
121
+ /** Ledger calls to this route since the last ledger clear or reset. */readonly calls: number;
122
+ };
123
+ type R2EmulatorCoverage = {
124
+ readonly routes: ReadonlyArray<R2EmulatorRouteCoverage>; /** Ledger calls that failed closed. */
125
+ readonly notEmulatedCalls: number; /** Fixtures that have not answered a call since the emulator was made or last reset. */
126
+ readonly unusedFixtureIds: ReadonlyArray<string>;
127
+ };
128
+ type R2EmulatorOptions = {
129
+ /** The initial buckets. Defaults to `r2EmulatorDefaultSeed`. */readonly seed?: R2EmulatorSeed;
130
+ };
131
+ type R2Emulator = {
132
+ /** Answer one R2 port call; never throws. This makes the emulator an `R2Backend`. */readonly call: (port: string, method: string, request: Schema.Json) => R2EmulatorReply; /** The current buckets (a copy). */
133
+ readonly state: () => R2EmulatorSeed; /** The seed the emulator started from (a copy). */
134
+ readonly seed: () => R2EmulatorSeed;
135
+ readonly ledger: {
136
+ readonly entries: () => ReadonlyArray<R2EmulatorLedgerEntry>;
137
+ readonly clear: () => void;
138
+ }; /** Clear the ledger and faults, forget fixture use, and restore the seeded buckets. */
139
+ readonly reset: () => void;
140
+ readonly faults: {
141
+ readonly add: (fault: R2EmulatorFault) => R2EmulatorFaultState;
142
+ readonly list: () => ReadonlyArray<R2EmulatorFaultState>;
143
+ readonly clear: () => void;
144
+ };
145
+ readonly coverage: () => R2EmulatorCoverage;
146
+ };
147
+ /**
148
+ * Create an R2 emulator. Each call has its own buckets, ledger, faults, and fixture use.
149
+ *
150
+ * `call(port, method, request)` answers in this order: a port and method outside the manifest
151
+ * (`unknown-method`), a non-object request or one with an own `__proto__` key (`invalid-request`),
152
+ * a `bodyBase64` that is not canonical base64 of UTF-8 text (`uncheckable-body`), or a credential
153
+ * outside the credential fields (`credential-in-request`) fails closed; otherwise the fixtures
154
+ * whose port, method, and credential-free request match are checked against the buckets, and the
155
+ * first consistent one (preferring one not used since the last reset) is chosen; no match
156
+ * (`no-matching-fixture`) or no consistent match (`state-conflict`) fails closed. Only then does
157
+ * the first active matching fault answer its failure (changing nothing); otherwise the chosen
158
+ * fixture answers and updates the buckets. Every refusal is ledgered with constant text only; a
159
+ * request the checks cannot walk is refused as `uncheckable-request`, so `call` never throws.
160
+ *
161
+ * Throws `R2EmulatorInputInvalid` for an invalid seed.
162
+ */
163
+ declare const makeR2Emulator: (options?: R2EmulatorOptions) => R2Emulator;
164
+ //#endregion
165
+ export { type EmulatorEvidence, type EmulatorRouteEvidence, R2Emulator, R2EmulatorBucket, R2EmulatorCoverage, type R2EmulatorFailure, R2EmulatorFault, R2EmulatorFaultState, type R2EmulatorFixture, R2EmulatorInputInvalid, R2EmulatorLedgerEntry, R2EmulatorNotEmulatedReason, R2EmulatorObject, R2EmulatorOptions, R2EmulatorReply, R2EmulatorRouteCoverage, R2EmulatorSeed, makeR2Emulator, r2EmulatorDefaultSeed, r2EmulatorFixtures, r2EmulatorObjectClientPort, r2EmulatorPresignerPort, r2EmulatorRedacted, r2EmulatorRouteMethod, r2EmulatorRoutes, r2EmulatorUnrecognised };
166
+ //# sourceMappingURL=r2.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r2.d.mts","names":[],"sources":["../src/r2.ts"],"mappings":";;;;;AAqFA;AAAA,cAAa,uBAAA;;cAGA,0BAAA;AAHuB;AAAA,cAMvB,qBAAA;;;;AAH0B;AAGvC;;;cAoCa,gBAAA,EAAkB,aAAa,CAAC,qBAAA;AApCX;AAAA,cAyErB,gBAAA,EAAgB,MAAA,CAAA,MAAA;EAAA;;;;KAMjB,gBAAA,UAA0B,gBAAA,CAAiB,IAAI;AAAA,cAE9C,gBAAA,EAAgB,MAAA,CAAA,MAAA;EAAA;;;;;;;KAKjB,gBAAA,UAA0B,gBAAA,CAAiB,IAAI;;cAG9C,cAAA,EAAc,MAAA,CAAA,MAAA;EAAA;;;;;;;;;KAIf,cAAA,UAAwB,cAAA,CAAe,IAAI;AAdvD;;;;AAAA,cAoBa,qBAAA,EAAuB,cAanC;AA/BD;;;;;;AAAA,cA8Ca,eAAA,EAAe,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;KAShB,eAAA,UAAyB,eAAA,CAAgB,IAAI;AAAA,KAE7C,oBAAA;EAAA,SACD,EAAA;EAAA,SACA,KAAA,EAAO,eAAe;WAEtB,SAAA;EAAA,SACA,OAAA;AAAA;AAAA,cACV,2BAAA;;;;cAGY,sBAAA,SAA+B,2BAAA;EAAA,SACjC,KAAA;EAAA,SACA,MAAA;AAAA;EAAA,IAEI,OAAA,CAAA;AAAA;AAjE4C;AAAA,KAuE/C,2BAAA;;cAqBC,kBAAA;AAAA,cAEA,sBAAA;;KAGD,eAAA;EAAA,SACG,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA;EAAA,SACjB,OAAA,EAAS,iBAAiB;AAAA;EAAA,SAC1B,WAAA;IAAA,SAAwB,MAAA;EAAA;AAAA;AAAA,KAE3B,qBAAA;EAAA,SACD,GAAA;WAEA,IAAA;WAEA,MAAA;;;;;WAKA,OAAA,EAAS,MAAA,CAAO,IAAA;WAEhB,SAAA;EAAA,SACA,OAAA;WAEA,QAAA,EAAU,gBAAA;EAAA,SACV,SAAA;EAAA,SACA,OAAA;EAAA,SACA,MAAA,GAAS,2BAAA;AAAA;AAAA,KAGR,uBAAA,GAA0B,qBAAqB;kFAEhD,KAAK;AAAA;AAAA,KAGJ,kBAAA;EAAA,SACD,MAAA,EAAQ,aAAA,CAAc,uBAAA,GA1HrB;EAAA,SA4HD,gBAAA;WAEA,gBAAA,EAAkB,aAAA;AAAA;AAAA,KAGjB,iBAAA;EA9GX,yEAgHU,IAAA,GAAO,cAAc;AAAA;AAAA,KAGpB,UAAA;EApGC,8FAsGF,IAAA,GAAO,IAAA,UAAc,MAAA,UAAgB,OAAA,EAAS,MAAA,CAAO,IAAA,KAAS,eAAA;WAE9D,KAAA,QAAa,cAAA;WAEb,IAAA,QAAY,cAAA;EAAA,SACZ,MAAA;IAAA,SACE,OAAA,QAAe,aAAA,CAAc,qBAAA;IAAA,SAC7B,KAAA;EAAA;WAGF,KAAA;EAAA,SACA,MAAA;IAAA,SACE,GAAA,GAAM,KAAA,EAAO,eAAA,KAAoB,oBAAA;IAAA,SACjC,IAAA,QAAY,aAAA,CAAc,oBAAA;IAAA,SAC1B,KAAA;EAAA;EAAA,SAEF,QAAA,QAAgB,kBAAA;AAAA;;;;;;;;;;;;;;;;;cAuTd,cAAA,GAAkB,OAAA,GAAS,iBAAA,KAAyB,UAkPhE"}