@rotorsoft/act-ops 0.0.1 → 0.1.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.
package/README.md CHANGED
@@ -25,11 +25,24 @@ No peer dependencies. Drop it next to whatever framework — or no framework at
25
25
  ## Quick start
26
26
 
27
27
  ```ts
28
- import { InMemoryIdempotencyStore } from "@rotorsoft/act-ops";
28
+ import { InMemoryIdempotencyStore } from "@rotorsoft/act-ops/idempotency";
29
29
 
30
+ // Either set ttlMs explicitly…
30
31
  const dedup = new InMemoryIdempotencyStore({
31
- ttlMs: 24 * 60 * 60 * 1000, // dedup window (default: 24h)
32
- maxEntries: 50_000, // memory bound (default: 100_000)
32
+ ttlMs: 24 * 60 * 60 * 1000, // 24h covers any reasonable retry envelope
33
+ maxEntries: 50_000,
34
+ });
35
+
36
+ // …or describe the sender's retry profile and let the store size
37
+ // the dedup window correctly (per-retry backoff + per-attempt
38
+ // timeouts × default 4× safety factor; jitter honored).
39
+ const sized = new InMemoryIdempotencyStore({
40
+ retryProfile: {
41
+ maxRetries: 5,
42
+ backoff: { strategy: "exponential", baseMs: 200, maxMs: 30_000 },
43
+ timeoutMs: 2_000,
44
+ },
45
+ maxEntries: 50_000,
33
46
  });
34
47
 
35
48
  // In any receiver — tRPC, Express, Fastify, Hono, a Kafka consumer, …
@@ -43,11 +56,19 @@ await applyEventToAggregate(event);
43
56
 
44
57
  The in-memory implementation is sync; durable adapters (Postgres, Redis) return a `Promise<boolean>` — the port's union return type covers both, so the call site is identical.
45
58
 
46
- ## API
59
+ The `retryProfile` option captures the math that every receiver otherwise computes by hand and many get wrong — the dedup window has to outlast the sender's full retry envelope, otherwise a key expires before the sender finishes retrying and the side effect runs twice. Pass the sender's `{ maxRetries, backoff?, timeoutMs }` and the store sizes the window for you. The full math (per-retry sums per strategy, jitter worst-case 1.5×, default 4× safety factor) is documented inline on `RetryProfile` and worked through in the [external integration guide](https://rotorsoft.github.io/act-root/docs/guides/external-integration#ttl-sizing).
60
+
61
+ ## Subpath layout
62
+
63
+ The package follows a subpath-export-per-domain shape, matching `@rotorsoft/act-http`. All idempotency primitives ship from `@rotorsoft/act-ops/idempotency`; future domains (poison-message classifiers, retry-budget helpers, …) will land on their own subpaths (`@rotorsoft/act-ops/poison`, `@rotorsoft/act-ops/retry`). Each subpath is its own ESM/CJS entry — pay for what you import.
64
+
65
+ ## API — `@rotorsoft/act-ops/idempotency`
47
66
 
48
67
  - **`IdempotencyStore`** — the contract. One method, `claim(key, now?): boolean | Promise<boolean>`. Returns `true` when the key was fresh (and is now recorded), `false` when it was already present. Implementations should preserve records for at least the sender's full retry envelope.
49
68
  - **`InMemoryIdempotencyStore`** — bounded LRU + TTL reference implementation. Single-process only; for multi-process receivers swap for a durable adapter (Postgres unique index, Redis `SET NX`, …) without changing the call site.
50
- - **`InMemoryIdempotencyStoreOptions`** — TypeScript type for the constructor's options bag.
69
+ - **`InMemoryIdempotencyStoreOptions`** — `{ ttlMs?, retryProfile?, maxEntries? }`. Set `ttlMs` directly, or pass `retryProfile` and the store derives the safe window. When both are supplied, `ttlMs` wins.
70
+ - **`RetryProfile`** — `{ maxRetries, backoff?, timeoutMs, safetyFactor? }`. The sender's retry shape, used by `InMemoryIdempotencyStore` to derive its window. The `backoff` field is typed structurally inline so it accepts the framework's `BackoffOptions` without a cast — but this package doesn't reinvent or re-export the type, preserving the zero-act-dep property.
71
+ - **`minSafeTtl(profile): number`** — the derivation the in-memory store uses internally, exported for **adapter authors**. Durable adapters (e.g. the future `PostgresIdempotencyStore`) import this from `@rotorsoft/act-ops/idempotency` so every adapter applies the same math when given a `retryProfile` option. Application developers don't typically call this directly — they pass `retryProfile` to the store and let the store call it.
51
72
 
52
73
  ## Why a Store and not a Cache
53
74
 
package/dist/.tsbuildinfo CHANGED
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.full.d.ts","../src/idempotency/port.ts","../src/idempotency/in-memory.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.7/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.7/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.7/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.7/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/globals.d.ts"],"fileIdsList":[[66,71,135,143,147,150,152,153,154,166],[71,135,143,147,150,152,153,154,166],[66,67,71,135,143,147,150,152,153,154,166],[71,135,143,147,150,152,153,154,166,222,223],[71,132,133,135,143,147,150,152,153,154,166],[71,134,135,143,147,150,152,153,154,166],[135,143,147,150,152,153,154,166],[71,135,143,147,150,152,153,154,166,175],[71,135,136,141,143,146,147,150,152,153,154,156,166,171,184],[71,135,136,137,143,146,147,150,152,153,154,166],[71,135,138,143,147,150,152,153,154,166,185],[71,135,139,140,143,147,150,152,153,154,157,166],[71,135,140,143,147,150,152,153,154,166,171,181],[71,135,141,143,146,147,150,152,153,154,156,166],[71,134,135,142,143,147,150,152,153,154,166],[71,135,143,144,147,150,152,153,154,166],[71,135,143,145,146,147,150,152,153,154,166],[71,134,135,143,146,147,150,152,153,154,166],[71,135,143,146,147,148,150,152,153,154,166,171,184],[71,135,143,146,147,148,150,152,153,154,166,171,173,175],[71,122,135,143,146,147,149,150,152,153,154,156,166,171,184],[71,135,143,146,147,149,150,152,153,154,156,166,171,181,184],[71,135,143,147,149,150,151,152,153,154,166,171,181,184],[69,70,71,72,73,74,75,76,77,78,79,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[71,135,143,146,147,150,152,153,154,166],[71,135,143,147,150,152,154,166],[71,135,143,147,150,152,153,154,155,166,184],[71,135,143,146,147,150,152,153,154,156,166,171],[71,135,143,147,150,152,153,154,157,166],[71,135,143,147,150,152,153,154,158,166],[71,135,143,146,147,150,152,153,154,161,166],[71,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191],[71,135,143,147,150,152,153,154,163,166],[71,135,143,147,150,152,153,154,164,166],[71,135,140,143,147,150,152,153,154,156,166,175],[71,135,143,146,147,150,152,153,154,166,167],[71,135,143,147,150,152,153,154,166,168,185,188],[71,135,143,146,147,150,152,153,154,166,171,174,175],[71,135,143,147,150,152,153,154,166,172,175],[71,135,143,147,150,152,153,154,166,173],[71,135,143,147,150,152,153,154,166,175,185],[71,135,143,147,150,152,153,154,166,176],[71,132,135,143,147,150,152,153,154,166,171,178,184],[71,135,143,147,150,152,153,154,166,171,177],[71,135,143,146,147,150,152,153,154,166,179,180],[71,135,143,147,150,152,153,154,166,179,180],[71,135,140,143,147,150,152,153,154,156,166,171,181],[71,135,143,147,150,152,153,154,166,182],[71,135,143,147,150,152,153,154,156,166,183],[71,135,143,147,149,150,152,153,154,164,166,184],[71,135,143,147,150,152,153,154,166,185,186],[71,135,140,143,147,150,152,153,154,166,186],[71,135,143,147,150,152,153,154,166,171,187],[71,135,143,147,150,152,153,154,155,166,188],[71,135,143,147,150,152,153,154,166,189],[71,135,138,143,147,150,152,153,154,166],[71,135,140,143,147,150,152,153,154,166],[71,135,143,147,150,152,153,154,166,185],[71,122,135,143,147,150,152,153,154,166],[71,135,143,147,150,152,153,154,166,184],[71,135,143,147,150,152,153,154,166,190],[71,135,143,147,150,152,153,154,161,166],[71,135,143,147,150,152,153,154,166,180],[71,122,135,143,146,147,148,150,152,153,154,161,166,171,175,184,187,188,190],[71,135,143,147,150,152,153,154,166,171,191],[71,135,143,147,150,152,153,154,166,173,192],[71,135,143,147,150,152,153,154,166,195,201,219,220,221,224],[71,135,143,147,150,152,153,154,166,231],[71,135,143,147,150,152,153,154,166,231,232],[71,135,143,147,150,152,153,154,166,199,201,202],[71,135,143,147,150,152,153,154,166,199,201],[71,135,143,147,150,152,153,154,166,199],[71,135,143,147,150,152,153,154,166,194,199,210,211],[71,135,143,147,150,152,153,154,166,194,199,210],[71,135,143,147,150,152,153,154,166,218],[71,135,143,147,150,152,153,154,166,194,200],[71,135,143,147,150,152,153,154,166,194],[71,135,143,147,150,152,153,154,166,196],[71,135,143,147,150,152,153,154,166,194,195,196,197,198],[71,135,143,147,150,152,153,154,166,237,238],[71,135,143,147,150,152,153,154,166,237,238,239,240],[71,135,143,147,150,152,153,154,166,237,239],[71,135,143,147,150,152,153,154,166,237],[71,86,89,92,93,135,143,147,150,152,153,154,166,184],[71,89,135,143,147,150,152,153,154,166,171,184],[71,89,93,135,143,147,150,152,153,154,166,184],[71,135,143,147,150,152,153,154,166,171],[71,83,135,143,147,150,152,153,154,166],[71,87,135,143,147,150,152,153,154,166],[71,85,86,89,135,143,147,150,152,153,154,166,184],[71,135,143,147,150,152,153,154,156,166,181],[71,135,143,147,150,152,153,154,166,193],[71,83,135,143,147,150,152,153,154,166,193],[71,85,89,135,143,147,150,152,153,154,156,166,184],[71,80,81,82,84,88,135,143,146,147,150,152,153,154,166,171,184],[71,89,98,106,135,143,147,150,152,153,154,166],[71,81,87,135,143,147,150,152,153,154,166],[71,89,116,117,135,143,147,150,152,153,154,166],[71,81,84,89,135,143,147,150,152,153,154,166,175,184,193],[71,89,135,143,147,150,152,153,154,166],[71,85,89,135,143,147,150,152,153,154,166,184],[71,80,135,143,147,150,152,153,154,166],[71,83,84,85,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,135,143,147,150,152,153,154,166],[71,89,109,112,135,143,147,150,152,153,154,166],[71,89,98,99,100,135,143,147,150,152,153,154,166],[71,87,89,99,101,135,143,147,150,152,153,154,166],[71,88,135,143,147,150,152,153,154,166],[71,81,83,89,135,143,147,150,152,153,154,166],[71,89,93,99,101,135,143,147,150,152,153,154,166],[71,93,135,143,147,150,152,153,154,166],[71,87,89,92,135,143,147,150,152,153,154,166,184],[71,81,85,89,98,135,143,147,150,152,153,154,166],[71,89,109,135,143,147,150,152,153,154,166],[71,101,135,143,147,150,152,153,154,166],[71,81,85,89,93,135,143,147,150,152,153,154,166],[71,83,89,116,135,143,147,150,152,153,154,166,175,190,193],[71,135,143,147,150,152,153,154,166,205],[71,135,143,147,150,152,153,154,166,205,206,207,208],[71,135,143,147,150,152,153,154,166,207],[71,135,143,147,150,152,153,154,166,203,226,227,229],[71,135,143,147,150,152,153,154,166,203,204,216,229],[71,135,143,147,150,152,153,154,166,194,201,203,204,212,229],[71,135,143,147,150,152,153,154,166,209],[71,135,143,147,150,152,153,154,166,194,203,204,212,225,228,229],[71,135,143,147,150,152,153,154,166,203,204,209,212,229],[71,135,143,147,150,152,153,154,166,203,226,227,228,229],[71,135,143,147,150,152,153,154,166,203,209,213,214,215,229],[71,135,143,147,150,152,153,154,166,194,199,201,203,204,209,212,213,214,215,216,217,219,225,226,227,228,229,230,233,234,235,236,241],[71,135,143,147,150,152,153,154,166,194,201,203,204,212,213,226,227,228,229,234],[71,135,143,147,150,152,153,154,166,242]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"01a30f9e8582b369075c0808df71121e6855cb06fd8d3d39511d9ebb66405205","impliedFormat":1},{"version":"94f0fe7b5d334d6bb93ab88c1aeb6275782b75f3d8031071bdf7688ceff0b1e2","signature":"a9f7f2a340ef8d7b5982af1776cf0ac233504d970272ffd48b4b2e7d81b3d907","impliedFormat":99},{"version":"4095ec2ee880e89502eead2ba600b147e60b9f39aec7f7b50780d40db2d68e96","signature":"8ede654e7ac539c84b8addce8a998474f54a8113f79704f2f617c999a2845b9c","impliedFormat":99},{"version":"bc8bcdda5836c6ea4d226d6f6c94a704cfe17d7b90fe88022b6a4322d6475435","signature":"29d177a509be7acb00c1c00e644f2a29d74ced6a365f15f16066a117793a871b","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"719412f054e6ecc35489462c9a21bab0323d173a7d04e55b0ace4b5d86fbeb07","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"fac3e88881b35d3a757ed891ac912b2674792c25e2a1a74e1f5fbc72d19a9792","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"5e66972e83eb4dc7123939bf816e6cbd9ad81af5552db1cab84e6bd9c64d2ecc","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"de4a612aa8f1704af486f701e21993c786ba7d8cfed55fffa6684026aea2346e","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"8887e70871f697fa42ad7cdf32168db60ec2d6760c173c97973e35377fe5d83b","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"8d7cbeea0454e05a3cdf3370c5df267072c4f1dc6c48a45a9ad750d7890443d7","affectsGlobalScope":true,"impliedFormat":99}],"root":[[66,68]],"options":{"composite":true,"declaration":true,"declarationDir":"./@types","declarationMap":true,"emitDeclarationOnly":true,"erasableSyntaxOnly":true,"esModuleInterop":true,"module":199,"noUncheckedSideEffectImports":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[67,1],[66,2],[68,3],[221,2],[224,4],[222,2],[132,5],[133,5],[134,6],[71,7],[135,8],[136,9],[137,10],[69,2],[138,11],[139,12],[140,13],[141,14],[142,15],[143,16],[144,16],[145,17],[146,18],[147,19],[148,20],[72,2],[70,2],[149,21],[150,22],[151,23],[193,24],[152,25],[153,26],[154,25],[155,27],[156,28],[157,29],[158,30],[159,30],[160,30],[161,31],[162,32],[163,33],[164,34],[165,35],[166,36],[167,36],[168,37],[169,2],[170,2],[171,38],[172,39],[173,40],[174,38],[175,41],[176,42],[177,43],[178,44],[179,45],[180,46],[181,47],[182,48],[183,49],[184,50],[185,51],[186,52],[187,53],[188,54],[189,55],[73,25],[74,2],[75,56],[76,57],[77,2],[78,58],[79,2],[123,59],[124,60],[125,61],[126,61],[127,62],[128,2],[129,8],[130,63],[131,60],[190,64],[191,65],[192,66],[225,67],[232,68],[233,69],[231,2],[194,2],[203,70],[202,71],[226,70],[210,72],[212,73],[211,74],[219,75],[218,2],[201,76],[195,77],[197,78],[199,79],[198,2],[200,77],[196,2],[223,2],[239,80],[241,81],[240,82],[238,83],[237,2],[227,2],[220,2],[63,2],[64,2],[12,2],[10,2],[11,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[65,2],[57,2],[58,2],[60,2],[59,2],[61,2],[1,2],[62,2],[14,2],[13,2],[98,84],[111,85],[95,86],[112,87],[121,88],[86,89],[87,90],[85,91],[120,92],[115,93],[119,94],[89,95],[108,96],[88,97],[118,98],[83,99],[84,93],[90,100],[91,2],[97,101],[94,100],[81,102],[122,103],[113,104],[101,105],[100,100],[102,106],[105,107],[99,108],[103,109],[116,92],[92,110],[93,111],[106,112],[82,87],[110,113],[109,100],[96,111],[104,114],[107,115],[114,2],[80,2],[117,116],[206,117],[209,118],[207,117],[205,2],[208,119],[228,120],[217,121],[213,122],[214,72],[235,123],[229,124],[215,125],[234,126],[204,2],[216,127],[242,128],[236,129],[243,130],[230,2]],"latestChangedDtsFile":"./@types/index.d.ts","version":"6.0.3"}
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.full.d.ts","../src/idempotency/min-safe-ttl.ts","../src/idempotency/port.ts","../src/idempotency/in-memory.ts","../src/idempotency/index.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/.pnpm/@types+node@25.9.1/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.7/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.7/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.7/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.7/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.7/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.7/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.7/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.7_vite@8.0.14_@types+node@25.9.1_esbuild@0.27.2_jiti@2.6.1_terser@5.46.1_tsx@4.22.3_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.7_@types+node@25.9.1_@vitest+coverage-v8@4.1.7_vite@8.0.14_@types+node@25.9._80d5839fc632fdcd9de039dffc6761e7/node_modules/vitest/globals.d.ts"],"fileIdsList":[[66,67,72,136,144,148,151,153,154,155,167],[66,67,68,72,136,144,148,151,153,154,155,167],[72,136,144,148,151,153,154,155,167],[72,136,144,148,151,153,154,155,167,223,224],[72,133,134,136,144,148,151,153,154,155,167],[72,135,136,144,148,151,153,154,155,167],[136,144,148,151,153,154,155,167],[72,136,144,148,151,153,154,155,167,176],[72,136,137,142,144,147,148,151,153,154,155,157,167,172,185],[72,136,137,138,144,147,148,151,153,154,155,167],[72,136,139,144,148,151,153,154,155,167,186],[72,136,140,141,144,148,151,153,154,155,158,167],[72,136,141,144,148,151,153,154,155,167,172,182],[72,136,142,144,147,148,151,153,154,155,157,167],[72,135,136,143,144,148,151,153,154,155,167],[72,136,144,145,148,151,153,154,155,167],[72,136,144,146,147,148,151,153,154,155,167],[72,135,136,144,147,148,151,153,154,155,167],[72,136,144,147,148,149,151,153,154,155,167,172,185],[72,136,144,147,148,149,151,153,154,155,167,172,174,176],[72,123,136,144,147,148,150,151,153,154,155,157,167,172,185],[72,136,144,147,148,150,151,153,154,155,157,167,172,182,185],[72,136,144,148,150,151,152,153,154,155,167,172,182,185],[70,71,72,73,74,75,76,77,78,79,80,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[72,136,144,147,148,151,153,154,155,167],[72,136,144,148,151,153,155,167],[72,136,144,148,151,153,154,155,156,167,185],[72,136,144,147,148,151,153,154,155,157,167,172],[72,136,144,148,151,153,154,155,158,167],[72,136,144,148,151,153,154,155,159,167],[72,136,144,147,148,151,153,154,155,162,167],[72,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[72,136,144,148,151,153,154,155,164,167],[72,136,144,148,151,153,154,155,165,167],[72,136,141,144,148,151,153,154,155,157,167,176],[72,136,144,147,148,151,153,154,155,167,168],[72,136,144,148,151,153,154,155,167,169,186,189],[72,136,144,147,148,151,153,154,155,167,172,175,176],[72,136,144,148,151,153,154,155,167,173,176],[72,136,144,148,151,153,154,155,167,174],[72,136,144,148,151,153,154,155,167,176,186],[72,136,144,148,151,153,154,155,167,177],[72,133,136,144,148,151,153,154,155,167,172,179,185],[72,136,144,148,151,153,154,155,167,172,178],[72,136,144,147,148,151,153,154,155,167,180,181],[72,136,144,148,151,153,154,155,167,180,181],[72,136,141,144,148,151,153,154,155,157,167,172,182],[72,136,144,148,151,153,154,155,167,183],[72,136,144,148,151,153,154,155,157,167,184],[72,136,144,148,150,151,153,154,155,165,167,185],[72,136,144,148,151,153,154,155,167,186,187],[72,136,141,144,148,151,153,154,155,167,187],[72,136,144,148,151,153,154,155,167,172,188],[72,136,144,148,151,153,154,155,156,167,189],[72,136,144,148,151,153,154,155,167,190],[72,136,139,144,148,151,153,154,155,167],[72,136,141,144,148,151,153,154,155,167],[72,136,144,148,151,153,154,155,167,186],[72,123,136,144,148,151,153,154,155,167],[72,136,144,148,151,153,154,155,167,185],[72,136,144,148,151,153,154,155,167,191],[72,136,144,148,151,153,154,155,162,167],[72,136,144,148,151,153,154,155,167,181],[72,123,136,144,147,148,149,151,153,154,155,162,167,172,176,185,188,189,191],[72,136,144,148,151,153,154,155,167,172,192],[72,136,144,148,151,153,154,155,167,174,193],[72,136,144,148,151,153,154,155,167,196,202,220,221,222,225],[72,136,144,148,151,153,154,155,167,232],[72,136,144,148,151,153,154,155,167,232,233],[72,136,144,148,151,153,154,155,167,200,202,203],[72,136,144,148,151,153,154,155,167,200,202],[72,136,144,148,151,153,154,155,167,200],[72,136,144,148,151,153,154,155,167,195,200,211,212],[72,136,144,148,151,153,154,155,167,195,200,211],[72,136,144,148,151,153,154,155,167,219],[72,136,144,148,151,153,154,155,167,195,201],[72,136,144,148,151,153,154,155,167,195],[72,136,144,148,151,153,154,155,167,197],[72,136,144,148,151,153,154,155,167,195,196,197,198,199],[72,136,144,148,151,153,154,155,167,238,239],[72,136,144,148,151,153,154,155,167,238,239,240,241],[72,136,144,148,151,153,154,155,167,238,240],[72,136,144,148,151,153,154,155,167,238],[72,87,90,93,94,136,144,148,151,153,154,155,167,185],[72,90,136,144,148,151,153,154,155,167,172,185],[72,90,94,136,144,148,151,153,154,155,167,185],[72,136,144,148,151,153,154,155,167,172],[72,84,136,144,148,151,153,154,155,167],[72,88,136,144,148,151,153,154,155,167],[72,86,87,90,136,144,148,151,153,154,155,167,185],[72,136,144,148,151,153,154,155,157,167,182],[72,136,144,148,151,153,154,155,167,194],[72,84,136,144,148,151,153,154,155,167,194],[72,86,90,136,144,148,151,153,154,155,157,167,185],[72,81,82,83,85,89,136,144,147,148,151,153,154,155,167,172,185],[72,90,99,107,136,144,148,151,153,154,155,167],[72,82,88,136,144,148,151,153,154,155,167],[72,90,117,118,136,144,148,151,153,154,155,167],[72,82,85,90,136,144,148,151,153,154,155,167,176,185,194],[72,90,136,144,148,151,153,154,155,167],[72,86,90,136,144,148,151,153,154,155,167,185],[72,81,136,144,148,151,153,154,155,167],[72,84,85,86,88,89,90,91,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,118,119,120,121,122,136,144,148,151,153,154,155,167],[72,90,110,113,136,144,148,151,153,154,155,167],[72,90,99,100,101,136,144,148,151,153,154,155,167],[72,88,90,100,102,136,144,148,151,153,154,155,167],[72,89,136,144,148,151,153,154,155,167],[72,82,84,90,136,144,148,151,153,154,155,167],[72,90,94,100,102,136,144,148,151,153,154,155,167],[72,94,136,144,148,151,153,154,155,167],[72,88,90,93,136,144,148,151,153,154,155,167,185],[72,82,86,90,99,136,144,148,151,153,154,155,167],[72,90,110,136,144,148,151,153,154,155,167],[72,102,136,144,148,151,153,154,155,167],[72,82,86,90,94,136,144,148,151,153,154,155,167],[72,84,90,117,136,144,148,151,153,154,155,167,176,191,194],[72,136,144,148,151,153,154,155,167,206],[72,136,144,148,151,153,154,155,167,206,207,208,209],[72,136,144,148,151,153,154,155,167,208],[72,136,144,148,151,153,154,155,167,204,227,228,230],[72,136,144,148,151,153,154,155,167,204,205,217,230],[72,136,144,148,151,153,154,155,167,195,202,204,205,213,230],[72,136,144,148,151,153,154,155,167,210],[72,136,144,148,151,153,154,155,167,195,204,205,213,226,229,230],[72,136,144,148,151,153,154,155,167,204,205,210,213,230],[72,136,144,148,151,153,154,155,167,204,227,228,229,230],[72,136,144,148,151,153,154,155,167,204,210,214,215,216,230],[72,136,144,148,151,153,154,155,167,195,200,202,204,205,210,213,214,215,216,217,218,220,226,227,228,229,230,231,234,235,236,237,242],[72,136,144,148,151,153,154,155,167,195,202,204,205,213,214,227,228,229,230,235],[72,136,144,148,151,153,154,155,167,243]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"01a30f9e8582b369075c0808df71121e6855cb06fd8d3d39511d9ebb66405205","impliedFormat":1},{"version":"b46a75de449d307dbb4fbeb52cada176d092377489ff8fee064e7d523a4f5edf","signature":"c1fd36502ba4ba795867599039a526f9d6f2d8ee4c4eb7a6415add6328f36965","impliedFormat":99},{"version":"94f0fe7b5d334d6bb93ab88c1aeb6275782b75f3d8031071bdf7688ceff0b1e2","signature":"a9f7f2a340ef8d7b5982af1776cf0ac233504d970272ffd48b4b2e7d81b3d907","impliedFormat":99},{"version":"f34fcd685b918fd7e9d306aae9f7d94efac2bd41c323b0cf8a98ddd3f1a08906","signature":"66afb5ec408f758e329718dad7bdfcebe480c6249f6c2883676a39f0f8ffb0c6","impliedFormat":99},{"version":"1dda96b4029f6e7615ee44b40145588dd6f98a4cfa6943a0ac4f504cf9b5e1d8","signature":"c650bc675cf9a7ef004e2aac9a62ac241445c93ad529044491b7a095c1b522e9","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"719412f054e6ecc35489462c9a21bab0323d173a7d04e55b0ace4b5d86fbeb07","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"fac3e88881b35d3a757ed891ac912b2674792c25e2a1a74e1f5fbc72d19a9792","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"5e66972e83eb4dc7123939bf816e6cbd9ad81af5552db1cab84e6bd9c64d2ecc","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"de4a612aa8f1704af486f701e21993c786ba7d8cfed55fffa6684026aea2346e","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"8887e70871f697fa42ad7cdf32168db60ec2d6760c173c97973e35377fe5d83b","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"8d7cbeea0454e05a3cdf3370c5df267072c4f1dc6c48a45a9ad750d7890443d7","affectsGlobalScope":true,"impliedFormat":99}],"root":[[66,69]],"options":{"composite":true,"declaration":true,"declarationDir":"./@types","declarationMap":true,"emitDeclarationOnly":true,"erasableSyntaxOnly":true,"esModuleInterop":true,"module":199,"noUncheckedSideEffectImports":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[68,1],[69,2],[66,3],[67,3],[222,3],[225,4],[223,3],[133,5],[134,5],[135,6],[72,7],[136,8],[137,9],[138,10],[70,3],[139,11],[140,12],[141,13],[142,14],[143,15],[144,16],[145,16],[146,17],[147,18],[148,19],[149,20],[73,3],[71,3],[150,21],[151,22],[152,23],[194,24],[153,25],[154,26],[155,25],[156,27],[157,28],[158,29],[159,30],[160,30],[161,30],[162,31],[163,32],[164,33],[165,34],[166,35],[167,36],[168,36],[169,37],[170,3],[171,3],[172,38],[173,39],[174,40],[175,38],[176,41],[177,42],[178,43],[179,44],[180,45],[181,46],[182,47],[183,48],[184,49],[185,50],[186,51],[187,52],[188,53],[189,54],[190,55],[74,25],[75,3],[76,56],[77,57],[78,3],[79,58],[80,3],[124,59],[125,60],[126,61],[127,61],[128,62],[129,3],[130,8],[131,63],[132,60],[191,64],[192,65],[193,66],[226,67],[233,68],[234,69],[232,3],[195,3],[204,70],[203,71],[227,70],[211,72],[213,73],[212,74],[220,75],[219,3],[202,76],[196,77],[198,78],[200,79],[199,3],[201,77],[197,3],[224,3],[240,80],[242,81],[241,82],[239,83],[238,3],[228,3],[221,3],[63,3],[64,3],[12,3],[10,3],[11,3],[16,3],[15,3],[2,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[3,3],[25,3],[26,3],[4,3],[27,3],[31,3],[28,3],[29,3],[30,3],[32,3],[33,3],[34,3],[5,3],[35,3],[36,3],[37,3],[38,3],[6,3],[42,3],[39,3],[40,3],[41,3],[43,3],[7,3],[44,3],[49,3],[50,3],[45,3],[46,3],[47,3],[48,3],[8,3],[54,3],[51,3],[52,3],[53,3],[55,3],[9,3],[56,3],[65,3],[57,3],[58,3],[60,3],[59,3],[61,3],[1,3],[62,3],[14,3],[13,3],[99,84],[112,85],[96,86],[113,87],[122,88],[87,89],[88,90],[86,91],[121,92],[116,93],[120,94],[90,95],[109,96],[89,97],[119,98],[84,99],[85,93],[91,100],[92,3],[98,101],[95,100],[82,102],[123,103],[114,104],[102,105],[101,100],[103,106],[106,107],[100,108],[104,109],[117,92],[93,110],[94,111],[107,112],[83,87],[111,113],[110,100],[97,111],[105,114],[108,115],[115,3],[81,3],[118,116],[207,117],[210,118],[208,117],[206,3],[209,119],[229,120],[218,121],[214,122],[215,72],[236,123],[230,124],[216,125],[235,126],[205,3],[217,127],[243,128],[237,129],[244,130],[231,3]],"latestChangedDtsFile":"./@types/idempotency/index.d.ts","version":"6.0.3"}
@@ -1,23 +1,41 @@
1
+ import { type RetryProfile } from "./min-safe-ttl.js";
1
2
  import type { IdempotencyStore } from "./port.js";
2
3
  /**
3
- * Options for {@link InMemoryIdempotencyStore}. Both defaults are sized
4
+ * Options for {@link InMemoryIdempotencyStore}. Defaults are sized
4
5
  * for a single-process receiver paired with a sender using the
5
- * standard `webhook` backoff envelope (`exponential` up to `maxMs: 30_000`,
6
- * `maxRetries: 5`); larger envelopes should bump `ttlMs` accordingly
7
- * (see `computeMinSafeTtl` once #747 ships).
6
+ * standard `webhook` backoff envelope (`exponential` up to
7
+ * `maxMs: 30_000`, `maxRetries: 5`).
8
+ *
9
+ * The dedup window is set in one of two ways:
10
+ *
11
+ * - {@link ttlMs} — pass a number directly when you've already
12
+ * computed the window, or just want the 24-hour default that
13
+ * covers any reasonable sender retry envelope.
14
+ * - {@link retryProfile} — pass the sender's retry profile and the
15
+ * store derives the minimum safe window for you. The math
16
+ * (per-retry backoff sums, per-attempt timeouts, jitter
17
+ * worst-case 1.5×, default 4× safety factor) is hidden inside the
18
+ * store — see [external integration](https://rotorsoft.github.io/act-root/docs/guides/external-integration#ttl-sizing)
19
+ * for the math explained.
20
+ *
21
+ * When both are supplied, {@link ttlMs} wins — an explicit number
22
+ * overrides a derived one.
8
23
  */
9
24
  export type InMemoryIdempotencyStoreOptions = {
10
- /** Dedup window. Default: 24 hours. */
25
+ /** Direct dedup window. Default: 24 hours. */
11
26
  ttlMs?: number;
27
+ /** Sender's retry profile — used to derive `ttlMs` when not supplied. */
28
+ retryProfile?: RetryProfile;
12
29
  /** Memory bound — oldest entries are evicted past this size. Default: 100,000. */
13
30
  maxEntries?: number;
14
31
  };
15
32
  /**
16
33
  * Bounded LRU + TTL implementation of {@link IdempotencyStore} for
17
- * single-process receivers (the wolfdesk demo, integration tests, dev
18
- * loops). Multi-process receivers should swap for a durable adapter
19
- * (Postgres unique index, Redis `SET NX`) — the {@link IdempotencyStore}
20
- * contract stays the same so the call site doesn't change.
34
+ * single-process receivers (the wolfdesk demo, integration tests,
35
+ * dev loops). Multi-process receivers should swap for a durable
36
+ * adapter (Postgres unique index, Redis `SET NX`) — the
37
+ * {@link IdempotencyStore} contract stays the same so the call site
38
+ * doesn't change.
21
39
  *
22
40
  * Map iteration is insertion-ordered, so:
23
41
  * - The oldest entry sits at `keys().next().value` (cheapest to evict).
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/idempotency/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE,+BAA+B;IAKrD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO;IAarD,kEAAkE;IAClE,IAAI,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM;IAKtC,oCAAoC;IACpC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,GAAG;CAMZ"}
1
+ {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/idempotency/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE,+BAA+B;IASrD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO;IAarD,kEAAkE;IAClE,IAAI,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM;IAKtC,oCAAoC;IACpC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,GAAG;CAMZ"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module act-ops/idempotency
4
+ *
5
+ * Receiver-side idempotency primitives.
6
+ *
7
+ * - {@link IdempotencyStore} — port: atomically claim a key, report
8
+ * whether the caller is processing a fresh request or a duplicate.
9
+ * - {@link InMemoryIdempotencyStore} — bounded LRU + TTL reference
10
+ * implementation. Swap for a durable adapter (Postgres unique
11
+ * index, Redis `SET NX`) in multi-process receivers without
12
+ * changing the call site.
13
+ * - {@link minSafeTtl} — derives the minimum safe dedup window from
14
+ * the sender's retry profile. The math durable adapters and
15
+ * `InMemoryIdempotencyStore`'s `retryProfile` option both call.
16
+ * - {@link RetryProfile} — the sender's retry shape, used as input
17
+ * to `minSafeTtl` and as the `retryProfile` option on the store.
18
+ *
19
+ * Sibling subpaths (e.g. `@rotorsoft/act-ops/poison`,
20
+ * `@rotorsoft/act-ops/retry`) will host future operational primitives
21
+ * as they land. Each subpath is its own ESM/CJS entry — pay for what
22
+ * you import.
23
+ *
24
+ * The package has no runtime or peer dependency on `@rotorsoft/act`,
25
+ * so non-Act receivers (forwarded-bus consumers, framework-agnostic
26
+ * HTTP endpoints) can install `@rotorsoft/act-ops` and honor an
27
+ * `Idempotency-Key` without pulling in the orchestrator.
28
+ */
29
+ export { InMemoryIdempotencyStore, type InMemoryIdempotencyStoreOptions, } from "./in-memory.js";
30
+ export { minSafeTtl, type RetryProfile } from "./min-safe-ttl.js";
31
+ export type { IdempotencyStore } from "./port.js";
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/idempotency/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @module act-ops/idempotency/min-safe-ttl
3
+ *
4
+ * Internal math for sizing the dedup window of an
5
+ * {@link IdempotencyStore} from a sender's retry profile.
6
+ *
7
+ * **Not re-exported from the package root** by design — the math is
8
+ * an implementation detail of {@link InMemoryIdempotencyStore} (and
9
+ * any future durable adapter). Operators configure dedup windows
10
+ * through the store's `retryProfile` option, not by calling this
11
+ * function directly. Tests import it from this path; external
12
+ * consumers can't reach it.
13
+ */
14
+ /**
15
+ * A sender's retry behaviour, described in enough detail to size a
16
+ * receiver-side dedup window correctly. The `backoff` shape is typed
17
+ * inline structurally so it's assignable from `@rotorsoft/act`'s
18
+ * `BackoffOptions` without this package importing the framework
19
+ * (the zero-act-dep load-bearing constraint of `@rotorsoft/act-ops`).
20
+ * A caller holding `act.BackoffOptions` can pass it as `backoff`
21
+ * with no cast — TypeScript treats the two shapes as equivalent.
22
+ *
23
+ * @property maxRetries - Retries after the first attempt fails
24
+ * @property backoff - Optional backoff strategy. When omitted,
25
+ * retries fire back-to-back with only the per-attempt timeout
26
+ * between them
27
+ * @property timeoutMs - Per-attempt timeout (the sender's `fetch`
28
+ * timeout, or the equivalent for whatever transport)
29
+ * @property safetyFactor - Multiplier applied to the bare envelope.
30
+ * Default 4
31
+ */
32
+ export type RetryProfile = {
33
+ readonly maxRetries: number;
34
+ readonly backoff?: {
35
+ readonly strategy: "fixed" | "linear" | "exponential";
36
+ readonly baseMs: number;
37
+ readonly maxMs?: number;
38
+ readonly jitter?: boolean;
39
+ };
40
+ readonly timeoutMs: number;
41
+ readonly safetyFactor?: number;
42
+ };
43
+ /**
44
+ * Minimum safe TTL in milliseconds for a receiver-side
45
+ * {@link IdempotencyStore} window, given the sender's retry profile.
46
+ *
47
+ * The envelope is:
48
+ *
49
+ * ttl = (backoffSum + (maxRetries + 1) * timeoutMs) * safetyFactor
50
+ *
51
+ * where `backoffSum` is the sum of per-retry delays from the chosen
52
+ * `strategy`, multiplied by 1.5 if `jitter` is enabled (the
53
+ * worst-case multiplier in `[0.5, 1.5)`). `safetyFactor` defaults
54
+ * to 4 because operators almost always want headroom over the bare
55
+ * envelope — slow networks, clock skew, and incident-window retries
56
+ * stretch the real-world maximum past the computed one.
57
+ */
58
+ export declare function minSafeTtl(profile: RetryProfile): number;
59
+ //# sourceMappingURL=min-safe-ttl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-safe-ttl.d.ts","sourceRoot":"","sources":["../../../src/idempotency/min-safe-ttl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;QACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAKxD"}
@@ -17,12 +17,41 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- InMemoryIdempotencyStore: () => InMemoryIdempotencyStore
20
+ // src/idempotency/index.ts
21
+ var idempotency_exports = {};
22
+ __export(idempotency_exports, {
23
+ InMemoryIdempotencyStore: () => InMemoryIdempotencyStore,
24
+ minSafeTtl: () => minSafeTtl
24
25
  });
25
- module.exports = __toCommonJS(index_exports);
26
+ module.exports = __toCommonJS(idempotency_exports);
27
+
28
+ // src/idempotency/min-safe-ttl.ts
29
+ function minSafeTtl(profile) {
30
+ const safetyFactor = profile.safetyFactor ?? 4;
31
+ const backoffSum = sumBackoff(profile.maxRetries, profile.backoff);
32
+ const timeoutSum = (profile.maxRetries + 1) * profile.timeoutMs;
33
+ return (backoffSum + timeoutSum) * safetyFactor;
34
+ }
35
+ function sumBackoff(maxRetries, backoff) {
36
+ if (!backoff) return 0;
37
+ let sum = 0;
38
+ for (let retry = 0; retry < maxRetries; retry++) {
39
+ sum += delayFor(retry, backoff);
40
+ }
41
+ return backoff.jitter ? sum * 1.5 : sum;
42
+ }
43
+ function delayFor(retry, backoff) {
44
+ switch (backoff.strategy) {
45
+ case "fixed":
46
+ return backoff.baseMs;
47
+ case "linear":
48
+ return backoff.baseMs * (retry + 1);
49
+ case "exponential": {
50
+ const raw = backoff.baseMs * 2 ** retry;
51
+ return backoff.maxMs !== void 0 ? Math.min(raw, backoff.maxMs) : raw;
52
+ }
53
+ }
54
+ }
26
55
 
27
56
  // src/idempotency/in-memory.ts
28
57
  var InMemoryIdempotencyStore = class {
@@ -30,7 +59,7 @@ var InMemoryIdempotencyStore = class {
30
59
  _ttl_ms;
31
60
  _max_entries;
32
61
  constructor(options) {
33
- this._ttl_ms = options?.ttlMs ?? 24 * 60 * 60 * 1e3;
62
+ this._ttl_ms = options?.ttlMs ?? (options?.retryProfile !== void 0 ? minSafeTtl(options.retryProfile) : 24 * 60 * 60 * 1e3);
34
63
  this._max_entries = options?.maxEntries ?? 1e5;
35
64
  }
36
65
  claim(key, now = Date.now()) {
@@ -61,6 +90,7 @@ var InMemoryIdempotencyStore = class {
61
90
  };
62
91
  // Annotate the CommonJS export names for ESM import in node:
63
92
  0 && (module.exports = {
64
- InMemoryIdempotencyStore
93
+ InMemoryIdempotencyStore,
94
+ minSafeTtl
65
95
  });
66
96
  //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/idempotency/index.ts","../../src/idempotency/min-safe-ttl.ts","../../src/idempotency/in-memory.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module act-ops/idempotency\n *\n * Receiver-side idempotency primitives.\n *\n * - {@link IdempotencyStore} — port: atomically claim a key, report\n * whether the caller is processing a fresh request or a duplicate.\n * - {@link InMemoryIdempotencyStore} — bounded LRU + TTL reference\n * implementation. Swap for a durable adapter (Postgres unique\n * index, Redis `SET NX`) in multi-process receivers without\n * changing the call site.\n * - {@link minSafeTtl} — derives the minimum safe dedup window from\n * the sender's retry profile. The math durable adapters and\n * `InMemoryIdempotencyStore`'s `retryProfile` option both call.\n * - {@link RetryProfile} — the sender's retry shape, used as input\n * to `minSafeTtl` and as the `retryProfile` option on the store.\n *\n * Sibling subpaths (e.g. `@rotorsoft/act-ops/poison`,\n * `@rotorsoft/act-ops/retry`) will host future operational primitives\n * as they land. Each subpath is its own ESM/CJS entry — pay for what\n * you import.\n *\n * The package has no runtime or peer dependency on `@rotorsoft/act`,\n * so non-Act receivers (forwarded-bus consumers, framework-agnostic\n * HTTP endpoints) can install `@rotorsoft/act-ops` and honor an\n * `Idempotency-Key` without pulling in the orchestrator.\n */\n\nexport {\n InMemoryIdempotencyStore,\n type InMemoryIdempotencyStoreOptions,\n} from \"./in-memory.js\";\nexport { minSafeTtl, type RetryProfile } from \"./min-safe-ttl.js\";\nexport type { IdempotencyStore } from \"./port.js\";\n","/**\n * @module act-ops/idempotency/min-safe-ttl\n *\n * Internal math for sizing the dedup window of an\n * {@link IdempotencyStore} from a sender's retry profile.\n *\n * **Not re-exported from the package root** by design — the math is\n * an implementation detail of {@link InMemoryIdempotencyStore} (and\n * any future durable adapter). Operators configure dedup windows\n * through the store's `retryProfile` option, not by calling this\n * function directly. Tests import it from this path; external\n * consumers can't reach it.\n */\n\n/**\n * A sender's retry behaviour, described in enough detail to size a\n * receiver-side dedup window correctly. The `backoff` shape is typed\n * inline structurally so it's assignable from `@rotorsoft/act`'s\n * `BackoffOptions` without this package importing the framework\n * (the zero-act-dep load-bearing constraint of `@rotorsoft/act-ops`).\n * A caller holding `act.BackoffOptions` can pass it as `backoff`\n * with no cast — TypeScript treats the two shapes as equivalent.\n *\n * @property maxRetries - Retries after the first attempt fails\n * @property backoff - Optional backoff strategy. When omitted,\n * retries fire back-to-back with only the per-attempt timeout\n * between them\n * @property timeoutMs - Per-attempt timeout (the sender's `fetch`\n * timeout, or the equivalent for whatever transport)\n * @property safetyFactor - Multiplier applied to the bare envelope.\n * Default 4\n */\nexport type RetryProfile = {\n readonly maxRetries: number;\n readonly backoff?: {\n readonly strategy: \"fixed\" | \"linear\" | \"exponential\";\n readonly baseMs: number;\n readonly maxMs?: number;\n readonly jitter?: boolean;\n };\n readonly timeoutMs: number;\n readonly safetyFactor?: number;\n};\n\n/**\n * Minimum safe TTL in milliseconds for a receiver-side\n * {@link IdempotencyStore} window, given the sender's retry profile.\n *\n * The envelope is:\n *\n * ttl = (backoffSum + (maxRetries + 1) * timeoutMs) * safetyFactor\n *\n * where `backoffSum` is the sum of per-retry delays from the chosen\n * `strategy`, multiplied by 1.5 if `jitter` is enabled (the\n * worst-case multiplier in `[0.5, 1.5)`). `safetyFactor` defaults\n * to 4 because operators almost always want headroom over the bare\n * envelope — slow networks, clock skew, and incident-window retries\n * stretch the real-world maximum past the computed one.\n */\nexport function minSafeTtl(profile: RetryProfile): number {\n const safetyFactor = profile.safetyFactor ?? 4;\n const backoffSum = sumBackoff(profile.maxRetries, profile.backoff);\n const timeoutSum = (profile.maxRetries + 1) * profile.timeoutMs;\n return (backoffSum + timeoutSum) * safetyFactor;\n}\n\nfunction sumBackoff(\n maxRetries: number,\n backoff: RetryProfile[\"backoff\"]\n): number {\n if (!backoff) return 0;\n let sum = 0;\n for (let retry = 0; retry < maxRetries; retry++) {\n sum += delayFor(retry, backoff);\n }\n return backoff.jitter ? sum * 1.5 : sum;\n}\n\nfunction delayFor(\n retry: number,\n backoff: NonNullable<RetryProfile[\"backoff\"]>\n): number {\n switch (backoff.strategy) {\n case \"fixed\":\n return backoff.baseMs;\n case \"linear\":\n return backoff.baseMs * (retry + 1);\n case \"exponential\": {\n const raw = backoff.baseMs * 2 ** retry;\n return backoff.maxMs !== undefined ? Math.min(raw, backoff.maxMs) : raw;\n }\n }\n}\n","import { minSafeTtl, type RetryProfile } from \"./min-safe-ttl.js\";\nimport type { IdempotencyStore } from \"./port.js\";\n\n/**\n * Options for {@link InMemoryIdempotencyStore}. Defaults are sized\n * for a single-process receiver paired with a sender using the\n * standard `webhook` backoff envelope (`exponential` up to\n * `maxMs: 30_000`, `maxRetries: 5`).\n *\n * The dedup window is set in one of two ways:\n *\n * - {@link ttlMs} — pass a number directly when you've already\n * computed the window, or just want the 24-hour default that\n * covers any reasonable sender retry envelope.\n * - {@link retryProfile} — pass the sender's retry profile and the\n * store derives the minimum safe window for you. The math\n * (per-retry backoff sums, per-attempt timeouts, jitter\n * worst-case 1.5×, default 4× safety factor) is hidden inside the\n * store — see [external integration](https://rotorsoft.github.io/act-root/docs/guides/external-integration#ttl-sizing)\n * for the math explained.\n *\n * When both are supplied, {@link ttlMs} wins — an explicit number\n * overrides a derived one.\n */\nexport type InMemoryIdempotencyStoreOptions = {\n /** Direct dedup window. Default: 24 hours. */\n ttlMs?: number;\n /** Sender's retry profile — used to derive `ttlMs` when not supplied. */\n retryProfile?: RetryProfile;\n /** Memory bound — oldest entries are evicted past this size. Default: 100,000. */\n maxEntries?: number;\n};\n\n/**\n * Bounded LRU + TTL implementation of {@link IdempotencyStore} for\n * single-process receivers (the wolfdesk demo, integration tests,\n * dev loops). Multi-process receivers should swap for a durable\n * adapter (Postgres unique index, Redis `SET NX`) — the\n * {@link IdempotencyStore} contract stays the same so the call site\n * doesn't change.\n *\n * Map iteration is insertion-ordered, so:\n * - The oldest entry sits at `keys().next().value` (cheapest to evict).\n * - GC walks until the first non-expired entry and stops.\n *\n * `claim` is sync; durable adapters return a `Promise<boolean>` —\n * both satisfy the union return type in the port.\n */\nexport class InMemoryIdempotencyStore implements IdempotencyStore {\n private readonly _seen = new Map<string, number>();\n private readonly _ttl_ms: number;\n private readonly _max_entries: number;\n\n constructor(options?: InMemoryIdempotencyStoreOptions) {\n this._ttl_ms =\n options?.ttlMs ??\n (options?.retryProfile !== undefined\n ? minSafeTtl(options.retryProfile)\n : 24 * 60 * 60 * 1000);\n this._max_entries = options?.maxEntries ?? 100_000;\n }\n\n claim(key: string, now: number = Date.now()): boolean {\n this._gc(now);\n if (this._seen.has(key)) return false;\n this._seen.set(key, now + this._ttl_ms);\n if (this._seen.size > this._max_entries) {\n // Safe by construction: `_seen.size > _max_entries >= 0` implies at\n // least one entry, so `.next().value` resolves to a string key.\n const oldest = this._seen.keys().next().value as string;\n this._seen.delete(oldest);\n }\n return true;\n }\n\n /** Number of entries currently tracked (post-GC at call time). */\n size(now: number = Date.now()): number {\n this._gc(now);\n return this._seen.size;\n }\n\n /** Drop every entry — test hook. */\n clear(): void {\n this._seen.clear();\n }\n\n private _gc(now: number): void {\n for (const [key, expiresAt] of this._seen) {\n if (expiresAt > now) break;\n this._seen.delete(key);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC2DO,SAAS,WAAW,SAA+B;AACxD,QAAM,eAAe,QAAQ,gBAAgB;AAC7C,QAAM,aAAa,WAAW,QAAQ,YAAY,QAAQ,OAAO;AACjE,QAAM,cAAc,QAAQ,aAAa,KAAK,QAAQ;AACtD,UAAQ,aAAa,cAAc;AACrC;AAEA,SAAS,WACP,YACA,SACQ;AACR,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,MAAM;AACV,WAAS,QAAQ,GAAG,QAAQ,YAAY,SAAS;AAC/C,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AACA,SAAO,QAAQ,SAAS,MAAM,MAAM;AACtC;AAEA,SAAS,SACP,OACA,SACQ;AACR,UAAQ,QAAQ,UAAU;AAAA,IACxB,KAAK;AACH,aAAO,QAAQ;AAAA,IACjB,KAAK;AACH,aAAO,QAAQ,UAAU,QAAQ;AAAA,IACnC,KAAK,eAAe;AAClB,YAAM,MAAM,QAAQ,SAAS,KAAK;AAClC,aAAO,QAAQ,UAAU,SAAY,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI;AAAA,IACtE;AAAA,EACF;AACF;;;AC5CO,IAAM,2BAAN,MAA2D;AAAA,EAC/C,QAAQ,oBAAI,IAAoB;AAAA,EAChC;AAAA,EACA;AAAA,EAEjB,YAAY,SAA2C;AACrD,SAAK,UACH,SAAS,UACR,SAAS,iBAAiB,SACvB,WAAW,QAAQ,YAAY,IAC/B,KAAK,KAAK,KAAK;AACrB,SAAK,eAAe,SAAS,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,KAAa,MAAc,KAAK,IAAI,GAAY;AACpD,SAAK,IAAI,GAAG;AACZ,QAAI,KAAK,MAAM,IAAI,GAAG,EAAG,QAAO;AAChC,SAAK,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACtC,QAAI,KAAK,MAAM,OAAO,KAAK,cAAc;AAGvC,YAAM,SAAS,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AACxC,WAAK,MAAM,OAAO,MAAM;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,KAAK,MAAc,KAAK,IAAI,GAAW;AACrC,SAAK,IAAI,GAAG;AACZ,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEQ,IAAI,KAAmB;AAC7B,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,OAAO;AACzC,UAAI,YAAY,IAAK;AACrB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,68 @@
1
+ // src/idempotency/min-safe-ttl.ts
2
+ function minSafeTtl(profile) {
3
+ const safetyFactor = profile.safetyFactor ?? 4;
4
+ const backoffSum = sumBackoff(profile.maxRetries, profile.backoff);
5
+ const timeoutSum = (profile.maxRetries + 1) * profile.timeoutMs;
6
+ return (backoffSum + timeoutSum) * safetyFactor;
7
+ }
8
+ function sumBackoff(maxRetries, backoff) {
9
+ if (!backoff) return 0;
10
+ let sum = 0;
11
+ for (let retry = 0; retry < maxRetries; retry++) {
12
+ sum += delayFor(retry, backoff);
13
+ }
14
+ return backoff.jitter ? sum * 1.5 : sum;
15
+ }
16
+ function delayFor(retry, backoff) {
17
+ switch (backoff.strategy) {
18
+ case "fixed":
19
+ return backoff.baseMs;
20
+ case "linear":
21
+ return backoff.baseMs * (retry + 1);
22
+ case "exponential": {
23
+ const raw = backoff.baseMs * 2 ** retry;
24
+ return backoff.maxMs !== void 0 ? Math.min(raw, backoff.maxMs) : raw;
25
+ }
26
+ }
27
+ }
28
+
29
+ // src/idempotency/in-memory.ts
30
+ var InMemoryIdempotencyStore = class {
31
+ _seen = /* @__PURE__ */ new Map();
32
+ _ttl_ms;
33
+ _max_entries;
34
+ constructor(options) {
35
+ this._ttl_ms = options?.ttlMs ?? (options?.retryProfile !== void 0 ? minSafeTtl(options.retryProfile) : 24 * 60 * 60 * 1e3);
36
+ this._max_entries = options?.maxEntries ?? 1e5;
37
+ }
38
+ claim(key, now = Date.now()) {
39
+ this._gc(now);
40
+ if (this._seen.has(key)) return false;
41
+ this._seen.set(key, now + this._ttl_ms);
42
+ if (this._seen.size > this._max_entries) {
43
+ const oldest = this._seen.keys().next().value;
44
+ this._seen.delete(oldest);
45
+ }
46
+ return true;
47
+ }
48
+ /** Number of entries currently tracked (post-GC at call time). */
49
+ size(now = Date.now()) {
50
+ this._gc(now);
51
+ return this._seen.size;
52
+ }
53
+ /** Drop every entry — test hook. */
54
+ clear() {
55
+ this._seen.clear();
56
+ }
57
+ _gc(now) {
58
+ for (const [key, expiresAt] of this._seen) {
59
+ if (expiresAt > now) break;
60
+ this._seen.delete(key);
61
+ }
62
+ }
63
+ };
64
+ export {
65
+ InMemoryIdempotencyStore,
66
+ minSafeTtl
67
+ };
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/idempotency/min-safe-ttl.ts","../../src/idempotency/in-memory.ts"],"sourcesContent":["/**\n * @module act-ops/idempotency/min-safe-ttl\n *\n * Internal math for sizing the dedup window of an\n * {@link IdempotencyStore} from a sender's retry profile.\n *\n * **Not re-exported from the package root** by design — the math is\n * an implementation detail of {@link InMemoryIdempotencyStore} (and\n * any future durable adapter). Operators configure dedup windows\n * through the store's `retryProfile` option, not by calling this\n * function directly. Tests import it from this path; external\n * consumers can't reach it.\n */\n\n/**\n * A sender's retry behaviour, described in enough detail to size a\n * receiver-side dedup window correctly. The `backoff` shape is typed\n * inline structurally so it's assignable from `@rotorsoft/act`'s\n * `BackoffOptions` without this package importing the framework\n * (the zero-act-dep load-bearing constraint of `@rotorsoft/act-ops`).\n * A caller holding `act.BackoffOptions` can pass it as `backoff`\n * with no cast — TypeScript treats the two shapes as equivalent.\n *\n * @property maxRetries - Retries after the first attempt fails\n * @property backoff - Optional backoff strategy. When omitted,\n * retries fire back-to-back with only the per-attempt timeout\n * between them\n * @property timeoutMs - Per-attempt timeout (the sender's `fetch`\n * timeout, or the equivalent for whatever transport)\n * @property safetyFactor - Multiplier applied to the bare envelope.\n * Default 4\n */\nexport type RetryProfile = {\n readonly maxRetries: number;\n readonly backoff?: {\n readonly strategy: \"fixed\" | \"linear\" | \"exponential\";\n readonly baseMs: number;\n readonly maxMs?: number;\n readonly jitter?: boolean;\n };\n readonly timeoutMs: number;\n readonly safetyFactor?: number;\n};\n\n/**\n * Minimum safe TTL in milliseconds for a receiver-side\n * {@link IdempotencyStore} window, given the sender's retry profile.\n *\n * The envelope is:\n *\n * ttl = (backoffSum + (maxRetries + 1) * timeoutMs) * safetyFactor\n *\n * where `backoffSum` is the sum of per-retry delays from the chosen\n * `strategy`, multiplied by 1.5 if `jitter` is enabled (the\n * worst-case multiplier in `[0.5, 1.5)`). `safetyFactor` defaults\n * to 4 because operators almost always want headroom over the bare\n * envelope — slow networks, clock skew, and incident-window retries\n * stretch the real-world maximum past the computed one.\n */\nexport function minSafeTtl(profile: RetryProfile): number {\n const safetyFactor = profile.safetyFactor ?? 4;\n const backoffSum = sumBackoff(profile.maxRetries, profile.backoff);\n const timeoutSum = (profile.maxRetries + 1) * profile.timeoutMs;\n return (backoffSum + timeoutSum) * safetyFactor;\n}\n\nfunction sumBackoff(\n maxRetries: number,\n backoff: RetryProfile[\"backoff\"]\n): number {\n if (!backoff) return 0;\n let sum = 0;\n for (let retry = 0; retry < maxRetries; retry++) {\n sum += delayFor(retry, backoff);\n }\n return backoff.jitter ? sum * 1.5 : sum;\n}\n\nfunction delayFor(\n retry: number,\n backoff: NonNullable<RetryProfile[\"backoff\"]>\n): number {\n switch (backoff.strategy) {\n case \"fixed\":\n return backoff.baseMs;\n case \"linear\":\n return backoff.baseMs * (retry + 1);\n case \"exponential\": {\n const raw = backoff.baseMs * 2 ** retry;\n return backoff.maxMs !== undefined ? Math.min(raw, backoff.maxMs) : raw;\n }\n }\n}\n","import { minSafeTtl, type RetryProfile } from \"./min-safe-ttl.js\";\nimport type { IdempotencyStore } from \"./port.js\";\n\n/**\n * Options for {@link InMemoryIdempotencyStore}. Defaults are sized\n * for a single-process receiver paired with a sender using the\n * standard `webhook` backoff envelope (`exponential` up to\n * `maxMs: 30_000`, `maxRetries: 5`).\n *\n * The dedup window is set in one of two ways:\n *\n * - {@link ttlMs} — pass a number directly when you've already\n * computed the window, or just want the 24-hour default that\n * covers any reasonable sender retry envelope.\n * - {@link retryProfile} — pass the sender's retry profile and the\n * store derives the minimum safe window for you. The math\n * (per-retry backoff sums, per-attempt timeouts, jitter\n * worst-case 1.5×, default 4× safety factor) is hidden inside the\n * store — see [external integration](https://rotorsoft.github.io/act-root/docs/guides/external-integration#ttl-sizing)\n * for the math explained.\n *\n * When both are supplied, {@link ttlMs} wins — an explicit number\n * overrides a derived one.\n */\nexport type InMemoryIdempotencyStoreOptions = {\n /** Direct dedup window. Default: 24 hours. */\n ttlMs?: number;\n /** Sender's retry profile — used to derive `ttlMs` when not supplied. */\n retryProfile?: RetryProfile;\n /** Memory bound — oldest entries are evicted past this size. Default: 100,000. */\n maxEntries?: number;\n};\n\n/**\n * Bounded LRU + TTL implementation of {@link IdempotencyStore} for\n * single-process receivers (the wolfdesk demo, integration tests,\n * dev loops). Multi-process receivers should swap for a durable\n * adapter (Postgres unique index, Redis `SET NX`) — the\n * {@link IdempotencyStore} contract stays the same so the call site\n * doesn't change.\n *\n * Map iteration is insertion-ordered, so:\n * - The oldest entry sits at `keys().next().value` (cheapest to evict).\n * - GC walks until the first non-expired entry and stops.\n *\n * `claim` is sync; durable adapters return a `Promise<boolean>` —\n * both satisfy the union return type in the port.\n */\nexport class InMemoryIdempotencyStore implements IdempotencyStore {\n private readonly _seen = new Map<string, number>();\n private readonly _ttl_ms: number;\n private readonly _max_entries: number;\n\n constructor(options?: InMemoryIdempotencyStoreOptions) {\n this._ttl_ms =\n options?.ttlMs ??\n (options?.retryProfile !== undefined\n ? minSafeTtl(options.retryProfile)\n : 24 * 60 * 60 * 1000);\n this._max_entries = options?.maxEntries ?? 100_000;\n }\n\n claim(key: string, now: number = Date.now()): boolean {\n this._gc(now);\n if (this._seen.has(key)) return false;\n this._seen.set(key, now + this._ttl_ms);\n if (this._seen.size > this._max_entries) {\n // Safe by construction: `_seen.size > _max_entries >= 0` implies at\n // least one entry, so `.next().value` resolves to a string key.\n const oldest = this._seen.keys().next().value as string;\n this._seen.delete(oldest);\n }\n return true;\n }\n\n /** Number of entries currently tracked (post-GC at call time). */\n size(now: number = Date.now()): number {\n this._gc(now);\n return this._seen.size;\n }\n\n /** Drop every entry — test hook. */\n clear(): void {\n this._seen.clear();\n }\n\n private _gc(now: number): void {\n for (const [key, expiresAt] of this._seen) {\n if (expiresAt > now) break;\n this._seen.delete(key);\n }\n }\n}\n"],"mappings":";AA2DO,SAAS,WAAW,SAA+B;AACxD,QAAM,eAAe,QAAQ,gBAAgB;AAC7C,QAAM,aAAa,WAAW,QAAQ,YAAY,QAAQ,OAAO;AACjE,QAAM,cAAc,QAAQ,aAAa,KAAK,QAAQ;AACtD,UAAQ,aAAa,cAAc;AACrC;AAEA,SAAS,WACP,YACA,SACQ;AACR,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,MAAM;AACV,WAAS,QAAQ,GAAG,QAAQ,YAAY,SAAS;AAC/C,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AACA,SAAO,QAAQ,SAAS,MAAM,MAAM;AACtC;AAEA,SAAS,SACP,OACA,SACQ;AACR,UAAQ,QAAQ,UAAU;AAAA,IACxB,KAAK;AACH,aAAO,QAAQ;AAAA,IACjB,KAAK;AACH,aAAO,QAAQ,UAAU,QAAQ;AAAA,IACnC,KAAK,eAAe;AAClB,YAAM,MAAM,QAAQ,SAAS,KAAK;AAClC,aAAO,QAAQ,UAAU,SAAY,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI;AAAA,IACtE;AAAA,EACF;AACF;;;AC5CO,IAAM,2BAAN,MAA2D;AAAA,EAC/C,QAAQ,oBAAI,IAAoB;AAAA,EAChC;AAAA,EACA;AAAA,EAEjB,YAAY,SAA2C;AACrD,SAAK,UACH,SAAS,UACR,SAAS,iBAAiB,SACvB,WAAW,QAAQ,YAAY,IAC/B,KAAK,KAAK,KAAK;AACrB,SAAK,eAAe,SAAS,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,KAAa,MAAc,KAAK,IAAI,GAAY;AACpD,SAAK,IAAI,GAAG;AACZ,QAAI,KAAK,MAAM,IAAI,GAAG,EAAG,QAAO;AAChC,SAAK,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACtC,QAAI,KAAK,MAAM,OAAO,KAAK,cAAc;AAGvC,YAAM,SAAS,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AACxC,WAAK,MAAM,OAAO,MAAM;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,KAAK,MAAc,KAAK,IAAI,GAAW;AACrC,SAAK,IAAI,GAAG;AACZ,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEQ,IAAI,KAAmB;AAC7B,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,OAAO;AACzC,UAAI,YAAY,IAAK;AACrB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rotorsoft/act-ops",
3
3
  "type": "module",
4
- "version": "0.0.1",
4
+ "version": "0.1.0",
5
5
  "description": "Operational primitives for act apps and act-independent receivers — idempotency, retry budgets, poison-message classifiers",
6
6
  "keywords": [
7
7
  "typescript",
@@ -25,14 +25,11 @@
25
25
  "files": [
26
26
  "dist"
27
27
  ],
28
- "main": "./dist/index.cjs",
29
- "module": "./dist/index.js",
30
- "types": "./dist/@types/index.d.ts",
31
28
  "exports": {
32
- ".": {
33
- "types": "./dist/@types/index.d.ts",
34
- "import": "./dist/index.js",
35
- "require": "./dist/index.cjs"
29
+ "./idempotency": {
30
+ "types": "./dist/@types/idempotency/index.d.ts",
31
+ "import": "./dist/idempotency/index.js",
32
+ "require": "./dist/idempotency/index.cjs"
36
33
  }
37
34
  },
38
35
  "sideEffects": false,
@@ -1,23 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- * @module act-ops
4
- *
5
- * Operational primitives for act apps and act-independent receivers.
6
- *
7
- * The package's first surface is the **receiver-side idempotency
8
- * contract**: an {@link IdempotencyStore} port plus an
9
- * {@link InMemoryIdempotencyStore} reference implementation. Both Act
10
- * apps and non-Act receivers (forwarded-bus consumers, framework-
11
- * agnostic HTTP endpoints) install `@rotorsoft/act-ops` to speak the
12
- * dedup contract — the package has no runtime or peer dependency on
13
- * `@rotorsoft/act`, so non-Act consumers don't pay for the orchestrator
14
- * just to honor an `Idempotency-Key`.
15
- *
16
- * Durable adapters (Postgres, Redis) implement the same port in their
17
- * own packages and slot in transparently. The framework-agnostic
18
- * receiver middleware (`#744`) consumes the port from here without
19
- * binding to a specific adapter.
20
- */
21
- export { InMemoryIdempotencyStore, type InMemoryIdempotencyStoreOptions, } from "./idempotency/in-memory.js";
22
- export type { IdempotencyStore } from "./idempotency/port.js";
23
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/idempotency/in-memory.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module act-ops\n *\n * Operational primitives for act apps and act-independent receivers.\n *\n * The package's first surface is the **receiver-side idempotency\n * contract**: an {@link IdempotencyStore} port plus an\n * {@link InMemoryIdempotencyStore} reference implementation. Both Act\n * apps and non-Act receivers (forwarded-bus consumers, framework-\n * agnostic HTTP endpoints) install `@rotorsoft/act-ops` to speak the\n * dedup contract — the package has no runtime or peer dependency on\n * `@rotorsoft/act`, so non-Act consumers don't pay for the orchestrator\n * just to honor an `Idempotency-Key`.\n *\n * Durable adapters (Postgres, Redis) implement the same port in their\n * own packages and slot in transparently. The framework-agnostic\n * receiver middleware (`#744`) consumes the port from here without\n * binding to a specific adapter.\n */\n\nexport {\n InMemoryIdempotencyStore,\n type InMemoryIdempotencyStoreOptions,\n} from \"./idempotency/in-memory.js\";\nexport type { IdempotencyStore } from \"./idempotency/port.js\";\n","import type { IdempotencyStore } from \"./port.js\";\n\n/**\n * Options for {@link InMemoryIdempotencyStore}. Both defaults are sized\n * for a single-process receiver paired with a sender using the\n * standard `webhook` backoff envelope (`exponential` up to `maxMs: 30_000`,\n * `maxRetries: 5`); larger envelopes should bump `ttlMs` accordingly\n * (see `computeMinSafeTtl` once #747 ships).\n */\nexport type InMemoryIdempotencyStoreOptions = {\n /** Dedup window. Default: 24 hours. */\n ttlMs?: number;\n /** Memory bound — oldest entries are evicted past this size. Default: 100,000. */\n maxEntries?: number;\n};\n\n/**\n * Bounded LRU + TTL implementation of {@link IdempotencyStore} for\n * single-process receivers (the wolfdesk demo, integration tests, dev\n * loops). Multi-process receivers should swap for a durable adapter\n * (Postgres unique index, Redis `SET NX`) — the {@link IdempotencyStore}\n * contract stays the same so the call site doesn't change.\n *\n * Map iteration is insertion-ordered, so:\n * - The oldest entry sits at `keys().next().value` (cheapest to evict).\n * - GC walks until the first non-expired entry and stops.\n *\n * `claim` is sync; durable adapters return a `Promise<boolean>` —\n * both satisfy the union return type in the port.\n */\nexport class InMemoryIdempotencyStore implements IdempotencyStore {\n private readonly _seen = new Map<string, number>();\n private readonly _ttl_ms: number;\n private readonly _max_entries: number;\n\n constructor(options?: InMemoryIdempotencyStoreOptions) {\n this._ttl_ms = options?.ttlMs ?? 24 * 60 * 60 * 1000;\n this._max_entries = options?.maxEntries ?? 100_000;\n }\n\n claim(key: string, now: number = Date.now()): boolean {\n this._gc(now);\n if (this._seen.has(key)) return false;\n this._seen.set(key, now + this._ttl_ms);\n if (this._seen.size > this._max_entries) {\n // Safe by construction: `_seen.size > _max_entries >= 0` implies at\n // least one entry, so `.next().value` resolves to a string key.\n const oldest = this._seen.keys().next().value as string;\n this._seen.delete(oldest);\n }\n return true;\n }\n\n /** Number of entries currently tracked (post-GC at call time). */\n size(now: number = Date.now()): number {\n this._gc(now);\n return this._seen.size;\n }\n\n /** Drop every entry — test hook. */\n clear(): void {\n this._seen.clear();\n }\n\n private _gc(now: number): void {\n for (const [key, expiresAt] of this._seen) {\n if (expiresAt > now) break;\n this._seen.delete(key);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC8BO,IAAM,2BAAN,MAA2D;AAAA,EAC/C,QAAQ,oBAAI,IAAoB;AAAA,EAChC;AAAA,EACA;AAAA,EAEjB,YAAY,SAA2C;AACrD,SAAK,UAAU,SAAS,SAAS,KAAK,KAAK,KAAK;AAChD,SAAK,eAAe,SAAS,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,KAAa,MAAc,KAAK,IAAI,GAAY;AACpD,SAAK,IAAI,GAAG;AACZ,QAAI,KAAK,MAAM,IAAI,GAAG,EAAG,QAAO;AAChC,SAAK,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACtC,QAAI,KAAK,MAAM,OAAO,KAAK,cAAc;AAGvC,YAAM,SAAS,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AACxC,WAAK,MAAM,OAAO,MAAM;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,KAAK,MAAc,KAAK,IAAI,GAAW;AACrC,SAAK,IAAI,GAAG;AACZ,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEQ,IAAI,KAAmB;AAC7B,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,OAAO;AACzC,UAAI,YAAY,IAAK;AACrB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AAAA,EACF;AACF;","names":[]}
package/dist/index.js DELETED
@@ -1,39 +0,0 @@
1
- // src/idempotency/in-memory.ts
2
- var InMemoryIdempotencyStore = class {
3
- _seen = /* @__PURE__ */ new Map();
4
- _ttl_ms;
5
- _max_entries;
6
- constructor(options) {
7
- this._ttl_ms = options?.ttlMs ?? 24 * 60 * 60 * 1e3;
8
- this._max_entries = options?.maxEntries ?? 1e5;
9
- }
10
- claim(key, now = Date.now()) {
11
- this._gc(now);
12
- if (this._seen.has(key)) return false;
13
- this._seen.set(key, now + this._ttl_ms);
14
- if (this._seen.size > this._max_entries) {
15
- const oldest = this._seen.keys().next().value;
16
- this._seen.delete(oldest);
17
- }
18
- return true;
19
- }
20
- /** Number of entries currently tracked (post-GC at call time). */
21
- size(now = Date.now()) {
22
- this._gc(now);
23
- return this._seen.size;
24
- }
25
- /** Drop every entry — test hook. */
26
- clear() {
27
- this._seen.clear();
28
- }
29
- _gc(now) {
30
- for (const [key, expiresAt] of this._seen) {
31
- if (expiresAt > now) break;
32
- this._seen.delete(key);
33
- }
34
- }
35
- };
36
- export {
37
- InMemoryIdempotencyStore
38
- };
39
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/idempotency/in-memory.ts"],"sourcesContent":["import type { IdempotencyStore } from \"./port.js\";\n\n/**\n * Options for {@link InMemoryIdempotencyStore}. Both defaults are sized\n * for a single-process receiver paired with a sender using the\n * standard `webhook` backoff envelope (`exponential` up to `maxMs: 30_000`,\n * `maxRetries: 5`); larger envelopes should bump `ttlMs` accordingly\n * (see `computeMinSafeTtl` once #747 ships).\n */\nexport type InMemoryIdempotencyStoreOptions = {\n /** Dedup window. Default: 24 hours. */\n ttlMs?: number;\n /** Memory bound — oldest entries are evicted past this size. Default: 100,000. */\n maxEntries?: number;\n};\n\n/**\n * Bounded LRU + TTL implementation of {@link IdempotencyStore} for\n * single-process receivers (the wolfdesk demo, integration tests, dev\n * loops). Multi-process receivers should swap for a durable adapter\n * (Postgres unique index, Redis `SET NX`) — the {@link IdempotencyStore}\n * contract stays the same so the call site doesn't change.\n *\n * Map iteration is insertion-ordered, so:\n * - The oldest entry sits at `keys().next().value` (cheapest to evict).\n * - GC walks until the first non-expired entry and stops.\n *\n * `claim` is sync; durable adapters return a `Promise<boolean>` —\n * both satisfy the union return type in the port.\n */\nexport class InMemoryIdempotencyStore implements IdempotencyStore {\n private readonly _seen = new Map<string, number>();\n private readonly _ttl_ms: number;\n private readonly _max_entries: number;\n\n constructor(options?: InMemoryIdempotencyStoreOptions) {\n this._ttl_ms = options?.ttlMs ?? 24 * 60 * 60 * 1000;\n this._max_entries = options?.maxEntries ?? 100_000;\n }\n\n claim(key: string, now: number = Date.now()): boolean {\n this._gc(now);\n if (this._seen.has(key)) return false;\n this._seen.set(key, now + this._ttl_ms);\n if (this._seen.size > this._max_entries) {\n // Safe by construction: `_seen.size > _max_entries >= 0` implies at\n // least one entry, so `.next().value` resolves to a string key.\n const oldest = this._seen.keys().next().value as string;\n this._seen.delete(oldest);\n }\n return true;\n }\n\n /** Number of entries currently tracked (post-GC at call time). */\n size(now: number = Date.now()): number {\n this._gc(now);\n return this._seen.size;\n }\n\n /** Drop every entry — test hook. */\n clear(): void {\n this._seen.clear();\n }\n\n private _gc(now: number): void {\n for (const [key, expiresAt] of this._seen) {\n if (expiresAt > now) break;\n this._seen.delete(key);\n }\n }\n}\n"],"mappings":";AA8BO,IAAM,2BAAN,MAA2D;AAAA,EAC/C,QAAQ,oBAAI,IAAoB;AAAA,EAChC;AAAA,EACA;AAAA,EAEjB,YAAY,SAA2C;AACrD,SAAK,UAAU,SAAS,SAAS,KAAK,KAAK,KAAK;AAChD,SAAK,eAAe,SAAS,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAM,KAAa,MAAc,KAAK,IAAI,GAAY;AACpD,SAAK,IAAI,GAAG;AACZ,QAAI,KAAK,MAAM,IAAI,GAAG,EAAG,QAAO;AAChC,SAAK,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACtC,QAAI,KAAK,MAAM,OAAO,KAAK,cAAc;AAGvC,YAAM,SAAS,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AACxC,WAAK,MAAM,OAAO,MAAM;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,KAAK,MAAc,KAAK,IAAI,GAAW;AACrC,SAAK,IAAI,GAAG;AACZ,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEQ,IAAI,KAAmB;AAC7B,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,OAAO;AACzC,UAAI,YAAY,IAAK;AACrB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AAAA,EACF;AACF;","names":[]}