@alwaysmeticulous/sdk-bundles-api 2.324.0 → 2.325.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,24 @@ export type MeticulousIORedisWrapper = <T>(client: T) => T;
28
28
  * across the bundle boundary.
29
29
  */
30
30
  export type MeticulousPostgresJsWrapper = <T>(sql: T) => T;
31
+ /**
32
+ * The kinds of Cloudflare binding the recorder captures. Normally inferred from the binding
33
+ * itself; name one explicitly when inference gets it wrong. `"skip"` leaves it untouched.
34
+ */
35
+ export type MeticulousCloudflareBindingKind = "kv" | "r2" | "queue" | "durable-object-namespace" | "fetcher" | "skip";
36
+ export interface MeticulousCloudflareEnvOptions {
37
+ /** Binding names to leave unrecorded, on top of the defaults (`ASSETS`, `__STATIC_CONTENT`). */
38
+ skipBindings?: readonly string[];
39
+ /** Overrides for the inferred binding kind, keyed by `env` key. */
40
+ bindings?: Readonly<Record<string, MeticulousCloudflareBindingKind>>;
41
+ }
42
+ /**
43
+ * Wraps a Cloudflare `env` so calls through its bindings are recorded (record mode) or served from
44
+ * recordings (replay mode), returning a shallow copy with each recognised binding replaced. Apply it
45
+ * at the request edge: `const env = handle.withMeticulousCloudflareEnv(context.cloudflare.env)`.
46
+ * Safe to call across the bundle boundary.
47
+ */
48
+ export type MeticulousCloudflareEnvWrapper = <TEnv extends object>(env: TEnv, options?: MeticulousCloudflareEnvOptions) => TEnv;
31
49
  /** Identifies one wrapped operation to the recorder. See {@link MeticulousOperationWrapper}. */
32
50
  export interface MeticulousOperationSpec {
33
51
  /**
@@ -196,6 +214,36 @@ export interface BackendRecorderHandle {
196
214
  * guard with `handle?.withMeticulousOperation`.
197
215
  */
198
216
  withMeticulousOperation?: MeticulousOperationWrapper;
217
+ /**
218
+ * The Meticulous Cloudflare `env` wrapper. Apply it at your request edge
219
+ * (`const env = handle.withMeticulousCloudflareEnv(context.cloudflare.env)`) so calls through
220
+ * your KV, R2, queue, Durable Object and service bindings are recorded (record mode) or served
221
+ * from recordings (replay mode).
222
+ *
223
+ * Required for an app that runs on **Node** with Cloudflare bindings — a React Router or
224
+ * TanStack Start dev server or container using `cloudflareDevProxy`, or anything else built on
225
+ * wrangler's `getPlatformProxy`. There each binding is a proxy object created per process: there
226
+ * is no module for a require hook to intercept and no prototype to patch, so handing us `env` is
227
+ * the only seam. (A deployed Worker records through `@alwaysmeticulous/backend-recorder-workerd`
228
+ * instead.)
229
+ *
230
+ * Returns a shallow copy of `env` with each recognised binding replaced by a wrapper; plain
231
+ * variables are passed through untouched. It dispatches per call, so it is safe to apply while
232
+ * building your request handler, and with the recorder disabled or uninitialised it returns `env`
233
+ * unchanged.
234
+ *
235
+ * Apply it **before any `env` wrapper of your own**. Outermost, a replayed call is served without
236
+ * your wrapper running at all; innermost, your wrapper still runs — emitting spans, retrying,
237
+ * mutating — around a call that never happens.
238
+ *
239
+ * Arguments and results are stored as JSON, so both must be JSON-serializable. R2 is a partial
240
+ * exception: its calls are recorded but still run for real during a replay, because what its
241
+ * operations return is a metadata handle that cannot be captured cheaply.
242
+ *
243
+ * Optional so older recorder bundles (which predate this field) still satisfy the type;
244
+ * guard with `handle?.withMeticulousCloudflareEnv`.
245
+ */
246
+ withMeticulousCloudflareEnv?: MeticulousCloudflareEnvWrapper;
199
247
  /**
200
248
  * Records a value into the session without stubbing anything — app state a replay should be
201
249
  * able to account for (resolved feature flags, a chosen experiment arm) that no call
@@ -1 +1 @@
1
- {"version":3,"file":"init-backend-recorder.d.ts","sourceRoot":"","sources":["../../../src/backend-recorder/bundle-to-sdk/init-backend-recorder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,cAAc,EAAE,CAAC,MAAM,EAAE;YACvB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,OAAO,CAAC;YACd,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SAC5C,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACxB,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D,gGAAgG;AAChG,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,EACzC,IAAI,EAAE,uBAAuB,EAC7B,EAAE,EAAE,MAAM,CAAC,KACR,CAAC,CAAC;AAEP;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,KACX,IAAI,CAAC;AAEV;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAEtD;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,wBAAwB,CAAC;IAEjD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,sBAAsB,CAAC,EAAE,2BAA2B,CAAC;IAErD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,uBAAuB,CAAC,EAAE,0BAA0B,CAAC;IAErD;;;;;;;;;;OAUG;IACH,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAE5D;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,uBAAuB,CAAC;CAChD"}
1
+ {"version":3,"file":"init-backend-recorder.d.ts","sourceRoot":"","sources":["../../../src/backend-recorder/bundle-to-sdk/init-backend-recorder.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,5 +14,5 @@ export { MeticulousPublicApi, MeticulousPressureObserver, MeticulousPressureObse
14
14
  export { MeticulousPrivateApi } from "./window-api/private-window-api";
15
15
  export { RunCrawlOptions, RunCrawlResult, } from "./crawler/sdk-to-bundle/run-crawl";
16
16
  export { BackendRecorderConfig } from "./backend-recorder/sdk-to-bundle/init-backend-recorder";
17
- export { BackendRecorderHandle, MeticulousPrismaExtension, MeticulousIORedisWrapper, MeticulousPostgresJsWrapper, MeticulousOperationSpec, MeticulousOperationWrapper, MeticulousObservationRecorder, } from "./backend-recorder/bundle-to-sdk/init-backend-recorder";
17
+ export { BackendRecorderHandle, MeticulousCloudflareBindingKind, MeticulousCloudflareEnvOptions, MeticulousCloudflareEnvWrapper, MeticulousPrismaExtension, MeticulousIORedisWrapper, MeticulousPostgresJsWrapper, MeticulousOperationSpec, MeticulousOperationWrapper, MeticulousObservationRecorder, } from "./backend-recorder/bundle-to-sdk/init-backend-recorder";
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,6BAA6B,EAC7B,eAAe,EACf,+BAA+B,EAC/B,sBAAsB,EACtB,uCAAuC,EACvC,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,kCAAkC,EAClC,oBAAoB,EACpB,kCAAkC,EAClC,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,mCAAmC,EAAE,MAAM,sEAAsE,CAAC;AAC3H,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qCAAqC,EACrC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,wDAAwD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,6BAA6B,EAC7B,eAAe,EACf,+BAA+B,EAC/B,sBAAsB,EACtB,uCAAuC,EACvC,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,kCAAkC,EAClC,oBAAoB,EACpB,kCAAkC,EAClC,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,mCAAmC,EAAE,MAAM,sEAAsE,CAAC;AAC3H,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qCAAqC,EACrC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,wDAAwD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwaysmeticulous/sdk-bundles-api",
3
- "version": "2.324.0",
3
+ "version": "2.325.0",
4
4
  "description": "Meticulous common types",
5
5
  "license": "ISC",
6
6
  "main": "dist/index.js",