@rotorsoft/act 0.5.0 → 0.5.1

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/dist/.tsbuildinfo CHANGED
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.full.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@24.0.3/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/pino-std-serializers@7.0.0/node_modules/pino-std-serializers/index.d.ts","../../../node_modules/.pnpm/sonic-boom@4.2.0/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/.pnpm/pino@9.7.0/node_modules/pino/pino.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/standard-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/util.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/versions.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/schemas.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/checks.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/errors.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/core.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/parse.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/regexes.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ar.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/az.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/be.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ca.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/cs.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/de.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/es.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fa.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fi.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fr.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fr-CA.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/he.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/hu.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/id.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/it.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ja.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/kh.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ko.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/mk.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ms.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/nl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/no.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ota.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ps.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/pl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/pt.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ru.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/sl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/sv.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ta.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/th.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/tr.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ua.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ur.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/vi.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/zh-CN.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/zh-TW.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/registries.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/doc.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/function.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/api.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/json-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/to-json-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/errors.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/parse.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/schemas.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/checks.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/compat.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/iso.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/coerce.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/external.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/index.d.ts","../src/types/schemas.ts","../src/types/action.ts","../src/types/errors.ts","../src/types/reaction.ts","../src/types/ports.ts","../src/types/registry.ts","../src/types/index.ts","../src/config.ts","../src/utils.ts","../src/adapters/InMemoryStore.ts","../src/ports.ts","../src/event-sourcing.ts","../src/act.ts","../src/act-builder.ts","../src/state-builder.ts","../src/index.ts","../../../node_modules/.pnpm/@types+chance@1.1.6/node_modules/@types/chance/index.d.ts","../../../node_modules/.pnpm/@types+minimist@1.2.5/node_modules/@types/minimist/index.d.ts"],"fileIdsList":[[68,113,238,244],[68,113,118,125,234,238,242,243],[68,113,234,238,240],[68,113,126,231,238,240],[68,113,118,234,238,240,242],[68,113,238,239,240,242,244,245,246],[68,113,166,238,239,241],[68,113,231,238],[68,113,231,232],[68,113,233],[68,113,232,233,234,235,236,237],[68,113,233,235],[68,113,231,233,235],[68,113,231],[68,113,231,238,239],[68,113],[68,110,113],[68,112,113],[113],[68,113,118,148],[68,113,114,119,125,126,133,145,156],[68,113,114,115,125,133],[68,113,116,157],[68,113,117,118,126,134],[68,113,118,145,153],[68,113,119,121,125,133],[68,112,113,120],[68,113,121,122],[68,113,123,125],[68,112,113,125],[68,113,125,126,127,145,156],[68,113,125,126,127,140,145,148],[68,108,113],[68,108,113,121,125,128,133,145,156],[68,113,125,126,128,129,133,145,153,156],[68,113,128,130,145,153,156],[66,67,68,109,110,111,112,113,114,115,116,117,118,119,120,121,122,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],[68,113,125,131],[68,113,132,156],[68,113,121,125,133,145],[68,113,134],[68,113,135],[68,112,113,136],[68,110,111,112,113,114,115,116,117,118,119,120,121,122,123,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],[68,113,138],[68,113,139],[68,113,125,140,141],[68,113,140,142,157,159],[68,113,125,145,146,148],[68,113,147,148],[68,113,145,146],[68,113,148],[68,113,149],[68,110,113,145],[68,113,125,151,152],[68,113,151,152],[68,113,118,133,145,153],[68,113,154],[68,113,133,155],[68,113,128,139,156],[68,113,118,157],[68,113,145,158],[68,113,132,159],[68,113,160],[68,113,125,127,136,145,148,156,158,159,161],[68,113,145,162],[68,113,128,163],[68,113,125,161,164,165],[68,113,125,163],[68,78,82,113,156],[68,78,113,145,156],[68,113,145],[68,73,113],[68,75,78,113,156],[68,113,133,153],[68,113,163],[68,73,113,163],[68,75,78,113,133,156],[68,70,71,72,74,77,113,125,145,156],[68,78,86,113],[68,71,76,113],[68,78,102,103,113],[68,71,74,78,113,148,156,163],[68,78,113],[68,70,113],[68,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,113],[68,78,95,98,113,121],[68,78,86,87,88,113],[68,76,78,87,89,113],[68,77,113],[68,71,73,78,113],[68,78,82,87,89,113],[68,82,113],[68,76,78,81,113,156],[68,71,75,78,86,113],[68,78,95,113],[68,73,78,102,113,148,161,163],[68,113,221],[68,113,221,224],[68,113,214,221,222,223,224,225,226,227,228],[68,113,229],[68,113,221,222],[68,113,221,223],[68,113,168,170,171,172,173],[68,113,168,170,172,173],[68,113,168,170,172],[68,113,168,170,171,173],[68,113,168,170,173],[68,113,168,169,170,171,172,173,174,175,214,215,216,217,218,219,220],[68,113,170,173],[68,113,167,168,169,171,172,173],[68,113,170,215,219],[68,113,170,171,172,173],[68,113,230],[68,113,172],[68,113,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"17fe9131bec653b07b0a1a8b99a830216e3e43fe0ea2605be318dc31777c8bbf","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"2472ef4c28971272a897fdb85d4155df022e1f5d9a474a526b8fc2ef598af94e","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"19851a6596401ca52d42117108d35e87230fc21593df5c4d3da7108526b6111c","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"40bfc70953be2617dc71979c14e9e99c5e65c940a4f1c9759ddb90b0f8ff6b1a","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"561c60d8bfe0fec2c08827d09ff039eca0c1f9b50ef231025e5a549655ed0298","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"f4b4faedc57701ae727d78ba4a83e466a6e3bdcbe40efbf913b17e860642897c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"59c893bb05d8d6da5c6b85b6670f459a66f93215246a92b6345e78796b86a9a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"938f94db8400d0b479626b9006245a833d50ce8337f391085fad4af540279567","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"12fb9c13f24845000d7bd9660d11587e27ef967cbd64bd9df19ae3e6aa9b52d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"9de8df30f620738193bd68ee503dc76e5f47fc426fe971cfbd89c109fd90b32e","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f32444438ecb1fa4519f6ec3977d69ce0e3acfa18b803e5cd725c204501f350","impliedFormat":1},{"version":"0ab3c844f1eb5a1d94c90edc346a25eb9d3943af7a7812f061bf2d627d8afac0","impliedFormat":1},{"version":"ecfb45485e692f3eb3d0aef6e460adeabf670cef2d07e361b2be20cecfd0046b","impliedFormat":1},{"version":"161f09445a8b4ba07f62ae54b27054e4234e7957062e34c6362300726dabd315","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"e6057f9e7b0c64d4527afeeada89f313f96a53291705f069a9193c18880578cb","impliedFormat":1},{"version":"3cdbad1bb6929fd0220715d7da689c0b69df42c8239036ff75afe4f2232222ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"237581f5ec4620a17e791d3bb79bad3af01e27a274dbee875ac9b0721a4fe97d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"e6d81b1f7ab11dc1b1ad7ad29fcfad6904419b36baf55ed5e80df48d56ac3aff","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b6b8e3736383a1d27e2592c484a940eeb37ec4808ba9e74dd57679b2453b5865","impliedFormat":1},{"version":"d6f36b683c59ac0d68a1d5ee906e578e2f5e9a285bca80ff95ce61cdc9ddcdeb","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"cd9c0ecbe36a3be0775bfc16ae30b95af2a4a1f10e7949ceab284c98750bcebd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2918b7c516051c30186a1055ebcdb3580522be7190f8a2fff4100ea714c7c366","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"d67fc92a91171632fc74f413ce42ff1aa7fbcc5a85b127101f7ec446d2039a1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d40e4631100dbc067268bce96b07d7aff7f28a541b1bfb7ef791c64a696b3d33","affectsGlobalScope":true,"impliedFormat":1},{"version":"64bc5859f99559a3587c031ec6862c671f6fdd54e61d43d8ffd02a9422092677","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"e4c653466d0497d87fa9ffd00e59a95f33bc1c1722c3f5c84dab2e950c18da70","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6dcc3b933e864e91d4bea94274ad69854d5d2a1311a4b0e20408a57af19e95d","impliedFormat":1},{"version":"a51f786b9f3c297668f8f322a6c58f85d84948ef69ade32069d5d63ec917221c","impliedFormat":1},{"version":"4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","impliedFormat":1},{"version":"9eb1d2dceae65d1c82fc6be7e9b6b19cf3ca93c364678611107362b6ad4d2d41","impliedFormat":1},{"version":"cf1dc1d2914dd0f9462bc04c394084304dff5196cce7b725029c792e4e622a5b","impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","impliedFormat":1},{"version":"6e4fde24e4d82d79eaff2daa7f5dffa79ba53de2a6b8aef76c178a5a370764bb","impliedFormat":1},{"version":"ef9b6279acc69002a779d0172916ef22e8be5de2d2469ff2f4bb019a21e89de2","impliedFormat":1},{"version":"12b8d97a20b0fb267b69c4a6be0dfad7c88851d2dcab6150aa4218f40efa45f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e86102dbab93227b2702cba0ba06cb638961394577dc28cd5b856f0184c3156","impliedFormat":1},{"version":"6c859096094c744d2dd7b733189293a5b2af535e15f7794e69a3b4288b70dcfc","impliedFormat":1},{"version":"915d51e1bcd9b06ab8c922360b3f74ffe70c2ab6264f759f2b3e5f4130df0149","impliedFormat":1},{"version":"716a022c6d311c8367d830d2839fe017699564de2d0f5446b4a6f3f022a5c0c6","impliedFormat":1},{"version":"c939cb12cb000b4ec9c3eca3fe7dee1fe373ccb801237631d9252bad10206d61","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"3b25e966fd93475d8ca2834194ea78321d741a21ca9d1f606b25ec99c1bbc29a","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"3b25e966fd93475d8ca2834194ea78321d741a21ca9d1f606b25ec99c1bbc29a","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"92d777bf731e4062397081e864fbc384054934ab64af7723dfbf1df21824db31","impliedFormat":1},{"version":"ee415a173162328db8ab33496db05790b7d6b4a48272ff4a6c35cf9540ac3a60","impliedFormat":1},{"version":"80e653fbbec818eecfe95d182dc65a1d107b343d970159a71922ac4491caa0af","impliedFormat":1},{"version":"f978b1b63ad690ff2a8f16d6f784acaa0ba0f4bcfc64211d79a2704de34f5913","impliedFormat":1},{"version":"00c7c66bbd6675c5bc24b58bac2f9cbdeb9f619b295813cabf780c08034cfaba","impliedFormat":1},{"version":"9078205849121a5d37a642949d687565498da922508eacb0e5a0c3de427f0ae5","impliedFormat":1},{"version":"0ce71e5ee7c489209494c14028e351ccb1ffe455187d98a889f8e07ae2458ef7","impliedFormat":1},{"version":"f5c8f2ef9603893e25ed86c7112cd2cc60d53e5387b9146c904bce3e707c55de","impliedFormat":1},{"version":"dc01facbb7d88bc5e2eabb7c6eee80a0241538d50a5c3b210fb745683faa1dab","impliedFormat":1},{"version":"5c5197a46686814821229b28e4cfd601ef0a32f2d2d29b9a99050bac0ab03c99","impliedFormat":1},{"version":"2f3a88381874ec5fd76116a07b4ec3ed2eb667d00cff57f4f21e58cc0e970ca8","impliedFormat":1},{"version":"2c6c3af3957e38e6a5190258a666a06893ba5a11e3501585243129afecefd037","impliedFormat":1},{"version":"13e5ea921d6f62171aab19f33a6690e3c6658eecd2e5672425e49ac30d4305e6","impliedFormat":1},{"version":"1e28020a23b28743d5bd708b9e4c7b75fdff606aa080fbaf5b8db3600d5c99cf","impliedFormat":1},{"version":"49e7f03e7e7288397725e823654fdfe61892bb5082f391057e61b9c4f1b54f16","impliedFormat":1},{"version":"7b368e9be7bfea145983add6818f4e9ad5d83e5cabc8f771211d77c0feb8db94","impliedFormat":1},{"version":"d49030b9a324bab9bcf9f663a70298391b0f5a25328409174d86617512bf3037","impliedFormat":1},{"version":"a4b634bb8c97cc700dbf165f3bb0095ec669042da72eaf28a7c5e2ddd98169ce","impliedFormat":1},{"version":"800c09376f5ffac165dc5311c57891205f15af33e5c009970db75243e9f69cfb","signature":"0b14867feaaeae448be083473b1b5df0a0a692c3ef91ce1d2b347c422c4d1e16","impliedFormat":99},{"version":"5133a1086286ed0f5f0caf5176b097f8e72dabe0e8d4b91953c79769d964c898","signature":"5a44272189a6f66ecb2d7f9cf15e1cd151ad7b6c39b3897319b0f60a6c81f663","impliedFormat":99},{"version":"9efb49778b0e9d5502738d82388d9a04c9e1fd77c362978fd856668e65f85e7c","signature":"61bcb4b093f688ed225729e71f127fd6c64929f7e2dc2a5007840f54bc5d83a8","impliedFormat":99},{"version":"e3ba908a01f024133519b26c26a7d3a41769a18869d8b1b92fb53fe6cd1d2fd2","signature":"a93c4488f7011222e5837f1351138881263cb667443a427f16469ce48fa9e742","impliedFormat":99},{"version":"157d540998dea1b41eec2b11b4248360483c5df322ba6d4b9954da99944d3215","signature":"01a1552926daf855790ab55f3115f8558c962efd9fc2edd80c98971a15be214e","impliedFormat":99},{"version":"c64377369f15d6fac7e4313b674a1684d2454ff68a959c3a5d2639b75695891d","signature":"eb8825d0b668ee7e15f5f7ff5e32ff65bdf570f1cba021504e595747a5c45cda","impliedFormat":99},{"version":"0b08054f567e43a80b1f7c6f67c4703bee77d6408a44aad7373e92f8dc751a45","signature":"dfd5f674dac0d1bb47d8576e8e52fa20688a04272df3e2ab9b55fcfb6ece67a3","impliedFormat":99},{"version":"7cc86ad7e59b188c6abb2917b4292e0f171500eec66bb66120bfda81924a20a2","signature":"9fe882a27e485fd4eb528a691ec7e8bb6e3145cf00aa9336284bb77ed449c61a","impliedFormat":99},{"version":"f23139e9c25ab73c4118a253ca19473bfe6f697120f8e8bd0a2f5f53519c1488","signature":"d5c6018db14d8b7b9030e8c942a1a0d336c55dd1c92d42d685aab4a79bb15aab","impliedFormat":99},{"version":"fe3a86dacdea57bfe7e26d2a2fb24809ca785131771d4c505eba35974b88835e","signature":"bf59e8859ba6d14263583442168c65737da9c028a78479b12fa85513957020e6","impliedFormat":99},{"version":"d516e1995acf56ab6b896632689cc058b8dc854f6f0fdad45243881a945a7f5d","signature":"e2c40f2b0bd38541c66e566503efc447078068e83d6667f284548cb43b0a1157","impliedFormat":99},{"version":"fa687108a783ac19710626b4d2af2caf4250dd97c653118434aa262406a90ba1","signature":"9124e586a8585e51453bcf4829167c0888333a51bf0e21e4fc53c173a9c9fcf0","impliedFormat":99},{"version":"1d8c157d4f5856a6192f13a5878d6e76cdbdef3bf028efef527608c78c7e7a56","signature":"b5c55391680d21cce00136d3ebf4787adba5302bbc3aaf2f0095a3eb5acdfcc4","impliedFormat":99},{"version":"96002d107bc010882de2db9c254c30e3fdf5ec32fa690e4662f75948a1bfff1b","signature":"e949e41005991c87f52ff6285b4d1146c2dcd53506c2504b8b9c10ea8b75d015","impliedFormat":99},{"version":"d8c3bf24cc832bfde446f0b171248f4f2596f0a7ef66c960fde04baeca1c84ea","signature":"c0321a84dca177f5371a1e362f7c3545a1b25b36456d0be546b90444c0fb99d4","impliedFormat":99},{"version":"0052d97153bb00d7e619f68333f0e274f92af426640f602ffe9c5b090101a83b","signature":"2f331a4ba596c9cbbcfa6d679d777f24dbd8b587b511c5f431a95e2c9613793f","impliedFormat":99},{"version":"feb553efca1022ce1540c01b1a2f218e37c38eb3c274a059539c48892ac4695c","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1}],"root":[[232,247]],"options":{"composite":true,"declaration":true,"declarationDir":"./@types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[245,1],[244,2],[241,3],[239,4],[243,5],[247,6],[242,7],[246,8],[233,9],[234,10],[238,11],[236,12],[235,10],[237,13],[232,14],[240,15],[248,16],[249,16],[110,17],[111,17],[112,18],[68,19],[113,20],[114,21],[115,22],[66,16],[116,23],[117,24],[118,25],[119,26],[120,27],[121,28],[122,28],[124,16],[123,29],[125,30],[126,31],[127,32],[109,33],[67,16],[128,34],[129,35],[130,36],[163,37],[131,38],[132,39],[133,40],[134,41],[135,42],[136,43],[137,44],[138,45],[139,46],[140,47],[141,47],[142,48],[143,16],[144,16],[145,49],[147,50],[146,51],[148,52],[149,53],[150,54],[151,55],[152,56],[153,57],[154,58],[155,59],[156,60],[157,61],[158,62],[159,63],[160,64],[161,65],[162,66],[69,16],[164,67],[166,68],[165,69],[63,16],[64,16],[12,16],[10,16],[11,16],[16,16],[15,16],[2,16],[17,16],[18,16],[19,16],[20,16],[21,16],[22,16],[23,16],[24,16],[3,16],[25,16],[26,16],[4,16],[27,16],[31,16],[28,16],[29,16],[30,16],[32,16],[33,16],[34,16],[5,16],[35,16],[36,16],[37,16],[38,16],[6,16],[42,16],[39,16],[40,16],[41,16],[43,16],[7,16],[44,16],[49,16],[50,16],[45,16],[46,16],[47,16],[48,16],[8,16],[54,16],[51,16],[52,16],[53,16],[55,16],[9,16],[56,16],[65,16],[57,16],[58,16],[60,16],[59,16],[1,16],[61,16],[62,16],[14,16],[13,16],[86,70],[97,71],[84,70],[98,72],[107,73],[76,74],[75,75],[106,76],[101,77],[105,78],[78,79],[94,80],[77,81],[104,82],[73,83],[74,77],[79,84],[80,16],[85,74],[83,84],[71,85],[108,86],[99,87],[89,88],[88,84],[90,89],[92,90],[87,91],[91,92],[102,76],[81,93],[82,94],[93,95],[72,72],[96,96],[95,84],[100,16],[70,16],[103,97],[225,98],[228,99],[226,99],[222,98],[229,100],[230,101],[227,99],[223,102],[224,103],[218,104],[171,105],[173,106],[216,16],[172,107],[217,108],[221,109],[219,16],[174,105],[175,16],[215,110],[170,111],[167,16],[220,112],[168,113],[169,16],[231,114],[176,115],[177,115],[178,115],[179,115],[180,115],[181,115],[182,115],[183,115],[184,115],[185,115],[187,115],[186,115],[188,115],[189,115],[190,115],[214,116],[191,115],[192,115],[193,115],[194,115],[195,115],[196,115],[197,115],[198,115],[199,115],[201,115],[200,115],[202,115],[203,115],[204,115],[205,115],[206,115],[207,115],[208,115],[209,115],[210,115],[211,115],[212,115],[213,115]],"latestChangedDtsFile":"./@types/index.d.ts","version":"5.8.3"}
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.full.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@24.0.4/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/pino-std-serializers@7.0.0/node_modules/pino-std-serializers/index.d.ts","../../../node_modules/.pnpm/sonic-boom@4.2.0/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/.pnpm/pino@9.7.0/node_modules/pino/pino.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/standard-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/util.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/versions.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/schemas.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/checks.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/errors.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/core.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/parse.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/regexes.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ar.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/az.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/be.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ca.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/cs.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/de.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/es.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fa.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fi.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fr.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/fr-CA.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/he.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/hu.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/id.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/it.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ja.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/kh.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ko.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/mk.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ms.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/nl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/no.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ota.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ps.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/pl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/pt.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ru.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/sl.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/sv.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ta.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/th.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/tr.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ua.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/ur.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/vi.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/zh-CN.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/zh-TW.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/locales/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/registries.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/doc.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/function.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/api.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/json-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/to-json-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/core/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/errors.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/parse.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/schemas.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/checks.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/compat.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/iso.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/coerce.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/external.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/classic/index.d.ts","../../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/types/v4/index.d.ts","../src/types/schemas.ts","../src/types/action.ts","../src/types/errors.ts","../src/types/reaction.ts","../src/types/ports.ts","../src/types/registry.ts","../src/types/index.ts","../src/config.ts","../src/utils.ts","../src/adapters/InMemoryStore.ts","../src/ports.ts","../src/event-sourcing.ts","../src/act.ts","../src/act-builder.ts","../src/state-builder.ts","../src/index.ts","../../../node_modules/.pnpm/@types+chance@1.1.7/node_modules/@types/chance/index.d.ts","../../../node_modules/.pnpm/@types+minimist@1.2.5/node_modules/@types/minimist/index.d.ts"],"fileIdsList":[[68,112,237,243],[68,112,117,124,233,237,241,242],[68,112,233,237,239,241],[68,112,125,230,237,239],[68,112,117,233,237,239,241],[68,112,237,238,239,241,243,244,245],[68,112,165,237,238,240],[68,112,230,237],[68,112,230,231],[68,112,232],[68,112,231,232,233,234,235,236],[68,112,232,234],[68,112,230,232,234],[68,112,230],[68,112,230,237,238],[68,112],[68,109,112],[68,111,112],[112],[68,112,117,147],[68,112,113,118,124,125,132,144,155],[68,112,113,114,124,132],[68,112,115,156],[68,112,116,117,125,133],[68,112,117,144,152],[68,112,118,120,124,132],[68,111,112,119],[68,112,120,121],[68,112,122,124],[68,111,112,124],[68,112,124,125,126,144,155],[68,112,124,125,126,139,144,147],[68,107,112],[68,107,112,120,124,127,132,144,155],[68,112,124,125,127,128,132,144,152,155],[68,112,127,129,144,152,155],[66,67,68,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,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],[68,112,124,130],[68,112,131,155],[68,112,120,124,132,144],[68,112,133],[68,112,134],[68,111,112,135],[68,109,110,111,112,113,114,115,116,117,118,119,120,121,122,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],[68,112,137],[68,112,138],[68,112,124,139,140],[68,112,139,141,156,158],[68,112,124,144,145,147],[68,112,146,147],[68,112,144,145],[68,112,147],[68,112,148],[68,109,112,144],[68,112,124,150,151],[68,112,150,151],[68,112,117,132,144,152],[68,112,153],[68,112,132,154],[68,112,127,138,155],[68,112,117,156],[68,112,144,157],[68,112,131,158],[68,112,159],[68,112,124,126,135,144,147,155,157,158,160],[68,112,144,161],[68,112,127,162],[68,112,124,160,163,164],[68,112,124,162],[68,77,81,112,155],[68,77,112,144,155],[68,112,144],[68,72,112],[68,74,77,112,155],[68,112,132,152],[68,112,162],[68,72,112,162],[68,74,77,112,132,155],[68,69,70,71,73,76,112,124,144,155],[68,77,85,112],[68,70,75,112],[68,77,101,102,112],[68,70,73,77,112,147,155,162],[68,77,112],[68,69,112],[68,72,73,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,102,103,104,105,106,112],[68,77,94,97,112,120],[68,77,85,86,87,112],[68,75,77,86,88,112],[68,76,112],[68,70,72,77,112],[68,77,81,86,88,112],[68,81,112],[68,75,77,80,112,155],[68,70,74,77,85,112],[68,77,94,112],[68,72,77,101,112,147,160,162],[68,112,220],[68,112,220,223],[68,112,213,220,221,222,223,224,225,226,227],[68,112,228],[68,112,220,221],[68,112,220,222],[68,112,167,169,170,171,172],[68,112,167,169,171,172],[68,112,167,169,171],[68,112,167,169,170,172],[68,112,167,169,172],[68,112,167,168,169,170,171,172,173,174,213,214,215,216,217,218,219],[68,112,169,172],[68,112,166,167,168,170,171,172],[68,112,169,214,218],[68,112,169,170,171,172],[68,112,229],[68,112,171],[68,112,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"17fe9131bec653b07b0a1a8b99a830216e3e43fe0ea2605be318dc31777c8bbf","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"2472ef4c28971272a897fdb85d4155df022e1f5d9a474a526b8fc2ef598af94e","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"19851a6596401ca52d42117108d35e87230fc21593df5c4d3da7108526b6111c","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"40bfc70953be2617dc71979c14e9e99c5e65c940a4f1c9759ddb90b0f8ff6b1a","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"561c60d8bfe0fec2c08827d09ff039eca0c1f9b50ef231025e5a549655ed0298","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"f4b4faedc57701ae727d78ba4a83e466a6e3bdcbe40efbf913b17e860642897c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"59c893bb05d8d6da5c6b85b6670f459a66f93215246a92b6345e78796b86a9a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"938f94db8400d0b479626b9006245a833d50ce8337f391085fad4af540279567","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"12fb9c13f24845000d7bd9660d11587e27ef967cbd64bd9df19ae3e6aa9b52d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"4ea4cb9f755b97e72fd2f42e2d9786baf9184a8625085a24dc7ea96734d5986b","impliedFormat":1},{"version":"bd1b3b48920e1bd6d52133f95153a5d94aa1b3555e5f30b2154336e52abd29bd","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f32444438ecb1fa4519f6ec3977d69ce0e3acfa18b803e5cd725c204501f350","impliedFormat":1},{"version":"0ab3c844f1eb5a1d94c90edc346a25eb9d3943af7a7812f061bf2d627d8afac0","impliedFormat":1},{"version":"ecfb45485e692f3eb3d0aef6e460adeabf670cef2d07e361b2be20cecfd0046b","impliedFormat":1},{"version":"161f09445a8b4ba07f62ae54b27054e4234e7957062e34c6362300726dabd315","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"e6057f9e7b0c64d4527afeeada89f313f96a53291705f069a9193c18880578cb","impliedFormat":1},{"version":"04d05a9e1a2bc190bb5401373ad04622b844b3383a199f1c480000f53a2cdb5c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"237581f5ec4620a17e791d3bb79bad3af01e27a274dbee875ac9b0721a4fe97d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"e6d81b1f7ab11dc1b1ad7ad29fcfad6904419b36baf55ed5e80df48d56ac3aff","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b6b8e3736383a1d27e2592c484a940eeb37ec4808ba9e74dd57679b2453b5865","impliedFormat":1},{"version":"d6f36b683c59ac0d68a1d5ee906e578e2f5e9a285bca80ff95ce61cdc9ddcdeb","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"cd9c0ecbe36a3be0775bfc16ae30b95af2a4a1f10e7949ceab284c98750bcebd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2918b7c516051c30186a1055ebcdb3580522be7190f8a2fff4100ea714c7c366","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"d67fc92a91171632fc74f413ce42ff1aa7fbcc5a85b127101f7ec446d2039a1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d40e4631100dbc067268bce96b07d7aff7f28a541b1bfb7ef791c64a696b3d33","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"e4c653466d0497d87fa9ffd00e59a95f33bc1c1722c3f5c84dab2e950c18da70","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6dcc3b933e864e91d4bea94274ad69854d5d2a1311a4b0e20408a57af19e95d","impliedFormat":1},{"version":"a51f786b9f3c297668f8f322a6c58f85d84948ef69ade32069d5d63ec917221c","impliedFormat":1},{"version":"4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","impliedFormat":1},{"version":"9eb1d2dceae65d1c82fc6be7e9b6b19cf3ca93c364678611107362b6ad4d2d41","impliedFormat":1},{"version":"cf1dc1d2914dd0f9462bc04c394084304dff5196cce7b725029c792e4e622a5b","impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","impliedFormat":1},{"version":"6e4fde24e4d82d79eaff2daa7f5dffa79ba53de2a6b8aef76c178a5a370764bb","impliedFormat":1},{"version":"ef9b6279acc69002a779d0172916ef22e8be5de2d2469ff2f4bb019a21e89de2","impliedFormat":1},{"version":"12b8d97a20b0fb267b69c4a6be0dfad7c88851d2dcab6150aa4218f40efa45f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e86102dbab93227b2702cba0ba06cb638961394577dc28cd5b856f0184c3156","impliedFormat":1},{"version":"6c859096094c744d2dd7b733189293a5b2af535e15f7794e69a3b4288b70dcfc","impliedFormat":1},{"version":"915d51e1bcd9b06ab8c922360b3f74ffe70c2ab6264f759f2b3e5f4130df0149","impliedFormat":1},{"version":"716a022c6d311c8367d830d2839fe017699564de2d0f5446b4a6f3f022a5c0c6","impliedFormat":1},{"version":"c939cb12cb000b4ec9c3eca3fe7dee1fe373ccb801237631d9252bad10206d61","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"3b25e966fd93475d8ca2834194ea78321d741a21ca9d1f606b25ec99c1bbc29a","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"3b25e966fd93475d8ca2834194ea78321d741a21ca9d1f606b25ec99c1bbc29a","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"7ceb8bc679a90951354f89379bc37228e7cf87b753069cd7b62310d5cbbe1f11","impliedFormat":1},{"version":"92d777bf731e4062397081e864fbc384054934ab64af7723dfbf1df21824db31","impliedFormat":1},{"version":"ee415a173162328db8ab33496db05790b7d6b4a48272ff4a6c35cf9540ac3a60","impliedFormat":1},{"version":"80e653fbbec818eecfe95d182dc65a1d107b343d970159a71922ac4491caa0af","impliedFormat":1},{"version":"f978b1b63ad690ff2a8f16d6f784acaa0ba0f4bcfc64211d79a2704de34f5913","impliedFormat":1},{"version":"00c7c66bbd6675c5bc24b58bac2f9cbdeb9f619b295813cabf780c08034cfaba","impliedFormat":1},{"version":"9078205849121a5d37a642949d687565498da922508eacb0e5a0c3de427f0ae5","impliedFormat":1},{"version":"0ce71e5ee7c489209494c14028e351ccb1ffe455187d98a889f8e07ae2458ef7","impliedFormat":1},{"version":"f5c8f2ef9603893e25ed86c7112cd2cc60d53e5387b9146c904bce3e707c55de","impliedFormat":1},{"version":"dc01facbb7d88bc5e2eabb7c6eee80a0241538d50a5c3b210fb745683faa1dab","impliedFormat":1},{"version":"5c5197a46686814821229b28e4cfd601ef0a32f2d2d29b9a99050bac0ab03c99","impliedFormat":1},{"version":"2f3a88381874ec5fd76116a07b4ec3ed2eb667d00cff57f4f21e58cc0e970ca8","impliedFormat":1},{"version":"2c6c3af3957e38e6a5190258a666a06893ba5a11e3501585243129afecefd037","impliedFormat":1},{"version":"13e5ea921d6f62171aab19f33a6690e3c6658eecd2e5672425e49ac30d4305e6","impliedFormat":1},{"version":"1e28020a23b28743d5bd708b9e4c7b75fdff606aa080fbaf5b8db3600d5c99cf","impliedFormat":1},{"version":"49e7f03e7e7288397725e823654fdfe61892bb5082f391057e61b9c4f1b54f16","impliedFormat":1},{"version":"7b368e9be7bfea145983add6818f4e9ad5d83e5cabc8f771211d77c0feb8db94","impliedFormat":1},{"version":"d49030b9a324bab9bcf9f663a70298391b0f5a25328409174d86617512bf3037","impliedFormat":1},{"version":"a4b634bb8c97cc700dbf165f3bb0095ec669042da72eaf28a7c5e2ddd98169ce","impliedFormat":1},{"version":"800c09376f5ffac165dc5311c57891205f15af33e5c009970db75243e9f69cfb","signature":"0b14867feaaeae448be083473b1b5df0a0a692c3ef91ce1d2b347c422c4d1e16","impliedFormat":99},{"version":"5133a1086286ed0f5f0caf5176b097f8e72dabe0e8d4b91953c79769d964c898","signature":"5a44272189a6f66ecb2d7f9cf15e1cd151ad7b6c39b3897319b0f60a6c81f663","impliedFormat":99},{"version":"9efb49778b0e9d5502738d82388d9a04c9e1fd77c362978fd856668e65f85e7c","signature":"61bcb4b093f688ed225729e71f127fd6c64929f7e2dc2a5007840f54bc5d83a8","impliedFormat":99},{"version":"e3ba908a01f024133519b26c26a7d3a41769a18869d8b1b92fb53fe6cd1d2fd2","signature":"a93c4488f7011222e5837f1351138881263cb667443a427f16469ce48fa9e742","impliedFormat":99},{"version":"157d540998dea1b41eec2b11b4248360483c5df322ba6d4b9954da99944d3215","signature":"01a1552926daf855790ab55f3115f8558c962efd9fc2edd80c98971a15be214e","impliedFormat":99},{"version":"c64377369f15d6fac7e4313b674a1684d2454ff68a959c3a5d2639b75695891d","signature":"eb8825d0b668ee7e15f5f7ff5e32ff65bdf570f1cba021504e595747a5c45cda","impliedFormat":99},{"version":"0b08054f567e43a80b1f7c6f67c4703bee77d6408a44aad7373e92f8dc751a45","signature":"dfd5f674dac0d1bb47d8576e8e52fa20688a04272df3e2ab9b55fcfb6ece67a3","impliedFormat":99},{"version":"d2e557063a2c5a0dea6b377dcf745bd21571b3eba771e0531d10ab1bce00737b","signature":"a3a283152a4c97d4d4a865aa4a1a2d149778006d774bb341bb6f6c36df6f5ac7","impliedFormat":99},{"version":"f23139e9c25ab73c4118a253ca19473bfe6f697120f8e8bd0a2f5f53519c1488","signature":"d5c6018db14d8b7b9030e8c942a1a0d336c55dd1c92d42d685aab4a79bb15aab","impliedFormat":99},{"version":"646894adbad36762fa032bcafc4dbd695a22ce29c6991a4afd35c3782af45b7b","signature":"bf59e8859ba6d14263583442168c65737da9c028a78479b12fa85513957020e6","impliedFormat":99},{"version":"d516e1995acf56ab6b896632689cc058b8dc854f6f0fdad45243881a945a7f5d","signature":"e2c40f2b0bd38541c66e566503efc447078068e83d6667f284548cb43b0a1157","impliedFormat":99},{"version":"fa687108a783ac19710626b4d2af2caf4250dd97c653118434aa262406a90ba1","signature":"9124e586a8585e51453bcf4829167c0888333a51bf0e21e4fc53c173a9c9fcf0","impliedFormat":99},{"version":"214904b60d5121cfd051d5caa25397f47fef1683c6b79590a72f9f5dde6d5981","signature":"b5c55391680d21cce00136d3ebf4787adba5302bbc3aaf2f0095a3eb5acdfcc4","impliedFormat":99},{"version":"96002d107bc010882de2db9c254c30e3fdf5ec32fa690e4662f75948a1bfff1b","signature":"e949e41005991c87f52ff6285b4d1146c2dcd53506c2504b8b9c10ea8b75d015","impliedFormat":99},{"version":"d8c3bf24cc832bfde446f0b171248f4f2596f0a7ef66c960fde04baeca1c84ea","signature":"c0321a84dca177f5371a1e362f7c3545a1b25b36456d0be546b90444c0fb99d4","impliedFormat":99},{"version":"0052d97153bb00d7e619f68333f0e274f92af426640f602ffe9c5b090101a83b","signature":"2f331a4ba596c9cbbcfa6d679d777f24dbd8b587b511c5f431a95e2c9613793f","impliedFormat":99},{"version":"d413d8a274a9d834fa6f3e228d17c14aa52248d96035741dbb7218a244e9caf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1}],"root":[[231,246]],"options":{"composite":true,"declaration":true,"declarationDir":"./@types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[244,1],[243,2],[240,3],[238,4],[242,5],[246,6],[241,7],[245,8],[232,9],[233,10],[237,11],[235,12],[234,10],[236,13],[231,14],[239,15],[247,16],[248,16],[109,17],[110,17],[111,18],[68,19],[112,20],[113,21],[114,22],[66,16],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[121,28],[123,16],[122,29],[124,30],[125,31],[126,32],[108,33],[67,16],[127,34],[128,35],[129,36],[162,37],[130,38],[131,39],[132,40],[133,41],[134,42],[135,43],[136,44],[137,45],[138,46],[139,47],[140,47],[141,48],[142,16],[143,16],[144,49],[146,50],[145,51],[147,52],[148,53],[149,54],[150,55],[151,56],[152,57],[153,58],[154,59],[155,60],[156,61],[157,62],[158,63],[159,64],[160,65],[161,66],[163,67],[165,68],[164,69],[63,16],[64,16],[12,16],[10,16],[11,16],[16,16],[15,16],[2,16],[17,16],[18,16],[19,16],[20,16],[21,16],[22,16],[23,16],[24,16],[3,16],[25,16],[26,16],[4,16],[27,16],[31,16],[28,16],[29,16],[30,16],[32,16],[33,16],[34,16],[5,16],[35,16],[36,16],[37,16],[38,16],[6,16],[42,16],[39,16],[40,16],[41,16],[43,16],[7,16],[44,16],[49,16],[50,16],[45,16],[46,16],[47,16],[48,16],[8,16],[54,16],[51,16],[52,16],[53,16],[55,16],[9,16],[56,16],[65,16],[57,16],[58,16],[60,16],[59,16],[1,16],[61,16],[62,16],[14,16],[13,16],[85,70],[96,71],[83,70],[97,72],[106,73],[75,74],[74,75],[105,76],[100,77],[104,78],[77,79],[93,80],[76,81],[103,82],[72,83],[73,77],[78,84],[79,16],[84,74],[82,84],[70,85],[107,86],[98,87],[88,88],[87,84],[89,89],[91,90],[86,91],[90,92],[101,76],[80,93],[81,94],[92,95],[71,72],[95,96],[94,84],[99,16],[69,16],[102,97],[224,98],[227,99],[225,99],[221,98],[228,100],[229,101],[226,99],[222,102],[223,103],[217,104],[170,105],[172,106],[215,16],[171,107],[216,108],[220,109],[218,16],[173,105],[174,16],[214,110],[169,111],[166,16],[219,112],[167,113],[168,16],[230,114],[175,115],[176,115],[177,115],[178,115],[179,115],[180,115],[181,115],[182,115],[183,115],[184,115],[186,115],[185,115],[187,115],[188,115],[189,115],[213,116],[190,115],[191,115],[192,115],[193,115],[194,115],[195,115],[196,115],[197,115],[198,115],[200,115],[199,115],[201,115],[202,115],[203,115],[204,115],[205,115],[206,115],[207,115],[208,115],[209,115],[210,115],[211,115],[212,115]],"latestChangedDtsFile":"./@types/index.d.ts","version":"5.8.3"}
@@ -1 +1 @@
1
- {"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B,KAAK,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9C;;;;;;;GAOG;AACH,qBAAa,GAAG,CACd,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO;aAyBC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3B,UAAU,EAAE,MAAM;IAxBpC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IACrD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO;IAK9C,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACpE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;IAM7D,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACrE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;gBAO5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAU,EAAE,MAAM;IAGpC;;;;;;;;;;;;OAYG;IACG,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EACxB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAClC,cAAc,UAAQ;IAcxB;;;;;;;;;;OAUG;IACG,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,OAAO,EAClE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,GAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAI5B;;;;;;OAMG;IACG,KAAK,CACT,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,GAChD,OAAO,CAAC;QACT,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAWF;;;;;;OAMG;YACW,MAAM;IA+BpB,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAwG/B"}
1
+ {"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B,KAAK,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9C;;;;;;;GAOG;AACH,qBAAa,GAAG,CACd,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO;aAyBC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3B,UAAU,EAAE,MAAM;IAxBpC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IACrD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO;IAK9C,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACpE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;IAM7D,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACrE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;gBAO5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAU,EAAE,MAAM;IAGpC;;;;;;;;;;;;OAYG;IACG,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EACxB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAClC,cAAc,UAAQ;IAcxB;;;;;;;;;;OAUG;IACG,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,OAAO,EAClE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,GAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAI5B;;;;;;OAMG;IACG,KAAK,CACT,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,GAChD,OAAO,CAAC;QACT,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAWF;;;;;;OAMG;YACW,MAAM;IA+BpB,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAyG/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryStore.d.ts","sourceRoot":"","sources":["../../../src/adapters/InMemoryStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AA+B3B;;;GAGG;AACH,qBAAa,aAAc,YAAW,KAAK;IAEzC,OAAO,CAAC,OAAO,CAA2C;IAE1D,OAAO,CAAC,QAAQ,CAA0C;IAEpD,OAAO;IAKP,IAAI;IAIJ,IAAI;IAKJ,KAAK,CAAC,CAAC,SAAS,OAAO,EAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAChD,KAAK,CAAC,EAAE,KAAK;IA8BT,MAAM,CAAC,CAAC,SAAS,OAAO,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3B,IAAI,EAAE,SAAS,EACf,eAAe,CAAC,EAAE,MAAM;IA4B1B;;OAEG;IACG,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,MAAM;;;;IAkBtC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAerB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE;CAI1B"}
1
+ {"version":3,"file":"InMemoryStore.d.ts","sourceRoot":"","sources":["../../../src/adapters/InMemoryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AA+B3B;;;GAGG;AACH,qBAAa,aAAc,YAAW,KAAK;IAEzC,OAAO,CAAC,OAAO,CAA2C;IAE1D,OAAO,CAAC,QAAQ,CAA0C;IAEpD,OAAO;IAKP,IAAI;IAIJ,IAAI;IAKJ,KAAK,CAAC,CAAC,SAAS,OAAO,EAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAChD,KAAK,CAAC,EAAE,KAAK;IA8BT,MAAM,CAAC,CAAC,SAAS,OAAO,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3B,IAAI,EAAE,SAAS,EACf,eAAe,CAAC,EAAE,MAAM;IA4B1B;;OAEG;IACG,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,MAAM;;;;IAqBtC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAerB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE;CAI1B"}
@@ -1,7 +1,6 @@
1
1
  import { z } from "zod/v4";
2
2
  /**
3
3
  * Configuration utilities for environment, logging, and package metadata.
4
- * Uses dotenv and zod for validation.
5
4
  */
6
5
  export declare const PackageSchema: z.ZodObject<{
7
6
  name: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAS3B;;;GAGG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;iBASxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAOpD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKd,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAgBhD,eAAO,MAAM,MAAM,QAAO,MAEzB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAS3B;;GAEG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;iBASxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAOpD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKd,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAgBhD,eAAO,MAAM,MAAM,QAAO,MAEzB,CAAC"}
package/dist/index.cjs CHANGED
@@ -374,7 +374,10 @@ var InMemoryStore = class {
374
374
  Number.MAX_SAFE_INTEGER
375
375
  ) : -1;
376
376
  const events = [];
377
- await this.query((e) => events.push(e), { after, limit });
377
+ await this.query((e) => e.name !== SNAP_EVENT && events.push(e), {
378
+ after,
379
+ limit
380
+ });
378
381
  return { streams: streams.map(({ stream }) => stream), events };
379
382
  }
380
383
  async lease(leases) {
@@ -674,14 +677,17 @@ var Act = class {
674
677
  );
675
678
  const resolved = new Set(streams);
676
679
  const correlated = /* @__PURE__ */ new Map();
677
- for (const event of events)
678
- for (const reaction of this.registry.events[event.name].reactions.values()) {
680
+ for (const event of events) {
681
+ const register = this.registry.events[event.name];
682
+ if (!register) continue;
683
+ for (const reaction of register.reactions.values()) {
679
684
  const stream = typeof reaction.resolver === "string" ? reaction.resolver : reaction.resolver(event);
680
685
  if (stream) {
681
686
  resolved.add(stream);
682
687
  (correlated.get(stream) || correlated.set(stream, []).get(stream)).push({ ...reaction, event });
683
688
  }
684
689
  }
690
+ }
685
691
  const last = events.at(-1).id;
686
692
  const leases = [...resolved.values()].map((stream) => ({
687
693
  by: (0, import_crypto2.randomUUID)(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/types/errors.ts","../src/types/schemas.ts","../src/types/index.ts","../src/utils.ts","../src/ports.ts","../src/adapters/InMemoryStore.ts","../src/act.ts","../src/event-sourcing.ts","../src/act-builder.ts","../src/state-builder.ts"],"sourcesContent":["import { config } from \"./config.js\";\nimport { disposeAndExit, logger } from \"./ports.js\";\n\n/**\n * @module act\n * Main entry point for the Act framework. Re-exports all core APIs.\n */\nexport * from \"./act-builder.js\";\nexport * from \"./act.js\";\nexport * from \"./ports.js\";\nexport * from \"./state-builder.js\";\nexport * from \"./types/index.js\";\nexport * from \"./utils.js\";\nexport { config };\n\n// exit on signals\nprocess.once(\"SIGINT\", async (arg?: any) => {\n logger.info(arg, \"SIGINT\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"SIGTERM\", async (arg?: any) => {\n logger.info(arg, \"SIGTERM\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"uncaughtException\", async (arg?: any) => {\n logger.error(arg, \"Uncaught Exception\");\n await disposeAndExit(\"ERROR\");\n});\nprocess.once(\"unhandledRejection\", async (arg?: any) => {\n logger.error(arg, \"Unhandled Rejection\");\n await disposeAndExit(\"ERROR\");\n});\n","import * as fs from \"node:fs\";\nimport { z } from \"zod/v4\";\nimport {\n Environment,\n Environments,\n LogLevel,\n LogLevels,\n} from \"./types/index.js\";\nimport { extend } from \"./utils.js\";\n\n/**\n * Configuration utilities for environment, logging, and package metadata.\n * Uses dotenv and zod for validation.\n */\n\nexport const PackageSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().min(1),\n author: z\n .object({ name: z.string().min(1), email: z.string().optional() })\n .or(z.string().min(1)),\n license: z.string().min(1),\n dependencies: z.record(z.string(), z.string()),\n});\nexport type Package = z.infer<typeof PackageSchema>;\n\nconst getPackage = (): Package => {\n const pkg = fs.readFileSync(\"package.json\");\n return JSON.parse(pkg.toString()) as Package;\n};\n\nconst BaseSchema = PackageSchema.extend({\n env: z.enum(Environments),\n logLevel: z.enum(LogLevels),\n logSingleLine: z.boolean(),\n sleepMs: z.number().int().min(0).max(5000),\n});\nexport type Config = z.infer<typeof BaseSchema>;\n\nconst { NODE_ENV, LOG_LEVEL, LOG_SINGLE_LINE, SLEEP_MS } = process.env;\n\nconst env = (NODE_ENV || \"development\") as Environment;\nconst logLevel = (LOG_LEVEL ||\n (NODE_ENV === \"test\"\n ? \"error\"\n : LOG_LEVEL === \"production\"\n ? \"info\"\n : \"trace\")) as LogLevel;\nconst logSingleLine = (LOG_SINGLE_LINE || \"true\") === \"true\";\nconst sleepMs = parseInt(NODE_ENV === \"test\" ? \"0\" : (SLEEP_MS ?? \"100\"));\n\nconst pkg = getPackage();\n\nexport const config = (): Config => {\n return extend({ ...pkg, env, logLevel, logSingleLine, sleepMs }, BaseSchema);\n};\n","import type { Message, Schema, Schemas, Target } from \"./action.js\";\n\n/**\n * Application error types\n * - `ERR_VALIDATION` schema validation error\n * - `ERR_INVARIANT` invariant validation error\n * - `ERR_CONCURRENCY` optimistic concurrency validation error on commits\n */\nexport const Errors = {\n ValidationError: \"ERR_VALIDATION\",\n InvariantError: \"ERR_INVARIANT\",\n ConcurrencyError: \"ERR_CONCURRENCY\",\n} as const;\n\nexport class ValidationError extends Error {\n constructor(\n public readonly target: string,\n public readonly payload: any,\n public readonly details: any\n ) {\n super(`Invalid ${target} payload`);\n this.name = Errors.ValidationError;\n }\n}\n\nexport class InvariantError extends Error {\n public readonly details;\n constructor(\n name: string,\n payload: Schema,\n target: Target,\n description: string\n ) {\n super(`${name} failed invariant: ${description}`);\n this.name = Errors.InvariantError;\n this.details = { name, payload, target, description };\n }\n}\n\nexport class ConcurrencyError extends Error {\n constructor(\n public readonly lastVersion: number,\n public readonly events: Message<Schemas, keyof Schemas>[],\n public readonly expectedVersion: number\n ) {\n super(\n `Concurrency error committing event \"${\n events.at(0)?.name\n }\". Expected version ${expectedVersion} but found version ${lastVersion}.`\n );\n this.name = Errors.ConcurrencyError;\n }\n}\n","import { z, ZodObject, ZodRawShape } from \"zod/v4\";\n\nexport const ZodEmpty = z.record(z.string(), z.never());\n\nexport const ActorSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n })\n .readonly();\n\nexport const TargetSchema = z\n .object({\n stream: z.string(),\n actor: ActorSchema,\n expectedVersion: z.number().optional(),\n })\n .readonly();\n\nexport const CausationEventSchema = z.object({\n id: z.number(),\n name: z.string(),\n stream: z.string(),\n});\n\nexport const EventMetaSchema = z\n .object({\n correlation: z.string(),\n causation: z.object({\n action: TargetSchema.and(z.object({ name: z.string() })).optional(),\n event: CausationEventSchema.optional(),\n }),\n })\n .readonly();\n\nexport const CommittedMetaSchema = z\n .object({\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n .readonly();\n\nexport type StateSchema = Readonly<{\n events: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n actions: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n state: ZodObject<ZodRawShape>;\n}>;\n\nexport function buildSnapshotSchema<S extends StateSchema>(s: S) {\n const events = Object.entries(s.events).map(([name, zod]) =>\n z.object({\n name: z.literal(name),\n data: zod,\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n );\n return z.object({\n state: s.state.readonly(),\n event: z.union([events[0], events[1], ...events.slice(2)]).optional(),\n patches: z.number(),\n snaps: z.number(),\n });\n}\n\n/**\n * Options to query the all stream\n * - `stream?` filter by stream\n * - `names?` filter by event names\n * - `before?` filter events before this id\n * - `after?` filter events after this id\n * - `limit?` limit the number of events to return\n * - `created_before?` filter events created before this date/time\n * - `created_after?` filter events created after this date/time\n * - `backward?` order descending when true\n * - `correlation?` filter by correlation\n * - `actor?` filter by actor id (mainly used to reduce process managers)\n * - `loading?` flag when loading to optimize queries\n */\nexport const QuerySchema = z.object({\n stream: z.string().optional(),\n names: z.string().array().optional(),\n before: z.number().optional(),\n after: z.number().optional(),\n limit: z.number().optional(),\n created_before: z.date().optional(),\n created_after: z.date().optional(),\n backward: z.boolean().optional(),\n correlation: z.string().optional(),\n});\n","export type * from \"./action.js\";\nexport * from \"./errors.js\";\nexport type * from \"./ports.js\";\nexport type * from \"./reaction.js\";\nexport type * from \"./registry.js\";\nexport * from \"./schemas.js\";\n\nexport const Environments = [\n \"development\",\n \"test\",\n \"staging\",\n \"production\",\n] as const;\nexport type Environment = (typeof Environments)[number];\n\nexport const LogLevels = [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n] as const;\nexport type LogLevel = (typeof LogLevels)[number];\n","import { ZodError, type ZodType, prettifyError } from \"zod/v4\";\nimport { config } from \"./config.js\";\nimport type { Patch, Schema } from \"./types/index.js\";\nimport { ValidationError } from \"./types/index.js\";\n\n/** These objects are copied instead of deep merged */\nconst UNMERGEABLES = [\n RegExp,\n Date,\n Array,\n Map,\n Set,\n WeakMap,\n WeakSet,\n ArrayBuffer,\n SharedArrayBuffer,\n DataView,\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n];\n\nconst is_mergeable = (value: any): boolean =>\n !!value &&\n typeof value === \"object\" &&\n !UNMERGEABLES.some((t) => value instanceof t);\n\n/**\n * Utility functions for patching state, validation, extending objects, and async helpers.\n */\n\n/**\n * Copies state with patches recursively.\n * Keys with `undefined` or `null` values in patch are deleted.\n * @param original original state\n * @param patches patches to merge\n * @returns a new patched state\n */\nexport const patch = <S extends Schema>(\n original: Readonly<S>,\n patches: Readonly<Patch<S>>\n): Readonly<S> => {\n const copy = {} as Record<string, any>;\n Object.keys({ ...original, ...patches }).forEach((key) => {\n const patched_value = patches[key as keyof typeof patches];\n const original_value = original[key as keyof typeof original];\n const patched = patches && key in patches;\n const deleted =\n patched &&\n (typeof patched_value === \"undefined\" || patched_value === null);\n const value = patched && !deleted ? patched_value : original_value;\n !deleted &&\n (copy[key] = is_mergeable(value)\n ? patch(original_value || {}, patched_value || {})\n : value);\n });\n return copy as S;\n};\n\nexport const validate = <S>(\n target: string,\n payload: Readonly<S>,\n schema?: ZodType<S>\n): Readonly<S> => {\n try {\n return schema ? schema.parse(payload) : payload;\n } catch (error) {\n if (error instanceof Error && error.name === \"ZodError\") {\n throw new ValidationError(\n target,\n payload,\n prettifyError(error as ZodError)\n );\n }\n throw new ValidationError(target, payload, error);\n }\n};\n\n/**\n * Extends target payload with source payload after validating source\n */\nexport const extend = <\n S extends Record<string, unknown>,\n T extends Record<string, unknown>,\n>(\n source: Readonly<S>,\n schema: ZodType<S>,\n target?: Readonly<T>\n): Readonly<S & T> => {\n const value = validate(\"config\", source, schema);\n return Object.assign(target || {}, value) as Readonly<S & T>;\n};\n\nexport async function sleep(ms?: number) {\n return new Promise((resolve) => setTimeout(resolve, ms ?? config().sleepMs));\n}\n","import { pino } from \"pino\";\nimport { InMemoryStore } from \"./adapters/InMemoryStore.js\";\nimport { config } from \"./config.js\";\nimport type { Disposable, Disposer, Store } from \"./types/index.js\";\n\n/**\n * Port and adapter utilities for logging, store management, and resource disposal.\n * Provides singleton store and logger instances.\n */\n\nexport const ExitCodes = [\"ERROR\", \"EXIT\"] as const;\nexport type ExitCode = (typeof ExitCodes)[number];\n\nexport const logger = pino({\n transport:\n config().env !== \"production\"\n ? {\n target: \"pino-pretty\",\n options: {\n ignore: \"pid,hostname\",\n singleLine: config().logSingleLine,\n colorize: true,\n },\n }\n : undefined,\n level: config().logLevel,\n});\n\ntype Injector<Port extends Disposable> = (adapter?: Port) => Port;\nconst adapters = new Map<string, Disposable>();\nexport function port<Port extends Disposable>(injector: Injector<Port>) {\n return function (adapter?: Port): Port {\n if (!adapters.has(injector.name)) {\n const injected = injector(adapter);\n adapters.set(injector.name, injected);\n logger.info(`🔌 injected ${injector.name}:${injected.constructor.name}`);\n }\n return adapters.get(injector.name) as Port;\n };\n}\n\nconst disposers: Disposer[] = [];\nexport async function disposeAndExit(code: ExitCode = \"EXIT\"): Promise<void> {\n // ignore when errors are caught in production\n if (code === \"ERROR\" && config().env === \"production\") return;\n\n await Promise.all(disposers.map((disposer) => disposer()));\n await Promise.all(\n [...adapters.values()].reverse().map(async (adapter) => {\n await adapter.dispose();\n logger.info(`🔌 disposed ${adapter.constructor.name}`);\n })\n );\n adapters.clear();\n config().env !== \"test\" && process.exit(code === \"ERROR\" ? 1 : 0);\n}\n\n/**\n * Registers resource disposers that are triggered on process exit\n * @param disposer the disposer function\n * @returns a function that triggers all registered disposers and terminates the process\n */\nexport function dispose(\n disposer?: Disposer\n): (code?: ExitCode) => Promise<void> {\n disposer && disposers.push(disposer);\n return disposeAndExit;\n}\n\n// singleton ports\nexport const SNAP_EVENT = \"__snapshot__\";\nexport const store = port(function store(adapter?: Store) {\n return adapter || new InMemoryStore();\n});\n","import { ConcurrencyError } from \"../types/errors.js\";\nimport type {\n Committed,\n EventMeta,\n Lease,\n Message,\n Query,\n Schemas,\n Store,\n} from \"../types/index.js\";\nimport { sleep } from \"../utils.js\";\n\nclass InMemoryStream {\n _at = -1;\n _retry = -1;\n _lease: Lease | undefined;\n _blocked = false;\n\n constructor(public readonly stream: string) {}\n\n lease(lease: Lease): Lease | undefined {\n if (!this._blocked && lease.at > this._at) {\n this._lease = { ...lease, retry: this._retry + 1 };\n return this._lease;\n }\n }\n\n ack(lease: Lease) {\n if (this._lease && lease.at >= this._at) {\n this._retry = lease.retry;\n this._blocked = lease.block;\n if (!this._blocked && !lease.error) {\n this._at = lease.at;\n this._retry = 0;\n }\n this._lease = undefined;\n }\n }\n}\n\n/**\n * @category Adapters\n * @remarks In-memory event store\n */\nexport class InMemoryStore implements Store {\n // stored events\n private _events: Committed<Schemas, keyof Schemas>[] = [];\n // stored stream positions and other metadata\n private _streams: Map<string, InMemoryStream> = new Map();\n\n async dispose() {\n await sleep();\n this._events.length = 0;\n }\n\n async seed() {\n await sleep();\n }\n\n async drop() {\n await sleep();\n this._events.length = 0;\n }\n\n async query<E extends Schemas>(\n callback: (event: Committed<E, keyof E>) => void,\n query?: Query\n ) {\n await sleep();\n const {\n stream,\n names,\n before,\n after = -1,\n limit,\n created_before,\n created_after,\n correlation,\n } = query || {};\n let i = after + 1,\n count = 0;\n while (i < this._events.length) {\n const e = this._events[i++];\n if (stream && e.stream !== stream) continue;\n if (names && !names.includes(e.name)) continue;\n if (correlation && e.meta?.correlation !== correlation) continue;\n if (created_after && e.created <= created_after) continue;\n if (before && e.id >= before) break;\n if (created_before && e.created >= created_before) break;\n callback(e as Committed<E, keyof E>);\n count++;\n if (limit && count >= limit) break;\n }\n return count;\n }\n\n async commit<E extends Schemas>(\n stream: string,\n msgs: Message<E, keyof E>[],\n meta: EventMeta,\n expectedVersion?: number\n ) {\n await sleep();\n const instance = this._events.filter((e) => e.stream === stream); // ignore state events, this is a production optimization\n if (expectedVersion && instance.length - 1 !== expectedVersion)\n throw new ConcurrencyError(\n instance.length - 1,\n msgs as Message<Schemas, keyof Schemas>[],\n expectedVersion\n );\n\n let version = instance.length;\n return msgs.map(({ name, data }) => {\n const committed: Committed<E, keyof E> = {\n id: this._events.length,\n stream,\n version,\n created: new Date(),\n name,\n data,\n meta,\n };\n this._events.push(committed as Committed<Schemas, keyof Schemas>);\n version++;\n return committed;\n });\n }\n\n /**\n * Fetches new events from stream watermarks\n */\n async fetch<E extends Schemas>(limit: number) {\n const streams = [...this._streams.values()]\n .filter((s) => !s._blocked)\n .sort((a, b) => a._at - b._at)\n .slice(0, limit);\n\n const after = streams.length\n ? streams.reduce(\n (min, s) => Math.min(min, s._at),\n Number.MAX_SAFE_INTEGER\n )\n : -1;\n\n const events: Committed<E, keyof E>[] = [];\n await this.query<E>((e) => events.push(e), { after, limit });\n return { streams: streams.map(({ stream }) => stream), events };\n }\n\n async lease(leases: Lease[]) {\n await sleep();\n return leases\n .map((lease) => {\n const stream =\n this._streams.get(lease.stream) ||\n // store new correlations\n this._streams\n .set(lease.stream, new InMemoryStream(lease.stream))\n .get(lease.stream)!;\n return stream.lease(lease);\n })\n .filter((l): l is Lease => !!l);\n }\n\n async ack(leases: Lease[]) {\n await sleep();\n leases.forEach((lease) => this._streams.get(lease.stream)?.ack(lease));\n }\n}\n","import { randomUUID } from \"crypto\";\nimport EventEmitter from \"events\";\nimport * as es from \"./event-sourcing.js\";\nimport { logger, store } from \"./ports.js\";\nimport { ValidationError } from \"./types/errors.js\";\nimport type {\n Committed,\n Lease,\n Query,\n ReactionPayload,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\n\ntype SnapshotArgs = Snapshot<Schemas, Schema>;\n\n/**\n * Act is the main orchestrator for event-sourced state machines.\n * It manages actions, reactions, event streams, and provides APIs for loading, querying, and draining events.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport class Act<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> {\n private _emitter = new EventEmitter();\n\n emit(event: \"committed\", args: SnapshotArgs): boolean;\n emit(event: \"drained\", args: Lease[]): boolean;\n emit(event: string, args: any): boolean {\n return this._emitter.emit(event, args);\n }\n\n on(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n on(event: \"drained\", listener: (args: Lease[]) => void): this;\n on(event: string, listener: (args: any) => void): this {\n this._emitter.on(event, listener);\n return this;\n }\n\n off(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n off(event: \"drained\", listener: (args: Lease[]) => void): this;\n off(event: string, listener: (args: any) => void): this {\n this._emitter.off(event, listener);\n return this;\n }\n\n constructor(\n public readonly registry: Registry<S, E, A>,\n public readonly drainLimit: number\n ) {}\n\n /**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template K The type of action to execute\n * @template T The type of target\n * @template P The type of payloads\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\n async do<K extends keyof A>(\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<E, keyof E>,\n skipValidation = false\n ) {\n const snapshot = await es.action(\n this.registry.actions[action],\n action,\n target,\n payload,\n reactingTo as Committed<Schemas, keyof Schemas>,\n skipValidation\n );\n this.emit(\"committed\", snapshot as SnapshotArgs);\n return snapshot;\n }\n\n /**\n * Loads a snapshot of the state from the store.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to load\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\n async load<SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>,\n stream: string,\n callback?: (snapshot: Snapshot<SX, EX>) => void\n ): Promise<Snapshot<SX, EX>> {\n return await es.load(state, stream, callback);\n }\n\n /**\n * Queries the store for events.\n *\n * @param query The query to execute\n * @param callback The callback to call with the events\n * @returns The query result\n */\n async query(\n query: Query,\n callback?: (event: Committed<E, keyof E>) => void\n ): Promise<{\n first?: Committed<E, keyof E>;\n last?: Committed<E, keyof E>;\n count: number;\n }> {\n let first: Committed<E, keyof E> | undefined = undefined,\n last: Committed<E, keyof E> | undefined = undefined;\n const count = await store().query<E>((e) => {\n !first && (first = e);\n last = e;\n callback && callback(e);\n }, query);\n return { first, last, count };\n }\n\n /**\n * Handles leased reactions.\n *\n * @param lease The lease to handle\n * @param reactions The reactions to handle\n * @returns The lease\n */\n private async handle(\n lease: Lease,\n reactions: ReactionPayload<E>[]\n ): Promise<Lease> {\n const stream = lease.stream;\n\n lease.retry > 0 &&\n logger.warn(`Retrying ${stream}@${lease.at} (${lease.retry}).`);\n\n for (const reaction of reactions) {\n const { event, handler, options } = reaction;\n try {\n await handler(event, stream); // the actual reaction\n lease.at = event.id;\n } catch (error) {\n lease.error = error;\n if (error instanceof ValidationError)\n logger.error({ stream, error }, error.message);\n else logger.error(error);\n\n if (lease.retry < options.maxRetries) lease.retry++;\n else if (options.blockOnError) {\n lease.block = true;\n logger.error(`Blocked ${stream} after ${lease.retry} retries.`);\n }\n break;\n }\n }\n return lease;\n }\n\n private drainLocked = false;\n\n /**\n * Drains events from the store.\n *\n * @returns The number of drained events\n */\n async drain(): Promise<number> {\n if (this.drainLocked) return 0;\n this.drainLocked = true;\n\n const drained: Lease[] = [];\n const { streams, events } = await store().fetch<E>(this.drainLimit);\n\n if (events.length) {\n logger.trace(\n events\n .map(({ id, stream, name }) => ({ id, stream, name }))\n .reduce(\n (a, { id, stream, name }) => ({ ...a, [id]: { [stream]: name } }),\n {}\n ),\n \"⚡️ fetch\"\n );\n\n // correlate events to streams by reaction resolvers\n const resolved = new Set<string>(streams);\n const correlated = new Map<string, ReactionPayload<E>[]>();\n for (const event of events)\n for (const reaction of this.registry.events[\n event.name\n ].reactions.values()) {\n const stream =\n typeof reaction.resolver === \"string\"\n ? reaction.resolver\n : reaction.resolver(event);\n if (stream) {\n resolved.add(stream);\n (\n correlated.get(stream) || correlated.set(stream, []).get(stream)!\n ).push({ ...reaction, event: event });\n }\n }\n\n // lease fetched & resolved streams to the position of the last fetched event\n const last = events.at(-1)!.id;\n const leases = [...resolved.values()].map((stream) => ({\n by: randomUUID(),\n stream,\n at: last,\n retry: 0,\n block: false,\n }));\n const leased = await store().lease(leases);\n logger.trace(\n leased\n .map(({ stream, at, retry }) => ({ stream, at, retry }))\n .reduce(\n (a, { stream, at, retry }) => ({ ...a, [stream]: { at, retry } }),\n {}\n ),\n \"⚡️ lease\"\n );\n\n const handling = leased\n .map((lease) => ({\n lease,\n reactions: correlated.get(lease.stream) || [],\n }))\n .filter(({ reactions }) => reactions.length);\n\n if (handling.length) {\n await Promise.allSettled(\n handling.map(({ lease, reactions }) => this.handle(lease, reactions))\n ).then(\n (promise) => {\n promise.forEach((result) => {\n if (result.status === \"rejected\") logger.error(result.reason);\n else if (!result.value.error) drained.push(result.value);\n });\n },\n (error) => logger.error(error)\n );\n drained.length && this.emit(\"drained\", drained);\n }\n\n // acknowledge leases\n await store().ack(leased);\n logger.trace(\n leased\n .map(({ stream, at, retry, block, error }) => ({\n stream,\n at,\n retry,\n block,\n error,\n }))\n .reduce(\n (a, { stream, at, retry, block, error }) => ({\n ...a,\n [stream]: { at, retry, block, error },\n }),\n {}\n ),\n \"⚡️ ack\"\n );\n }\n\n this.drainLocked = false;\n return drained.length;\n }\n}\n","import { randomUUID } from \"crypto\";\nimport { logger, SNAP_EVENT, store } from \"./ports.js\";\nimport { InvariantError } from \"./types/errors.js\";\nimport type {\n Committed,\n Emitted,\n EventMeta,\n Schema,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\nimport { patch, validate } from \"./utils.js\";\n\n/**\n * Event sourcing utilities for snapshotting, loading, and committing actions/events.\n * Used internally by Act and state machines.\n */\n\n/**\n * Saves a snapshot of the state to the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param snapshot The snapshot to save\n */\nexport async function snap<S extends Schema, E extends Schemas>(\n snapshot: Snapshot<S, E>\n): Promise<void> {\n try {\n const { id, stream, name, meta, version } = snapshot.event!;\n const snapped = await store().commit(\n stream,\n [{ name: SNAP_EVENT, data: snapshot.state }],\n {\n correlation: meta.correlation,\n causation: { event: { id, name: name as string, stream } },\n },\n version // IMPORTANT! - state events are committed right after the snapshot event\n );\n logger.trace(snapped, \"🟠 snap\");\n } catch (error) {\n logger.error(error);\n }\n}\n\n/**\n * Loads a snapshot of the state from the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param me The state machine\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\nexport async function load<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n>(\n me: State<S, E, A>,\n stream: string,\n callback?: (snapshot: Snapshot<S, E>) => void\n): Promise<Snapshot<S, E>> {\n let state = me.init ? me.init() : ({} as S);\n let patches = 0;\n let snaps = 0;\n let event: Committed<E, string> | undefined;\n await store().query(\n (e) => {\n event = e as Committed<E, string>;\n if (e.name === SNAP_EVENT) {\n state = e.data as S;\n snaps++;\n patches = 0;\n } else if (me.patch[e.name]) {\n state = patch(state, me.patch[e.name](event, state));\n patches++;\n }\n callback && callback({ event, state, patches, snaps });\n },\n { stream },\n true\n );\n logger.trace({ stream, patches, snaps, state }, \"🟢 load\");\n return { event, state, patches, snaps };\n}\n\n/**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actionSchemas\n * @template K The type of action to execute\n * @param me The state machine\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\nexport async function action<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n K extends keyof A,\n>(\n me: State<S, E, A>,\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<Schemas, keyof Schemas>,\n skipValidation = false\n): Promise<Snapshot<S, E>> {\n const { stream, expectedVersion, actor } = target;\n if (!stream) throw new Error(\"Missing target stream\");\n\n payload = skipValidation\n ? payload\n : validate(action as string, payload, me.actions[action]);\n logger.trace(\n payload,\n `🔵 ${action as string} \"${stream}${expectedVersion ? `@${expectedVersion}` : \"\"}\"`\n );\n\n let snapshot = await load(me, stream);\n if (me.given) {\n const invariants = me.given[action] || [];\n invariants.forEach(({ valid, description }) => {\n if (!valid(snapshot.state, actor))\n throw new InvariantError(\n action as string,\n payload,\n target,\n description\n );\n });\n }\n\n let { state, patches } = snapshot;\n const result = me.on[action](payload, state, target);\n if (!result) return snapshot;\n\n // An empty array means no events were emitted\n if (Array.isArray(result) && result.length === 0) {\n return snapshot;\n }\n\n const tuples = Array.isArray(result[0])\n ? (result as Emitted<E>[]) // array of tuples\n : ([result] as Emitted<E>[]); // single tuple\n\n const emitted = tuples.map(([name, data]) => ({\n name,\n data: skipValidation\n ? data\n : validate(name as string, data, me.events[name]),\n }));\n\n const meta: EventMeta = {\n correlation: reactingTo?.meta.correlation || randomUUID(),\n causation: {\n action: {\n name: action as string,\n ...target,\n // payload: TODO: flag to include action payload in metadata\n // not included by default to avoid large payloads\n },\n event: reactingTo\n ? {\n id: reactingTo.id,\n name: reactingTo.name,\n stream: reactingTo.stream,\n }\n : undefined,\n },\n };\n\n const committed = await store().commit(\n stream,\n emitted,\n meta,\n // TODO: review reactions not enforcing expected version\n reactingTo ? undefined : expectedVersion || snapshot.event?.version\n );\n\n snapshot = committed\n .map((event) => {\n state = patch(state, me.patch[event.name](event, state));\n patches++;\n logger.trace({ event, state }, \"🔴 commit\");\n return { event, state, patches, snaps: snapshot.snaps };\n })\n .at(-1)!;\n\n me.snap && me.snap(snapshot) && void snap(snapshot); // fire and forget snaps\n return snapshot;\n}\n","import { Act } from \"./act.js\";\nimport type {\n EventRegister,\n Reaction,\n ReactionHandler,\n ReactionOptions,\n ReactionResolver,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n State,\n} from \"./types/index.js\";\n\n// resolves to the event stream (default)\nconst _this_ = ({ stream }: { stream: string }) => stream;\n// resolves to nothing\nconst _void_ = () => undefined;\n\n/**\n * Fluent builder for composing event-sourced state machines with actions and reactions.\n * Provides a chainable API for registering states, events, and reaction handlers.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport type ActBuilder<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> = {\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => ActBuilder<S & { [K in keyof AX]: SX }, E & EX, A & AX>;\n on: <K extends keyof E>(\n event: K\n ) => {\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => ActBuilder<S, E, A> & {\n to: (resolver: ReactionResolver<E, K>) => ActBuilder<S, E, A>;\n void: () => ActBuilder<S, E, A>;\n };\n };\n build: (drainLimit?: number) => Act<S, E, A>;\n readonly events: EventRegister<E>;\n};\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\n\n/**\n * Creates an ActBuilder instance.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actions\n */\nexport function act<\n // @ts-expect-error empty schema\n S extends SchemaRegister<A> = {},\n E extends Schemas = {},\n A extends Schemas = {},\n>(\n states: Set<string> = new Set(),\n registry: Registry<S, E, A> = {\n actions: {} as any,\n events: {} as any,\n }\n): ActBuilder<S, E, A> {\n const builder: ActBuilder<S, E, A> = {\n /**\n * Adds a state to the builder.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to add\n * @returns The builder\n */\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => {\n if (!states.has(state.name)) {\n states.add(state.name);\n for (const name of Object.keys(state.actions)) {\n if (registry.actions[name])\n throw new Error(`Duplicate action \"${name}\"`);\n // @ts-expect-error indexed access\n registry.actions[name] = state;\n }\n for (const name of Object.keys(state.events)) {\n if (registry.events[name])\n throw new Error(`Duplicate event \"${name}\"`);\n // @ts-expect-error indexed access\n registry.events[name] = {\n schema: state.events[name],\n reactions: new Map(),\n };\n }\n }\n return act<S & { [K in keyof AX]: SX }, E & EX, A & AX>(\n states,\n registry as unknown as Registry<\n S & { [K in keyof AX]: SX },\n E & EX,\n A & AX\n >\n );\n },\n /**\n * Adds a reaction to an event.\n *\n * @template K The type of event\n * @param event The event to add a reaction to\n * @returns The builder\n */\n on: <K extends keyof E>(event: K) => ({\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => {\n const reaction: Reaction<E, K> = {\n handler,\n resolver: _this_,\n options: {\n blockOnError: options?.blockOnError ?? true,\n maxRetries: options?.maxRetries ?? 3,\n retryDelayMs: options?.retryDelayMs ?? 1000,\n },\n };\n registry.events[event].reactions.set(handler.name, reaction);\n return {\n ...builder,\n to(resolver: ReactionResolver<E, K>) {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver,\n });\n return builder;\n },\n void() {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver: _void_,\n });\n return builder;\n },\n };\n },\n }),\n build: (drainLimit = 10) => new Act<S, E, A>(registry, drainLimit),\n events: registry.events,\n };\n return builder;\n}\n","import { ZodType } from \"zod/v4\";\nimport {\n ActionHandler,\n ActionHandlers,\n GivenHandlers,\n Invariant,\n PatchHandlers,\n Schema,\n Schemas,\n Snapshot,\n State,\n ZodTypes,\n} from \"./types/index.js\";\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\nexport type StateBuilder<S extends Schema> = {\n init: (init: () => Readonly<S>) => {\n emits: <E extends Schemas>(\n events: ZodTypes<E>\n ) => {\n patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, {}>;\n };\n };\n};\n\nexport type ActionBuilder<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n> = {\n on: <K extends string, AX extends Schema>(\n action: K,\n schema: ZodType<AX>\n ) => {\n given: (rules: Invariant<S>[]) => {\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;\n build: () => State<S, E, A>;\n};\n\n/**\n * Fluent interface for defining a strongly-typed state machine using Zod schemas.\n *\n * This builder helps you model a system where:\n * - You start by defining the state schema with `state(name, zodSchema)`\n * - Then, provide the initial state using `.init(() => defaultState)`\n * - Declare the event types your system can emit using `.emits({ ... })`\n * - Define how emitted events update state with `.patch({ ... })`\n * - Define actions using `.on(\"actionName\", actionSchema)`\n * - Optionally constrain the action with `.given([...invariants])`\n * - Then finalize the action behavior with `.emit(handler)`\n * - (Optional) Define a `.snap(snapshot => boolean)` function to reduce recomputations\n * - Finalize the state machine definition using `.build()`\n *\n * Example usage:\n * ```ts\n * const machine = state(\"machine\", myStateSchema)\n * .init(() => ({ count: 0 }))\n * .emits({ Incremented: z.object({ amount: z.number() }) })\n * .patch({\n * Incremented: (event, state) => ({ count: state.count + event.amount })\n * })\n * .on(\"increment\", z.object({ by: z.number() }))\n * .given([{ description: \"must be positive\", valid: (s, a) => a?.by > 0 }])\n * .emit((action, state) => ({ type: \"Incremented\", amount: action.by }))\n * .build();\n * ```\n */\nexport function state<S extends Schema>(\n name: string,\n state: ZodType<S>\n): StateBuilder<S> {\n return {\n init(init: () => Readonly<S>) {\n return {\n emits<E extends Schema>(events: ZodTypes<E>) {\n return {\n patch(patch: PatchHandlers<S, E>) {\n return action_builder<S, E, {}>({\n events,\n actions: {},\n state,\n name,\n init,\n patch,\n on: {},\n });\n },\n };\n },\n };\n },\n };\n}\n\nfunction action_builder<S extends Schema, E extends Schemas, A extends Schemas>(\n state: State<S, E, A>\n): ActionBuilder<S, E, A> {\n return {\n on<K extends string, AX extends Schema>(action: K, schema: ZodType<AX>) {\n if (action in state.actions)\n throw new Error(`Duplicate action \"${action}\"`);\n\n type NewA = A & { [P in K]: AX };\n const actions = { ...state.actions, [action]: schema } as ZodTypes<NewA>;\n const on = { ...state.on } as ActionHandlers<S, E, NewA>;\n const _given = { ...state.given } as GivenHandlers<S, NewA>;\n\n function given(rules: Invariant<S>[]) {\n _given[action] = rules;\n return { emit };\n }\n\n function emit(handler: ActionHandler<S, E, NewA, K>) {\n on[action] = handler;\n return action_builder<S, E, NewA>({\n ...state,\n actions,\n on,\n given: _given,\n });\n }\n\n return { given, emit };\n },\n\n snap(snap: (snapshot: Snapshot<S, E>) => boolean) {\n return action_builder<S, E, A>({ ...state, snap });\n },\n\n build(): State<S, E, A> {\n return state;\n },\n };\n}\n"],"mappings":"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","names":["import_v4","import_v4","pkg","store","import_crypto","state","action","EventEmitter","action","state","state","state","patch","action","snap"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/types/errors.ts","../src/types/schemas.ts","../src/types/index.ts","../src/utils.ts","../src/ports.ts","../src/adapters/InMemoryStore.ts","../src/act.ts","../src/event-sourcing.ts","../src/act-builder.ts","../src/state-builder.ts"],"sourcesContent":["import { config } from \"./config.js\";\nimport { disposeAndExit, logger } from \"./ports.js\";\n\n/**\n * @module act\n * Main entry point for the Act framework. Re-exports all core APIs.\n */\nexport * from \"./act-builder.js\";\nexport * from \"./act.js\";\nexport * from \"./ports.js\";\nexport * from \"./state-builder.js\";\nexport * from \"./types/index.js\";\nexport * from \"./utils.js\";\nexport { config };\n\n// exit on signals\nprocess.once(\"SIGINT\", async (arg?: any) => {\n logger.info(arg, \"SIGINT\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"SIGTERM\", async (arg?: any) => {\n logger.info(arg, \"SIGTERM\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"uncaughtException\", async (arg?: any) => {\n logger.error(arg, \"Uncaught Exception\");\n await disposeAndExit(\"ERROR\");\n});\nprocess.once(\"unhandledRejection\", async (arg?: any) => {\n logger.error(arg, \"Unhandled Rejection\");\n await disposeAndExit(\"ERROR\");\n});\n","import * as fs from \"node:fs\";\nimport { z } from \"zod/v4\";\nimport {\n Environment,\n Environments,\n LogLevel,\n LogLevels,\n} from \"./types/index.js\";\nimport { extend } from \"./utils.js\";\n\n/**\n * Configuration utilities for environment, logging, and package metadata.\n */\n\nexport const PackageSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().min(1),\n author: z\n .object({ name: z.string().min(1), email: z.string().optional() })\n .or(z.string().min(1)),\n license: z.string().min(1),\n dependencies: z.record(z.string(), z.string()),\n});\nexport type Package = z.infer<typeof PackageSchema>;\n\nconst getPackage = (): Package => {\n const pkg = fs.readFileSync(\"package.json\");\n return JSON.parse(pkg.toString()) as Package;\n};\n\nconst BaseSchema = PackageSchema.extend({\n env: z.enum(Environments),\n logLevel: z.enum(LogLevels),\n logSingleLine: z.boolean(),\n sleepMs: z.number().int().min(0).max(5000),\n});\nexport type Config = z.infer<typeof BaseSchema>;\n\nconst { NODE_ENV, LOG_LEVEL, LOG_SINGLE_LINE, SLEEP_MS } = process.env;\n\nconst env = (NODE_ENV || \"development\") as Environment;\nconst logLevel = (LOG_LEVEL ||\n (NODE_ENV === \"test\"\n ? \"error\"\n : LOG_LEVEL === \"production\"\n ? \"info\"\n : \"trace\")) as LogLevel;\nconst logSingleLine = (LOG_SINGLE_LINE || \"true\") === \"true\";\nconst sleepMs = parseInt(NODE_ENV === \"test\" ? \"0\" : (SLEEP_MS ?? \"100\"));\n\nconst pkg = getPackage();\n\nexport const config = (): Config => {\n return extend({ ...pkg, env, logLevel, logSingleLine, sleepMs }, BaseSchema);\n};\n","import type { Message, Schema, Schemas, Target } from \"./action.js\";\n\n/**\n * Application error types\n * - `ERR_VALIDATION` schema validation error\n * - `ERR_INVARIANT` invariant validation error\n * - `ERR_CONCURRENCY` optimistic concurrency validation error on commits\n */\nexport const Errors = {\n ValidationError: \"ERR_VALIDATION\",\n InvariantError: \"ERR_INVARIANT\",\n ConcurrencyError: \"ERR_CONCURRENCY\",\n} as const;\n\nexport class ValidationError extends Error {\n constructor(\n public readonly target: string,\n public readonly payload: any,\n public readonly details: any\n ) {\n super(`Invalid ${target} payload`);\n this.name = Errors.ValidationError;\n }\n}\n\nexport class InvariantError extends Error {\n public readonly details;\n constructor(\n name: string,\n payload: Schema,\n target: Target,\n description: string\n ) {\n super(`${name} failed invariant: ${description}`);\n this.name = Errors.InvariantError;\n this.details = { name, payload, target, description };\n }\n}\n\nexport class ConcurrencyError extends Error {\n constructor(\n public readonly lastVersion: number,\n public readonly events: Message<Schemas, keyof Schemas>[],\n public readonly expectedVersion: number\n ) {\n super(\n `Concurrency error committing event \"${\n events.at(0)?.name\n }\". Expected version ${expectedVersion} but found version ${lastVersion}.`\n );\n this.name = Errors.ConcurrencyError;\n }\n}\n","import { z, ZodObject, ZodRawShape } from \"zod/v4\";\n\nexport const ZodEmpty = z.record(z.string(), z.never());\n\nexport const ActorSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n })\n .readonly();\n\nexport const TargetSchema = z\n .object({\n stream: z.string(),\n actor: ActorSchema,\n expectedVersion: z.number().optional(),\n })\n .readonly();\n\nexport const CausationEventSchema = z.object({\n id: z.number(),\n name: z.string(),\n stream: z.string(),\n});\n\nexport const EventMetaSchema = z\n .object({\n correlation: z.string(),\n causation: z.object({\n action: TargetSchema.and(z.object({ name: z.string() })).optional(),\n event: CausationEventSchema.optional(),\n }),\n })\n .readonly();\n\nexport const CommittedMetaSchema = z\n .object({\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n .readonly();\n\nexport type StateSchema = Readonly<{\n events: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n actions: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n state: ZodObject<ZodRawShape>;\n}>;\n\nexport function buildSnapshotSchema<S extends StateSchema>(s: S) {\n const events = Object.entries(s.events).map(([name, zod]) =>\n z.object({\n name: z.literal(name),\n data: zod,\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n );\n return z.object({\n state: s.state.readonly(),\n event: z.union([events[0], events[1], ...events.slice(2)]).optional(),\n patches: z.number(),\n snaps: z.number(),\n });\n}\n\n/**\n * Options to query the all stream\n * - `stream?` filter by stream\n * - `names?` filter by event names\n * - `before?` filter events before this id\n * - `after?` filter events after this id\n * - `limit?` limit the number of events to return\n * - `created_before?` filter events created before this date/time\n * - `created_after?` filter events created after this date/time\n * - `backward?` order descending when true\n * - `correlation?` filter by correlation\n * - `actor?` filter by actor id (mainly used to reduce process managers)\n * - `loading?` flag when loading to optimize queries\n */\nexport const QuerySchema = z.object({\n stream: z.string().optional(),\n names: z.string().array().optional(),\n before: z.number().optional(),\n after: z.number().optional(),\n limit: z.number().optional(),\n created_before: z.date().optional(),\n created_after: z.date().optional(),\n backward: z.boolean().optional(),\n correlation: z.string().optional(),\n});\n","export type * from \"./action.js\";\nexport * from \"./errors.js\";\nexport type * from \"./ports.js\";\nexport type * from \"./reaction.js\";\nexport type * from \"./registry.js\";\nexport * from \"./schemas.js\";\n\nexport const Environments = [\n \"development\",\n \"test\",\n \"staging\",\n \"production\",\n] as const;\nexport type Environment = (typeof Environments)[number];\n\nexport const LogLevels = [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n] as const;\nexport type LogLevel = (typeof LogLevels)[number];\n","import { ZodError, type ZodType, prettifyError } from \"zod/v4\";\nimport { config } from \"./config.js\";\nimport type { Patch, Schema } from \"./types/index.js\";\nimport { ValidationError } from \"./types/index.js\";\n\n/** These objects are copied instead of deep merged */\nconst UNMERGEABLES = [\n RegExp,\n Date,\n Array,\n Map,\n Set,\n WeakMap,\n WeakSet,\n ArrayBuffer,\n SharedArrayBuffer,\n DataView,\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n];\n\nconst is_mergeable = (value: any): boolean =>\n !!value &&\n typeof value === \"object\" &&\n !UNMERGEABLES.some((t) => value instanceof t);\n\n/**\n * Utility functions for patching state, validation, extending objects, and async helpers.\n */\n\n/**\n * Copies state with patches recursively.\n * Keys with `undefined` or `null` values in patch are deleted.\n * @param original original state\n * @param patches patches to merge\n * @returns a new patched state\n */\nexport const patch = <S extends Schema>(\n original: Readonly<S>,\n patches: Readonly<Patch<S>>\n): Readonly<S> => {\n const copy = {} as Record<string, any>;\n Object.keys({ ...original, ...patches }).forEach((key) => {\n const patched_value = patches[key as keyof typeof patches];\n const original_value = original[key as keyof typeof original];\n const patched = patches && key in patches;\n const deleted =\n patched &&\n (typeof patched_value === \"undefined\" || patched_value === null);\n const value = patched && !deleted ? patched_value : original_value;\n !deleted &&\n (copy[key] = is_mergeable(value)\n ? patch(original_value || {}, patched_value || {})\n : value);\n });\n return copy as S;\n};\n\nexport const validate = <S>(\n target: string,\n payload: Readonly<S>,\n schema?: ZodType<S>\n): Readonly<S> => {\n try {\n return schema ? schema.parse(payload) : payload;\n } catch (error) {\n if (error instanceof Error && error.name === \"ZodError\") {\n throw new ValidationError(\n target,\n payload,\n prettifyError(error as ZodError)\n );\n }\n throw new ValidationError(target, payload, error);\n }\n};\n\n/**\n * Extends target payload with source payload after validating source\n */\nexport const extend = <\n S extends Record<string, unknown>,\n T extends Record<string, unknown>,\n>(\n source: Readonly<S>,\n schema: ZodType<S>,\n target?: Readonly<T>\n): Readonly<S & T> => {\n const value = validate(\"config\", source, schema);\n return Object.assign(target || {}, value) as Readonly<S & T>;\n};\n\nexport async function sleep(ms?: number) {\n return new Promise((resolve) => setTimeout(resolve, ms ?? config().sleepMs));\n}\n","import { pino } from \"pino\";\nimport { InMemoryStore } from \"./adapters/InMemoryStore.js\";\nimport { config } from \"./config.js\";\nimport type { Disposable, Disposer, Store } from \"./types/index.js\";\n\n/**\n * Port and adapter utilities for logging, store management, and resource disposal.\n * Provides singleton store and logger instances.\n */\n\nexport const ExitCodes = [\"ERROR\", \"EXIT\"] as const;\nexport type ExitCode = (typeof ExitCodes)[number];\n\nexport const logger = pino({\n transport:\n config().env !== \"production\"\n ? {\n target: \"pino-pretty\",\n options: {\n ignore: \"pid,hostname\",\n singleLine: config().logSingleLine,\n colorize: true,\n },\n }\n : undefined,\n level: config().logLevel,\n});\n\ntype Injector<Port extends Disposable> = (adapter?: Port) => Port;\nconst adapters = new Map<string, Disposable>();\nexport function port<Port extends Disposable>(injector: Injector<Port>) {\n return function (adapter?: Port): Port {\n if (!adapters.has(injector.name)) {\n const injected = injector(adapter);\n adapters.set(injector.name, injected);\n logger.info(`🔌 injected ${injector.name}:${injected.constructor.name}`);\n }\n return adapters.get(injector.name) as Port;\n };\n}\n\nconst disposers: Disposer[] = [];\nexport async function disposeAndExit(code: ExitCode = \"EXIT\"): Promise<void> {\n // ignore when errors are caught in production\n if (code === \"ERROR\" && config().env === \"production\") return;\n\n await Promise.all(disposers.map((disposer) => disposer()));\n await Promise.all(\n [...adapters.values()].reverse().map(async (adapter) => {\n await adapter.dispose();\n logger.info(`🔌 disposed ${adapter.constructor.name}`);\n })\n );\n adapters.clear();\n config().env !== \"test\" && process.exit(code === \"ERROR\" ? 1 : 0);\n}\n\n/**\n * Registers resource disposers that are triggered on process exit\n * @param disposer the disposer function\n * @returns a function that triggers all registered disposers and terminates the process\n */\nexport function dispose(\n disposer?: Disposer\n): (code?: ExitCode) => Promise<void> {\n disposer && disposers.push(disposer);\n return disposeAndExit;\n}\n\n// singleton ports\nexport const SNAP_EVENT = \"__snapshot__\";\nexport const store = port(function store(adapter?: Store) {\n return adapter || new InMemoryStore();\n});\n","import { SNAP_EVENT } from \"../ports.js\";\nimport { ConcurrencyError } from \"../types/errors.js\";\nimport type {\n Committed,\n EventMeta,\n Lease,\n Message,\n Query,\n Schemas,\n Store,\n} from \"../types/index.js\";\nimport { sleep } from \"../utils.js\";\n\nclass InMemoryStream {\n _at = -1;\n _retry = -1;\n _lease: Lease | undefined;\n _blocked = false;\n\n constructor(public readonly stream: string) {}\n\n lease(lease: Lease): Lease | undefined {\n if (!this._blocked && lease.at > this._at) {\n this._lease = { ...lease, retry: this._retry + 1 };\n return this._lease;\n }\n }\n\n ack(lease: Lease) {\n if (this._lease && lease.at >= this._at) {\n this._retry = lease.retry;\n this._blocked = lease.block;\n if (!this._blocked && !lease.error) {\n this._at = lease.at;\n this._retry = 0;\n }\n this._lease = undefined;\n }\n }\n}\n\n/**\n * @category Adapters\n * @remarks In-memory event store\n */\nexport class InMemoryStore implements Store {\n // stored events\n private _events: Committed<Schemas, keyof Schemas>[] = [];\n // stored stream positions and other metadata\n private _streams: Map<string, InMemoryStream> = new Map();\n\n async dispose() {\n await sleep();\n this._events.length = 0;\n }\n\n async seed() {\n await sleep();\n }\n\n async drop() {\n await sleep();\n this._events.length = 0;\n }\n\n async query<E extends Schemas>(\n callback: (event: Committed<E, keyof E>) => void,\n query?: Query\n ) {\n await sleep();\n const {\n stream,\n names,\n before,\n after = -1,\n limit,\n created_before,\n created_after,\n correlation,\n } = query || {};\n let i = after + 1,\n count = 0;\n while (i < this._events.length) {\n const e = this._events[i++];\n if (stream && e.stream !== stream) continue;\n if (names && !names.includes(e.name)) continue;\n if (correlation && e.meta?.correlation !== correlation) continue;\n if (created_after && e.created <= created_after) continue;\n if (before && e.id >= before) break;\n if (created_before && e.created >= created_before) break;\n callback(e as Committed<E, keyof E>);\n count++;\n if (limit && count >= limit) break;\n }\n return count;\n }\n\n async commit<E extends Schemas>(\n stream: string,\n msgs: Message<E, keyof E>[],\n meta: EventMeta,\n expectedVersion?: number\n ) {\n await sleep();\n const instance = this._events.filter((e) => e.stream === stream); // ignore state events, this is a production optimization\n if (expectedVersion && instance.length - 1 !== expectedVersion)\n throw new ConcurrencyError(\n instance.length - 1,\n msgs as Message<Schemas, keyof Schemas>[],\n expectedVersion\n );\n\n let version = instance.length;\n return msgs.map(({ name, data }) => {\n const committed: Committed<E, keyof E> = {\n id: this._events.length,\n stream,\n version,\n created: new Date(),\n name,\n data,\n meta,\n };\n this._events.push(committed as Committed<Schemas, keyof Schemas>);\n version++;\n return committed;\n });\n }\n\n /**\n * Fetches new events from stream watermarks\n */\n async fetch<E extends Schemas>(limit: number) {\n const streams = [...this._streams.values()]\n .filter((s) => !s._blocked)\n .sort((a, b) => a._at - b._at)\n .slice(0, limit);\n\n const after = streams.length\n ? streams.reduce(\n (min, s) => Math.min(min, s._at),\n Number.MAX_SAFE_INTEGER\n )\n : -1;\n\n const events: Committed<E, keyof E>[] = [];\n await this.query<E>((e) => e.name !== SNAP_EVENT && events.push(e), {\n after,\n limit,\n });\n return { streams: streams.map(({ stream }) => stream), events };\n }\n\n async lease(leases: Lease[]) {\n await sleep();\n return leases\n .map((lease) => {\n const stream =\n this._streams.get(lease.stream) ||\n // store new correlations\n this._streams\n .set(lease.stream, new InMemoryStream(lease.stream))\n .get(lease.stream)!;\n return stream.lease(lease);\n })\n .filter((l): l is Lease => !!l);\n }\n\n async ack(leases: Lease[]) {\n await sleep();\n leases.forEach((lease) => this._streams.get(lease.stream)?.ack(lease));\n }\n}\n","import { randomUUID } from \"crypto\";\nimport EventEmitter from \"events\";\nimport * as es from \"./event-sourcing.js\";\nimport { logger, store } from \"./ports.js\";\nimport { ValidationError } from \"./types/errors.js\";\nimport type {\n Committed,\n Lease,\n Query,\n ReactionPayload,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\n\ntype SnapshotArgs = Snapshot<Schemas, Schema>;\n\n/**\n * Act is the main orchestrator for event-sourced state machines.\n * It manages actions, reactions, event streams, and provides APIs for loading, querying, and draining events.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport class Act<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> {\n private _emitter = new EventEmitter();\n\n emit(event: \"committed\", args: SnapshotArgs): boolean;\n emit(event: \"drained\", args: Lease[]): boolean;\n emit(event: string, args: any): boolean {\n return this._emitter.emit(event, args);\n }\n\n on(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n on(event: \"drained\", listener: (args: Lease[]) => void): this;\n on(event: string, listener: (args: any) => void): this {\n this._emitter.on(event, listener);\n return this;\n }\n\n off(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n off(event: \"drained\", listener: (args: Lease[]) => void): this;\n off(event: string, listener: (args: any) => void): this {\n this._emitter.off(event, listener);\n return this;\n }\n\n constructor(\n public readonly registry: Registry<S, E, A>,\n public readonly drainLimit: number\n ) {}\n\n /**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template K The type of action to execute\n * @template T The type of target\n * @template P The type of payloads\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\n async do<K extends keyof A>(\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<E, keyof E>,\n skipValidation = false\n ) {\n const snapshot = await es.action(\n this.registry.actions[action],\n action,\n target,\n payload,\n reactingTo as Committed<Schemas, keyof Schemas>,\n skipValidation\n );\n this.emit(\"committed\", snapshot as SnapshotArgs);\n return snapshot;\n }\n\n /**\n * Loads a snapshot of the state from the store.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to load\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\n async load<SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>,\n stream: string,\n callback?: (snapshot: Snapshot<SX, EX>) => void\n ): Promise<Snapshot<SX, EX>> {\n return await es.load(state, stream, callback);\n }\n\n /**\n * Queries the store for events.\n *\n * @param query The query to execute\n * @param callback The callback to call with the events\n * @returns The query result\n */\n async query(\n query: Query,\n callback?: (event: Committed<E, keyof E>) => void\n ): Promise<{\n first?: Committed<E, keyof E>;\n last?: Committed<E, keyof E>;\n count: number;\n }> {\n let first: Committed<E, keyof E> | undefined = undefined,\n last: Committed<E, keyof E> | undefined = undefined;\n const count = await store().query<E>((e) => {\n !first && (first = e);\n last = e;\n callback && callback(e);\n }, query);\n return { first, last, count };\n }\n\n /**\n * Handles leased reactions.\n *\n * @param lease The lease to handle\n * @param reactions The reactions to handle\n * @returns The lease\n */\n private async handle(\n lease: Lease,\n reactions: ReactionPayload<E>[]\n ): Promise<Lease> {\n const stream = lease.stream;\n\n lease.retry > 0 &&\n logger.warn(`Retrying ${stream}@${lease.at} (${lease.retry}).`);\n\n for (const reaction of reactions) {\n const { event, handler, options } = reaction;\n try {\n await handler(event, stream); // the actual reaction\n lease.at = event.id;\n } catch (error) {\n lease.error = error;\n if (error instanceof ValidationError)\n logger.error({ stream, error }, error.message);\n else logger.error(error);\n\n if (lease.retry < options.maxRetries) lease.retry++;\n else if (options.blockOnError) {\n lease.block = true;\n logger.error(`Blocked ${stream} after ${lease.retry} retries.`);\n }\n break;\n }\n }\n return lease;\n }\n\n private drainLocked = false;\n\n /**\n * Drains events from the store.\n *\n * @returns The number of drained events\n */\n async drain(): Promise<number> {\n if (this.drainLocked) return 0;\n this.drainLocked = true;\n\n const drained: Lease[] = [];\n const { streams, events } = await store().fetch<E>(this.drainLimit);\n\n if (events.length) {\n logger.trace(\n events\n .map(({ id, stream, name }) => ({ id, stream, name }))\n .reduce(\n (a, { id, stream, name }) => ({ ...a, [id]: { [stream]: name } }),\n {}\n ),\n \"⚡️ fetch\"\n );\n\n // correlate events to streams by reaction resolvers\n const resolved = new Set<string>(streams);\n const correlated = new Map<string, ReactionPayload<E>[]>();\n for (const event of events) {\n const register = this.registry.events[event.name];\n if (!register) continue; // skip events with no registered reactions\n for (const reaction of register.reactions.values()) {\n const stream =\n typeof reaction.resolver === \"string\"\n ? reaction.resolver\n : reaction.resolver(event);\n if (stream) {\n resolved.add(stream);\n (\n correlated.get(stream) || correlated.set(stream, []).get(stream)!\n ).push({ ...reaction, event: event });\n }\n }\n }\n\n // lease fetched & resolved streams to the position of the last fetched event\n const last = events.at(-1)!.id;\n const leases = [...resolved.values()].map((stream) => ({\n by: randomUUID(),\n stream,\n at: last,\n retry: 0,\n block: false,\n }));\n const leased = await store().lease(leases);\n logger.trace(\n leased\n .map(({ stream, at, retry }) => ({ stream, at, retry }))\n .reduce(\n (a, { stream, at, retry }) => ({ ...a, [stream]: { at, retry } }),\n {}\n ),\n \"⚡️ lease\"\n );\n\n const handling = leased\n .map((lease) => ({\n lease,\n reactions: correlated.get(lease.stream) || [],\n }))\n .filter(({ reactions }) => reactions.length);\n\n if (handling.length) {\n await Promise.allSettled(\n handling.map(({ lease, reactions }) => this.handle(lease, reactions))\n ).then(\n (promise) => {\n promise.forEach((result) => {\n if (result.status === \"rejected\") logger.error(result.reason);\n else if (!result.value.error) drained.push(result.value);\n });\n },\n (error) => logger.error(error)\n );\n drained.length && this.emit(\"drained\", drained);\n }\n\n // acknowledge leases\n await store().ack(leased);\n logger.trace(\n leased\n .map(({ stream, at, retry, block, error }) => ({\n stream,\n at,\n retry,\n block,\n error,\n }))\n .reduce(\n (a, { stream, at, retry, block, error }) => ({\n ...a,\n [stream]: { at, retry, block, error },\n }),\n {}\n ),\n \"⚡️ ack\"\n );\n }\n\n this.drainLocked = false;\n return drained.length;\n }\n}\n","import { randomUUID } from \"crypto\";\nimport { logger, SNAP_EVENT, store } from \"./ports.js\";\nimport { InvariantError } from \"./types/errors.js\";\nimport type {\n Committed,\n Emitted,\n EventMeta,\n Schema,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\nimport { patch, validate } from \"./utils.js\";\n\n/**\n * Event sourcing utilities for snapshotting, loading, and committing actions/events.\n * Used internally by Act and state machines.\n */\n\n/**\n * Saves a snapshot of the state to the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param snapshot The snapshot to save\n */\nexport async function snap<S extends Schema, E extends Schemas>(\n snapshot: Snapshot<S, E>\n): Promise<void> {\n try {\n const { id, stream, name, meta, version } = snapshot.event!;\n const snapped = await store().commit(\n stream,\n [{ name: SNAP_EVENT, data: snapshot.state }],\n {\n correlation: meta.correlation,\n causation: { event: { id, name: name as string, stream } },\n },\n version // IMPORTANT! - state events are committed right after the snapshot event\n );\n logger.trace(snapped, \"🟠 snap\");\n } catch (error) {\n logger.error(error);\n }\n}\n\n/**\n * Loads a snapshot of the state from the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param me The state machine\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\nexport async function load<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n>(\n me: State<S, E, A>,\n stream: string,\n callback?: (snapshot: Snapshot<S, E>) => void\n): Promise<Snapshot<S, E>> {\n let state = me.init ? me.init() : ({} as S);\n let patches = 0;\n let snaps = 0;\n let event: Committed<E, string> | undefined;\n await store().query(\n (e) => {\n event = e as Committed<E, string>;\n if (e.name === SNAP_EVENT) {\n state = e.data as S;\n snaps++;\n patches = 0;\n } else if (me.patch[e.name]) {\n state = patch(state, me.patch[e.name](event, state));\n patches++;\n }\n callback && callback({ event, state, patches, snaps });\n },\n { stream },\n true\n );\n logger.trace({ stream, patches, snaps, state }, \"🟢 load\");\n return { event, state, patches, snaps };\n}\n\n/**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actionSchemas\n * @template K The type of action to execute\n * @param me The state machine\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\nexport async function action<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n K extends keyof A,\n>(\n me: State<S, E, A>,\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<Schemas, keyof Schemas>,\n skipValidation = false\n): Promise<Snapshot<S, E>> {\n const { stream, expectedVersion, actor } = target;\n if (!stream) throw new Error(\"Missing target stream\");\n\n payload = skipValidation\n ? payload\n : validate(action as string, payload, me.actions[action]);\n logger.trace(\n payload,\n `🔵 ${action as string} \"${stream}${expectedVersion ? `@${expectedVersion}` : \"\"}\"`\n );\n\n let snapshot = await load(me, stream);\n if (me.given) {\n const invariants = me.given[action] || [];\n invariants.forEach(({ valid, description }) => {\n if (!valid(snapshot.state, actor))\n throw new InvariantError(\n action as string,\n payload,\n target,\n description\n );\n });\n }\n\n let { state, patches } = snapshot;\n const result = me.on[action](payload, state, target);\n if (!result) return snapshot;\n\n // An empty array means no events were emitted\n if (Array.isArray(result) && result.length === 0) {\n return snapshot;\n }\n\n const tuples = Array.isArray(result[0])\n ? (result as Emitted<E>[]) // array of tuples\n : ([result] as Emitted<E>[]); // single tuple\n\n const emitted = tuples.map(([name, data]) => ({\n name,\n data: skipValidation\n ? data\n : validate(name as string, data, me.events[name]),\n }));\n\n const meta: EventMeta = {\n correlation: reactingTo?.meta.correlation || randomUUID(),\n causation: {\n action: {\n name: action as string,\n ...target,\n // payload: TODO: flag to include action payload in metadata\n // not included by default to avoid large payloads\n },\n event: reactingTo\n ? {\n id: reactingTo.id,\n name: reactingTo.name,\n stream: reactingTo.stream,\n }\n : undefined,\n },\n };\n\n const committed = await store().commit(\n stream,\n emitted,\n meta,\n // TODO: review reactions not enforcing expected version\n reactingTo ? undefined : expectedVersion || snapshot.event?.version\n );\n\n snapshot = committed\n .map((event) => {\n state = patch(state, me.patch[event.name](event, state));\n patches++;\n logger.trace({ event, state }, \"🔴 commit\");\n return { event, state, patches, snaps: snapshot.snaps };\n })\n .at(-1)!;\n\n me.snap && me.snap(snapshot) && void snap(snapshot); // fire and forget snaps\n return snapshot;\n}\n","import { Act } from \"./act.js\";\nimport type {\n EventRegister,\n Reaction,\n ReactionHandler,\n ReactionOptions,\n ReactionResolver,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n State,\n} from \"./types/index.js\";\n\n// resolves to the event stream (default)\nconst _this_ = ({ stream }: { stream: string }) => stream;\n// resolves to nothing\nconst _void_ = () => undefined;\n\n/**\n * Fluent builder for composing event-sourced state machines with actions and reactions.\n * Provides a chainable API for registering states, events, and reaction handlers.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport type ActBuilder<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> = {\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => ActBuilder<S & { [K in keyof AX]: SX }, E & EX, A & AX>;\n on: <K extends keyof E>(\n event: K\n ) => {\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => ActBuilder<S, E, A> & {\n to: (resolver: ReactionResolver<E, K>) => ActBuilder<S, E, A>;\n void: () => ActBuilder<S, E, A>;\n };\n };\n build: (drainLimit?: number) => Act<S, E, A>;\n readonly events: EventRegister<E>;\n};\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\n\n/**\n * Creates an ActBuilder instance.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actions\n */\nexport function act<\n // @ts-expect-error empty schema\n S extends SchemaRegister<A> = {},\n E extends Schemas = {},\n A extends Schemas = {},\n>(\n states: Set<string> = new Set(),\n registry: Registry<S, E, A> = {\n actions: {} as any,\n events: {} as any,\n }\n): ActBuilder<S, E, A> {\n const builder: ActBuilder<S, E, A> = {\n /**\n * Adds a state to the builder.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to add\n * @returns The builder\n */\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => {\n if (!states.has(state.name)) {\n states.add(state.name);\n for (const name of Object.keys(state.actions)) {\n if (registry.actions[name])\n throw new Error(`Duplicate action \"${name}\"`);\n // @ts-expect-error indexed access\n registry.actions[name] = state;\n }\n for (const name of Object.keys(state.events)) {\n if (registry.events[name])\n throw new Error(`Duplicate event \"${name}\"`);\n // @ts-expect-error indexed access\n registry.events[name] = {\n schema: state.events[name],\n reactions: new Map(),\n };\n }\n }\n return act<S & { [K in keyof AX]: SX }, E & EX, A & AX>(\n states,\n registry as unknown as Registry<\n S & { [K in keyof AX]: SX },\n E & EX,\n A & AX\n >\n );\n },\n /**\n * Adds a reaction to an event.\n *\n * @template K The type of event\n * @param event The event to add a reaction to\n * @returns The builder\n */\n on: <K extends keyof E>(event: K) => ({\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => {\n const reaction: Reaction<E, K> = {\n handler,\n resolver: _this_,\n options: {\n blockOnError: options?.blockOnError ?? true,\n maxRetries: options?.maxRetries ?? 3,\n retryDelayMs: options?.retryDelayMs ?? 1000,\n },\n };\n registry.events[event].reactions.set(handler.name, reaction);\n return {\n ...builder,\n to(resolver: ReactionResolver<E, K>) {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver,\n });\n return builder;\n },\n void() {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver: _void_,\n });\n return builder;\n },\n };\n },\n }),\n build: (drainLimit = 10) => new Act<S, E, A>(registry, drainLimit),\n events: registry.events,\n };\n return builder;\n}\n","import { ZodType } from \"zod/v4\";\nimport {\n ActionHandler,\n ActionHandlers,\n GivenHandlers,\n Invariant,\n PatchHandlers,\n Schema,\n Schemas,\n Snapshot,\n State,\n ZodTypes,\n} from \"./types/index.js\";\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\nexport type StateBuilder<S extends Schema> = {\n init: (init: () => Readonly<S>) => {\n emits: <E extends Schemas>(\n events: ZodTypes<E>\n ) => {\n patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, {}>;\n };\n };\n};\n\nexport type ActionBuilder<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n> = {\n on: <K extends string, AX extends Schema>(\n action: K,\n schema: ZodType<AX>\n ) => {\n given: (rules: Invariant<S>[]) => {\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;\n build: () => State<S, E, A>;\n};\n\n/**\n * Fluent interface for defining a strongly-typed state machine using Zod schemas.\n *\n * This builder helps you model a system where:\n * - You start by defining the state schema with `state(name, zodSchema)`\n * - Then, provide the initial state using `.init(() => defaultState)`\n * - Declare the event types your system can emit using `.emits({ ... })`\n * - Define how emitted events update state with `.patch({ ... })`\n * - Define actions using `.on(\"actionName\", actionSchema)`\n * - Optionally constrain the action with `.given([...invariants])`\n * - Then finalize the action behavior with `.emit(handler)`\n * - (Optional) Define a `.snap(snapshot => boolean)` function to reduce recomputations\n * - Finalize the state machine definition using `.build()`\n *\n * Example usage:\n * ```ts\n * const machine = state(\"machine\", myStateSchema)\n * .init(() => ({ count: 0 }))\n * .emits({ Incremented: z.object({ amount: z.number() }) })\n * .patch({\n * Incremented: (event, state) => ({ count: state.count + event.amount })\n * })\n * .on(\"increment\", z.object({ by: z.number() }))\n * .given([{ description: \"must be positive\", valid: (s, a) => a?.by > 0 }])\n * .emit((action, state) => ({ type: \"Incremented\", amount: action.by }))\n * .build();\n * ```\n */\nexport function state<S extends Schema>(\n name: string,\n state: ZodType<S>\n): StateBuilder<S> {\n return {\n init(init: () => Readonly<S>) {\n return {\n emits<E extends Schema>(events: ZodTypes<E>) {\n return {\n patch(patch: PatchHandlers<S, E>) {\n return action_builder<S, E, {}>({\n events,\n actions: {},\n state,\n name,\n init,\n patch,\n on: {},\n });\n },\n };\n },\n };\n },\n };\n}\n\nfunction action_builder<S extends Schema, E extends Schemas, A extends Schemas>(\n state: State<S, E, A>\n): ActionBuilder<S, E, A> {\n return {\n on<K extends string, AX extends Schema>(action: K, schema: ZodType<AX>) {\n if (action in state.actions)\n throw new Error(`Duplicate action \"${action}\"`);\n\n type NewA = A & { [P in K]: AX };\n const actions = { ...state.actions, [action]: schema } as ZodTypes<NewA>;\n const on = { ...state.on } as ActionHandlers<S, E, NewA>;\n const _given = { ...state.given } as GivenHandlers<S, NewA>;\n\n function given(rules: Invariant<S>[]) {\n _given[action] = rules;\n return { emit };\n }\n\n function emit(handler: ActionHandler<S, E, NewA, K>) {\n on[action] = handler;\n return action_builder<S, E, NewA>({\n ...state,\n actions,\n on,\n given: _given,\n });\n }\n\n return { given, emit };\n },\n\n snap(snap: (snapshot: Snapshot<S, E>) => boolean) {\n return action_builder<S, E, A>({ ...state, snap });\n },\n\n build(): State<S, E, A> {\n return state;\n },\n };\n}\n"],"mappings":"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","names":["import_v4","import_v4","pkg","store","import_crypto","state","action","EventEmitter","action","state","state","state","patch","action","snap"]}
package/dist/index.js CHANGED
@@ -310,7 +310,10 @@ var InMemoryStore = class {
310
310
  Number.MAX_SAFE_INTEGER
311
311
  ) : -1;
312
312
  const events = [];
313
- await this.query((e) => events.push(e), { after, limit });
313
+ await this.query((e) => e.name !== SNAP_EVENT && events.push(e), {
314
+ after,
315
+ limit
316
+ });
314
317
  return { streams: streams.map(({ stream }) => stream), events };
315
318
  }
316
319
  async lease(leases) {
@@ -610,14 +613,17 @@ var Act = class {
610
613
  );
611
614
  const resolved = new Set(streams);
612
615
  const correlated = /* @__PURE__ */ new Map();
613
- for (const event of events)
614
- for (const reaction of this.registry.events[event.name].reactions.values()) {
616
+ for (const event of events) {
617
+ const register = this.registry.events[event.name];
618
+ if (!register) continue;
619
+ for (const reaction of register.reactions.values()) {
615
620
  const stream = typeof reaction.resolver === "string" ? reaction.resolver : reaction.resolver(event);
616
621
  if (stream) {
617
622
  resolved.add(stream);
618
623
  (correlated.get(stream) || correlated.set(stream, []).get(stream)).push({ ...reaction, event });
619
624
  }
620
625
  }
626
+ }
621
627
  const last = events.at(-1).id;
622
628
  const leases = [...resolved.values()].map((stream) => ({
623
629
  by: randomUUID2(),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/types/errors.ts","../src/types/schemas.ts","../src/types/index.ts","../src/utils.ts","../src/ports.ts","../src/adapters/InMemoryStore.ts","../src/act.ts","../src/event-sourcing.ts","../src/act-builder.ts","../src/state-builder.ts","../src/index.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport { z } from \"zod/v4\";\nimport {\n Environment,\n Environments,\n LogLevel,\n LogLevels,\n} from \"./types/index.js\";\nimport { extend } from \"./utils.js\";\n\n/**\n * Configuration utilities for environment, logging, and package metadata.\n * Uses dotenv and zod for validation.\n */\n\nexport const PackageSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().min(1),\n author: z\n .object({ name: z.string().min(1), email: z.string().optional() })\n .or(z.string().min(1)),\n license: z.string().min(1),\n dependencies: z.record(z.string(), z.string()),\n});\nexport type Package = z.infer<typeof PackageSchema>;\n\nconst getPackage = (): Package => {\n const pkg = fs.readFileSync(\"package.json\");\n return JSON.parse(pkg.toString()) as Package;\n};\n\nconst BaseSchema = PackageSchema.extend({\n env: z.enum(Environments),\n logLevel: z.enum(LogLevels),\n logSingleLine: z.boolean(),\n sleepMs: z.number().int().min(0).max(5000),\n});\nexport type Config = z.infer<typeof BaseSchema>;\n\nconst { NODE_ENV, LOG_LEVEL, LOG_SINGLE_LINE, SLEEP_MS } = process.env;\n\nconst env = (NODE_ENV || \"development\") as Environment;\nconst logLevel = (LOG_LEVEL ||\n (NODE_ENV === \"test\"\n ? \"error\"\n : LOG_LEVEL === \"production\"\n ? \"info\"\n : \"trace\")) as LogLevel;\nconst logSingleLine = (LOG_SINGLE_LINE || \"true\") === \"true\";\nconst sleepMs = parseInt(NODE_ENV === \"test\" ? \"0\" : (SLEEP_MS ?? \"100\"));\n\nconst pkg = getPackage();\n\nexport const config = (): Config => {\n return extend({ ...pkg, env, logLevel, logSingleLine, sleepMs }, BaseSchema);\n};\n","import type { Message, Schema, Schemas, Target } from \"./action.js\";\n\n/**\n * Application error types\n * - `ERR_VALIDATION` schema validation error\n * - `ERR_INVARIANT` invariant validation error\n * - `ERR_CONCURRENCY` optimistic concurrency validation error on commits\n */\nexport const Errors = {\n ValidationError: \"ERR_VALIDATION\",\n InvariantError: \"ERR_INVARIANT\",\n ConcurrencyError: \"ERR_CONCURRENCY\",\n} as const;\n\nexport class ValidationError extends Error {\n constructor(\n public readonly target: string,\n public readonly payload: any,\n public readonly details: any\n ) {\n super(`Invalid ${target} payload`);\n this.name = Errors.ValidationError;\n }\n}\n\nexport class InvariantError extends Error {\n public readonly details;\n constructor(\n name: string,\n payload: Schema,\n target: Target,\n description: string\n ) {\n super(`${name} failed invariant: ${description}`);\n this.name = Errors.InvariantError;\n this.details = { name, payload, target, description };\n }\n}\n\nexport class ConcurrencyError extends Error {\n constructor(\n public readonly lastVersion: number,\n public readonly events: Message<Schemas, keyof Schemas>[],\n public readonly expectedVersion: number\n ) {\n super(\n `Concurrency error committing event \"${\n events.at(0)?.name\n }\". Expected version ${expectedVersion} but found version ${lastVersion}.`\n );\n this.name = Errors.ConcurrencyError;\n }\n}\n","import { z, ZodObject, ZodRawShape } from \"zod/v4\";\n\nexport const ZodEmpty = z.record(z.string(), z.never());\n\nexport const ActorSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n })\n .readonly();\n\nexport const TargetSchema = z\n .object({\n stream: z.string(),\n actor: ActorSchema,\n expectedVersion: z.number().optional(),\n })\n .readonly();\n\nexport const CausationEventSchema = z.object({\n id: z.number(),\n name: z.string(),\n stream: z.string(),\n});\n\nexport const EventMetaSchema = z\n .object({\n correlation: z.string(),\n causation: z.object({\n action: TargetSchema.and(z.object({ name: z.string() })).optional(),\n event: CausationEventSchema.optional(),\n }),\n })\n .readonly();\n\nexport const CommittedMetaSchema = z\n .object({\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n .readonly();\n\nexport type StateSchema = Readonly<{\n events: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n actions: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n state: ZodObject<ZodRawShape>;\n}>;\n\nexport function buildSnapshotSchema<S extends StateSchema>(s: S) {\n const events = Object.entries(s.events).map(([name, zod]) =>\n z.object({\n name: z.literal(name),\n data: zod,\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n );\n return z.object({\n state: s.state.readonly(),\n event: z.union([events[0], events[1], ...events.slice(2)]).optional(),\n patches: z.number(),\n snaps: z.number(),\n });\n}\n\n/**\n * Options to query the all stream\n * - `stream?` filter by stream\n * - `names?` filter by event names\n * - `before?` filter events before this id\n * - `after?` filter events after this id\n * - `limit?` limit the number of events to return\n * - `created_before?` filter events created before this date/time\n * - `created_after?` filter events created after this date/time\n * - `backward?` order descending when true\n * - `correlation?` filter by correlation\n * - `actor?` filter by actor id (mainly used to reduce process managers)\n * - `loading?` flag when loading to optimize queries\n */\nexport const QuerySchema = z.object({\n stream: z.string().optional(),\n names: z.string().array().optional(),\n before: z.number().optional(),\n after: z.number().optional(),\n limit: z.number().optional(),\n created_before: z.date().optional(),\n created_after: z.date().optional(),\n backward: z.boolean().optional(),\n correlation: z.string().optional(),\n});\n","export type * from \"./action.js\";\nexport * from \"./errors.js\";\nexport type * from \"./ports.js\";\nexport type * from \"./reaction.js\";\nexport type * from \"./registry.js\";\nexport * from \"./schemas.js\";\n\nexport const Environments = [\n \"development\",\n \"test\",\n \"staging\",\n \"production\",\n] as const;\nexport type Environment = (typeof Environments)[number];\n\nexport const LogLevels = [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n] as const;\nexport type LogLevel = (typeof LogLevels)[number];\n","import { ZodError, type ZodType, prettifyError } from \"zod/v4\";\nimport { config } from \"./config.js\";\nimport type { Patch, Schema } from \"./types/index.js\";\nimport { ValidationError } from \"./types/index.js\";\n\n/** These objects are copied instead of deep merged */\nconst UNMERGEABLES = [\n RegExp,\n Date,\n Array,\n Map,\n Set,\n WeakMap,\n WeakSet,\n ArrayBuffer,\n SharedArrayBuffer,\n DataView,\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n];\n\nconst is_mergeable = (value: any): boolean =>\n !!value &&\n typeof value === \"object\" &&\n !UNMERGEABLES.some((t) => value instanceof t);\n\n/**\n * Utility functions for patching state, validation, extending objects, and async helpers.\n */\n\n/**\n * Copies state with patches recursively.\n * Keys with `undefined` or `null` values in patch are deleted.\n * @param original original state\n * @param patches patches to merge\n * @returns a new patched state\n */\nexport const patch = <S extends Schema>(\n original: Readonly<S>,\n patches: Readonly<Patch<S>>\n): Readonly<S> => {\n const copy = {} as Record<string, any>;\n Object.keys({ ...original, ...patches }).forEach((key) => {\n const patched_value = patches[key as keyof typeof patches];\n const original_value = original[key as keyof typeof original];\n const patched = patches && key in patches;\n const deleted =\n patched &&\n (typeof patched_value === \"undefined\" || patched_value === null);\n const value = patched && !deleted ? patched_value : original_value;\n !deleted &&\n (copy[key] = is_mergeable(value)\n ? patch(original_value || {}, patched_value || {})\n : value);\n });\n return copy as S;\n};\n\nexport const validate = <S>(\n target: string,\n payload: Readonly<S>,\n schema?: ZodType<S>\n): Readonly<S> => {\n try {\n return schema ? schema.parse(payload) : payload;\n } catch (error) {\n if (error instanceof Error && error.name === \"ZodError\") {\n throw new ValidationError(\n target,\n payload,\n prettifyError(error as ZodError)\n );\n }\n throw new ValidationError(target, payload, error);\n }\n};\n\n/**\n * Extends target payload with source payload after validating source\n */\nexport const extend = <\n S extends Record<string, unknown>,\n T extends Record<string, unknown>,\n>(\n source: Readonly<S>,\n schema: ZodType<S>,\n target?: Readonly<T>\n): Readonly<S & T> => {\n const value = validate(\"config\", source, schema);\n return Object.assign(target || {}, value) as Readonly<S & T>;\n};\n\nexport async function sleep(ms?: number) {\n return new Promise((resolve) => setTimeout(resolve, ms ?? config().sleepMs));\n}\n","import { pino } from \"pino\";\nimport { InMemoryStore } from \"./adapters/InMemoryStore.js\";\nimport { config } from \"./config.js\";\nimport type { Disposable, Disposer, Store } from \"./types/index.js\";\n\n/**\n * Port and adapter utilities for logging, store management, and resource disposal.\n * Provides singleton store and logger instances.\n */\n\nexport const ExitCodes = [\"ERROR\", \"EXIT\"] as const;\nexport type ExitCode = (typeof ExitCodes)[number];\n\nexport const logger = pino({\n transport:\n config().env !== \"production\"\n ? {\n target: \"pino-pretty\",\n options: {\n ignore: \"pid,hostname\",\n singleLine: config().logSingleLine,\n colorize: true,\n },\n }\n : undefined,\n level: config().logLevel,\n});\n\ntype Injector<Port extends Disposable> = (adapter?: Port) => Port;\nconst adapters = new Map<string, Disposable>();\nexport function port<Port extends Disposable>(injector: Injector<Port>) {\n return function (adapter?: Port): Port {\n if (!adapters.has(injector.name)) {\n const injected = injector(adapter);\n adapters.set(injector.name, injected);\n logger.info(`🔌 injected ${injector.name}:${injected.constructor.name}`);\n }\n return adapters.get(injector.name) as Port;\n };\n}\n\nconst disposers: Disposer[] = [];\nexport async function disposeAndExit(code: ExitCode = \"EXIT\"): Promise<void> {\n // ignore when errors are caught in production\n if (code === \"ERROR\" && config().env === \"production\") return;\n\n await Promise.all(disposers.map((disposer) => disposer()));\n await Promise.all(\n [...adapters.values()].reverse().map(async (adapter) => {\n await adapter.dispose();\n logger.info(`🔌 disposed ${adapter.constructor.name}`);\n })\n );\n adapters.clear();\n config().env !== \"test\" && process.exit(code === \"ERROR\" ? 1 : 0);\n}\n\n/**\n * Registers resource disposers that are triggered on process exit\n * @param disposer the disposer function\n * @returns a function that triggers all registered disposers and terminates the process\n */\nexport function dispose(\n disposer?: Disposer\n): (code?: ExitCode) => Promise<void> {\n disposer && disposers.push(disposer);\n return disposeAndExit;\n}\n\n// singleton ports\nexport const SNAP_EVENT = \"__snapshot__\";\nexport const store = port(function store(adapter?: Store) {\n return adapter || new InMemoryStore();\n});\n","import { ConcurrencyError } from \"../types/errors.js\";\nimport type {\n Committed,\n EventMeta,\n Lease,\n Message,\n Query,\n Schemas,\n Store,\n} from \"../types/index.js\";\nimport { sleep } from \"../utils.js\";\n\nclass InMemoryStream {\n _at = -1;\n _retry = -1;\n _lease: Lease | undefined;\n _blocked = false;\n\n constructor(public readonly stream: string) {}\n\n lease(lease: Lease): Lease | undefined {\n if (!this._blocked && lease.at > this._at) {\n this._lease = { ...lease, retry: this._retry + 1 };\n return this._lease;\n }\n }\n\n ack(lease: Lease) {\n if (this._lease && lease.at >= this._at) {\n this._retry = lease.retry;\n this._blocked = lease.block;\n if (!this._blocked && !lease.error) {\n this._at = lease.at;\n this._retry = 0;\n }\n this._lease = undefined;\n }\n }\n}\n\n/**\n * @category Adapters\n * @remarks In-memory event store\n */\nexport class InMemoryStore implements Store {\n // stored events\n private _events: Committed<Schemas, keyof Schemas>[] = [];\n // stored stream positions and other metadata\n private _streams: Map<string, InMemoryStream> = new Map();\n\n async dispose() {\n await sleep();\n this._events.length = 0;\n }\n\n async seed() {\n await sleep();\n }\n\n async drop() {\n await sleep();\n this._events.length = 0;\n }\n\n async query<E extends Schemas>(\n callback: (event: Committed<E, keyof E>) => void,\n query?: Query\n ) {\n await sleep();\n const {\n stream,\n names,\n before,\n after = -1,\n limit,\n created_before,\n created_after,\n correlation,\n } = query || {};\n let i = after + 1,\n count = 0;\n while (i < this._events.length) {\n const e = this._events[i++];\n if (stream && e.stream !== stream) continue;\n if (names && !names.includes(e.name)) continue;\n if (correlation && e.meta?.correlation !== correlation) continue;\n if (created_after && e.created <= created_after) continue;\n if (before && e.id >= before) break;\n if (created_before && e.created >= created_before) break;\n callback(e as Committed<E, keyof E>);\n count++;\n if (limit && count >= limit) break;\n }\n return count;\n }\n\n async commit<E extends Schemas>(\n stream: string,\n msgs: Message<E, keyof E>[],\n meta: EventMeta,\n expectedVersion?: number\n ) {\n await sleep();\n const instance = this._events.filter((e) => e.stream === stream); // ignore state events, this is a production optimization\n if (expectedVersion && instance.length - 1 !== expectedVersion)\n throw new ConcurrencyError(\n instance.length - 1,\n msgs as Message<Schemas, keyof Schemas>[],\n expectedVersion\n );\n\n let version = instance.length;\n return msgs.map(({ name, data }) => {\n const committed: Committed<E, keyof E> = {\n id: this._events.length,\n stream,\n version,\n created: new Date(),\n name,\n data,\n meta,\n };\n this._events.push(committed as Committed<Schemas, keyof Schemas>);\n version++;\n return committed;\n });\n }\n\n /**\n * Fetches new events from stream watermarks\n */\n async fetch<E extends Schemas>(limit: number) {\n const streams = [...this._streams.values()]\n .filter((s) => !s._blocked)\n .sort((a, b) => a._at - b._at)\n .slice(0, limit);\n\n const after = streams.length\n ? streams.reduce(\n (min, s) => Math.min(min, s._at),\n Number.MAX_SAFE_INTEGER\n )\n : -1;\n\n const events: Committed<E, keyof E>[] = [];\n await this.query<E>((e) => events.push(e), { after, limit });\n return { streams: streams.map(({ stream }) => stream), events };\n }\n\n async lease(leases: Lease[]) {\n await sleep();\n return leases\n .map((lease) => {\n const stream =\n this._streams.get(lease.stream) ||\n // store new correlations\n this._streams\n .set(lease.stream, new InMemoryStream(lease.stream))\n .get(lease.stream)!;\n return stream.lease(lease);\n })\n .filter((l): l is Lease => !!l);\n }\n\n async ack(leases: Lease[]) {\n await sleep();\n leases.forEach((lease) => this._streams.get(lease.stream)?.ack(lease));\n }\n}\n","import { randomUUID } from \"crypto\";\nimport EventEmitter from \"events\";\nimport * as es from \"./event-sourcing.js\";\nimport { logger, store } from \"./ports.js\";\nimport { ValidationError } from \"./types/errors.js\";\nimport type {\n Committed,\n Lease,\n Query,\n ReactionPayload,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\n\ntype SnapshotArgs = Snapshot<Schemas, Schema>;\n\n/**\n * Act is the main orchestrator for event-sourced state machines.\n * It manages actions, reactions, event streams, and provides APIs for loading, querying, and draining events.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport class Act<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> {\n private _emitter = new EventEmitter();\n\n emit(event: \"committed\", args: SnapshotArgs): boolean;\n emit(event: \"drained\", args: Lease[]): boolean;\n emit(event: string, args: any): boolean {\n return this._emitter.emit(event, args);\n }\n\n on(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n on(event: \"drained\", listener: (args: Lease[]) => void): this;\n on(event: string, listener: (args: any) => void): this {\n this._emitter.on(event, listener);\n return this;\n }\n\n off(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n off(event: \"drained\", listener: (args: Lease[]) => void): this;\n off(event: string, listener: (args: any) => void): this {\n this._emitter.off(event, listener);\n return this;\n }\n\n constructor(\n public readonly registry: Registry<S, E, A>,\n public readonly drainLimit: number\n ) {}\n\n /**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template K The type of action to execute\n * @template T The type of target\n * @template P The type of payloads\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\n async do<K extends keyof A>(\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<E, keyof E>,\n skipValidation = false\n ) {\n const snapshot = await es.action(\n this.registry.actions[action],\n action,\n target,\n payload,\n reactingTo as Committed<Schemas, keyof Schemas>,\n skipValidation\n );\n this.emit(\"committed\", snapshot as SnapshotArgs);\n return snapshot;\n }\n\n /**\n * Loads a snapshot of the state from the store.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to load\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\n async load<SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>,\n stream: string,\n callback?: (snapshot: Snapshot<SX, EX>) => void\n ): Promise<Snapshot<SX, EX>> {\n return await es.load(state, stream, callback);\n }\n\n /**\n * Queries the store for events.\n *\n * @param query The query to execute\n * @param callback The callback to call with the events\n * @returns The query result\n */\n async query(\n query: Query,\n callback?: (event: Committed<E, keyof E>) => void\n ): Promise<{\n first?: Committed<E, keyof E>;\n last?: Committed<E, keyof E>;\n count: number;\n }> {\n let first: Committed<E, keyof E> | undefined = undefined,\n last: Committed<E, keyof E> | undefined = undefined;\n const count = await store().query<E>((e) => {\n !first && (first = e);\n last = e;\n callback && callback(e);\n }, query);\n return { first, last, count };\n }\n\n /**\n * Handles leased reactions.\n *\n * @param lease The lease to handle\n * @param reactions The reactions to handle\n * @returns The lease\n */\n private async handle(\n lease: Lease,\n reactions: ReactionPayload<E>[]\n ): Promise<Lease> {\n const stream = lease.stream;\n\n lease.retry > 0 &&\n logger.warn(`Retrying ${stream}@${lease.at} (${lease.retry}).`);\n\n for (const reaction of reactions) {\n const { event, handler, options } = reaction;\n try {\n await handler(event, stream); // the actual reaction\n lease.at = event.id;\n } catch (error) {\n lease.error = error;\n if (error instanceof ValidationError)\n logger.error({ stream, error }, error.message);\n else logger.error(error);\n\n if (lease.retry < options.maxRetries) lease.retry++;\n else if (options.blockOnError) {\n lease.block = true;\n logger.error(`Blocked ${stream} after ${lease.retry} retries.`);\n }\n break;\n }\n }\n return lease;\n }\n\n private drainLocked = false;\n\n /**\n * Drains events from the store.\n *\n * @returns The number of drained events\n */\n async drain(): Promise<number> {\n if (this.drainLocked) return 0;\n this.drainLocked = true;\n\n const drained: Lease[] = [];\n const { streams, events } = await store().fetch<E>(this.drainLimit);\n\n if (events.length) {\n logger.trace(\n events\n .map(({ id, stream, name }) => ({ id, stream, name }))\n .reduce(\n (a, { id, stream, name }) => ({ ...a, [id]: { [stream]: name } }),\n {}\n ),\n \"⚡️ fetch\"\n );\n\n // correlate events to streams by reaction resolvers\n const resolved = new Set<string>(streams);\n const correlated = new Map<string, ReactionPayload<E>[]>();\n for (const event of events)\n for (const reaction of this.registry.events[\n event.name\n ].reactions.values()) {\n const stream =\n typeof reaction.resolver === \"string\"\n ? reaction.resolver\n : reaction.resolver(event);\n if (stream) {\n resolved.add(stream);\n (\n correlated.get(stream) || correlated.set(stream, []).get(stream)!\n ).push({ ...reaction, event: event });\n }\n }\n\n // lease fetched & resolved streams to the position of the last fetched event\n const last = events.at(-1)!.id;\n const leases = [...resolved.values()].map((stream) => ({\n by: randomUUID(),\n stream,\n at: last,\n retry: 0,\n block: false,\n }));\n const leased = await store().lease(leases);\n logger.trace(\n leased\n .map(({ stream, at, retry }) => ({ stream, at, retry }))\n .reduce(\n (a, { stream, at, retry }) => ({ ...a, [stream]: { at, retry } }),\n {}\n ),\n \"⚡️ lease\"\n );\n\n const handling = leased\n .map((lease) => ({\n lease,\n reactions: correlated.get(lease.stream) || [],\n }))\n .filter(({ reactions }) => reactions.length);\n\n if (handling.length) {\n await Promise.allSettled(\n handling.map(({ lease, reactions }) => this.handle(lease, reactions))\n ).then(\n (promise) => {\n promise.forEach((result) => {\n if (result.status === \"rejected\") logger.error(result.reason);\n else if (!result.value.error) drained.push(result.value);\n });\n },\n (error) => logger.error(error)\n );\n drained.length && this.emit(\"drained\", drained);\n }\n\n // acknowledge leases\n await store().ack(leased);\n logger.trace(\n leased\n .map(({ stream, at, retry, block, error }) => ({\n stream,\n at,\n retry,\n block,\n error,\n }))\n .reduce(\n (a, { stream, at, retry, block, error }) => ({\n ...a,\n [stream]: { at, retry, block, error },\n }),\n {}\n ),\n \"⚡️ ack\"\n );\n }\n\n this.drainLocked = false;\n return drained.length;\n }\n}\n","import { randomUUID } from \"crypto\";\nimport { logger, SNAP_EVENT, store } from \"./ports.js\";\nimport { InvariantError } from \"./types/errors.js\";\nimport type {\n Committed,\n Emitted,\n EventMeta,\n Schema,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\nimport { patch, validate } from \"./utils.js\";\n\n/**\n * Event sourcing utilities for snapshotting, loading, and committing actions/events.\n * Used internally by Act and state machines.\n */\n\n/**\n * Saves a snapshot of the state to the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param snapshot The snapshot to save\n */\nexport async function snap<S extends Schema, E extends Schemas>(\n snapshot: Snapshot<S, E>\n): Promise<void> {\n try {\n const { id, stream, name, meta, version } = snapshot.event!;\n const snapped = await store().commit(\n stream,\n [{ name: SNAP_EVENT, data: snapshot.state }],\n {\n correlation: meta.correlation,\n causation: { event: { id, name: name as string, stream } },\n },\n version // IMPORTANT! - state events are committed right after the snapshot event\n );\n logger.trace(snapped, \"🟠 snap\");\n } catch (error) {\n logger.error(error);\n }\n}\n\n/**\n * Loads a snapshot of the state from the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param me The state machine\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\nexport async function load<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n>(\n me: State<S, E, A>,\n stream: string,\n callback?: (snapshot: Snapshot<S, E>) => void\n): Promise<Snapshot<S, E>> {\n let state = me.init ? me.init() : ({} as S);\n let patches = 0;\n let snaps = 0;\n let event: Committed<E, string> | undefined;\n await store().query(\n (e) => {\n event = e as Committed<E, string>;\n if (e.name === SNAP_EVENT) {\n state = e.data as S;\n snaps++;\n patches = 0;\n } else if (me.patch[e.name]) {\n state = patch(state, me.patch[e.name](event, state));\n patches++;\n }\n callback && callback({ event, state, patches, snaps });\n },\n { stream },\n true\n );\n logger.trace({ stream, patches, snaps, state }, \"🟢 load\");\n return { event, state, patches, snaps };\n}\n\n/**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actionSchemas\n * @template K The type of action to execute\n * @param me The state machine\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\nexport async function action<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n K extends keyof A,\n>(\n me: State<S, E, A>,\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<Schemas, keyof Schemas>,\n skipValidation = false\n): Promise<Snapshot<S, E>> {\n const { stream, expectedVersion, actor } = target;\n if (!stream) throw new Error(\"Missing target stream\");\n\n payload = skipValidation\n ? payload\n : validate(action as string, payload, me.actions[action]);\n logger.trace(\n payload,\n `🔵 ${action as string} \"${stream}${expectedVersion ? `@${expectedVersion}` : \"\"}\"`\n );\n\n let snapshot = await load(me, stream);\n if (me.given) {\n const invariants = me.given[action] || [];\n invariants.forEach(({ valid, description }) => {\n if (!valid(snapshot.state, actor))\n throw new InvariantError(\n action as string,\n payload,\n target,\n description\n );\n });\n }\n\n let { state, patches } = snapshot;\n const result = me.on[action](payload, state, target);\n if (!result) return snapshot;\n\n // An empty array means no events were emitted\n if (Array.isArray(result) && result.length === 0) {\n return snapshot;\n }\n\n const tuples = Array.isArray(result[0])\n ? (result as Emitted<E>[]) // array of tuples\n : ([result] as Emitted<E>[]); // single tuple\n\n const emitted = tuples.map(([name, data]) => ({\n name,\n data: skipValidation\n ? data\n : validate(name as string, data, me.events[name]),\n }));\n\n const meta: EventMeta = {\n correlation: reactingTo?.meta.correlation || randomUUID(),\n causation: {\n action: {\n name: action as string,\n ...target,\n // payload: TODO: flag to include action payload in metadata\n // not included by default to avoid large payloads\n },\n event: reactingTo\n ? {\n id: reactingTo.id,\n name: reactingTo.name,\n stream: reactingTo.stream,\n }\n : undefined,\n },\n };\n\n const committed = await store().commit(\n stream,\n emitted,\n meta,\n // TODO: review reactions not enforcing expected version\n reactingTo ? undefined : expectedVersion || snapshot.event?.version\n );\n\n snapshot = committed\n .map((event) => {\n state = patch(state, me.patch[event.name](event, state));\n patches++;\n logger.trace({ event, state }, \"🔴 commit\");\n return { event, state, patches, snaps: snapshot.snaps };\n })\n .at(-1)!;\n\n me.snap && me.snap(snapshot) && void snap(snapshot); // fire and forget snaps\n return snapshot;\n}\n","import { Act } from \"./act.js\";\nimport type {\n EventRegister,\n Reaction,\n ReactionHandler,\n ReactionOptions,\n ReactionResolver,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n State,\n} from \"./types/index.js\";\n\n// resolves to the event stream (default)\nconst _this_ = ({ stream }: { stream: string }) => stream;\n// resolves to nothing\nconst _void_ = () => undefined;\n\n/**\n * Fluent builder for composing event-sourced state machines with actions and reactions.\n * Provides a chainable API for registering states, events, and reaction handlers.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport type ActBuilder<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> = {\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => ActBuilder<S & { [K in keyof AX]: SX }, E & EX, A & AX>;\n on: <K extends keyof E>(\n event: K\n ) => {\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => ActBuilder<S, E, A> & {\n to: (resolver: ReactionResolver<E, K>) => ActBuilder<S, E, A>;\n void: () => ActBuilder<S, E, A>;\n };\n };\n build: (drainLimit?: number) => Act<S, E, A>;\n readonly events: EventRegister<E>;\n};\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\n\n/**\n * Creates an ActBuilder instance.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actions\n */\nexport function act<\n // @ts-expect-error empty schema\n S extends SchemaRegister<A> = {},\n E extends Schemas = {},\n A extends Schemas = {},\n>(\n states: Set<string> = new Set(),\n registry: Registry<S, E, A> = {\n actions: {} as any,\n events: {} as any,\n }\n): ActBuilder<S, E, A> {\n const builder: ActBuilder<S, E, A> = {\n /**\n * Adds a state to the builder.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to add\n * @returns The builder\n */\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => {\n if (!states.has(state.name)) {\n states.add(state.name);\n for (const name of Object.keys(state.actions)) {\n if (registry.actions[name])\n throw new Error(`Duplicate action \"${name}\"`);\n // @ts-expect-error indexed access\n registry.actions[name] = state;\n }\n for (const name of Object.keys(state.events)) {\n if (registry.events[name])\n throw new Error(`Duplicate event \"${name}\"`);\n // @ts-expect-error indexed access\n registry.events[name] = {\n schema: state.events[name],\n reactions: new Map(),\n };\n }\n }\n return act<S & { [K in keyof AX]: SX }, E & EX, A & AX>(\n states,\n registry as unknown as Registry<\n S & { [K in keyof AX]: SX },\n E & EX,\n A & AX\n >\n );\n },\n /**\n * Adds a reaction to an event.\n *\n * @template K The type of event\n * @param event The event to add a reaction to\n * @returns The builder\n */\n on: <K extends keyof E>(event: K) => ({\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => {\n const reaction: Reaction<E, K> = {\n handler,\n resolver: _this_,\n options: {\n blockOnError: options?.blockOnError ?? true,\n maxRetries: options?.maxRetries ?? 3,\n retryDelayMs: options?.retryDelayMs ?? 1000,\n },\n };\n registry.events[event].reactions.set(handler.name, reaction);\n return {\n ...builder,\n to(resolver: ReactionResolver<E, K>) {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver,\n });\n return builder;\n },\n void() {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver: _void_,\n });\n return builder;\n },\n };\n },\n }),\n build: (drainLimit = 10) => new Act<S, E, A>(registry, drainLimit),\n events: registry.events,\n };\n return builder;\n}\n","import { ZodType } from \"zod/v4\";\nimport {\n ActionHandler,\n ActionHandlers,\n GivenHandlers,\n Invariant,\n PatchHandlers,\n Schema,\n Schemas,\n Snapshot,\n State,\n ZodTypes,\n} from \"./types/index.js\";\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\nexport type StateBuilder<S extends Schema> = {\n init: (init: () => Readonly<S>) => {\n emits: <E extends Schemas>(\n events: ZodTypes<E>\n ) => {\n patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, {}>;\n };\n };\n};\n\nexport type ActionBuilder<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n> = {\n on: <K extends string, AX extends Schema>(\n action: K,\n schema: ZodType<AX>\n ) => {\n given: (rules: Invariant<S>[]) => {\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;\n build: () => State<S, E, A>;\n};\n\n/**\n * Fluent interface for defining a strongly-typed state machine using Zod schemas.\n *\n * This builder helps you model a system where:\n * - You start by defining the state schema with `state(name, zodSchema)`\n * - Then, provide the initial state using `.init(() => defaultState)`\n * - Declare the event types your system can emit using `.emits({ ... })`\n * - Define how emitted events update state with `.patch({ ... })`\n * - Define actions using `.on(\"actionName\", actionSchema)`\n * - Optionally constrain the action with `.given([...invariants])`\n * - Then finalize the action behavior with `.emit(handler)`\n * - (Optional) Define a `.snap(snapshot => boolean)` function to reduce recomputations\n * - Finalize the state machine definition using `.build()`\n *\n * Example usage:\n * ```ts\n * const machine = state(\"machine\", myStateSchema)\n * .init(() => ({ count: 0 }))\n * .emits({ Incremented: z.object({ amount: z.number() }) })\n * .patch({\n * Incremented: (event, state) => ({ count: state.count + event.amount })\n * })\n * .on(\"increment\", z.object({ by: z.number() }))\n * .given([{ description: \"must be positive\", valid: (s, a) => a?.by > 0 }])\n * .emit((action, state) => ({ type: \"Incremented\", amount: action.by }))\n * .build();\n * ```\n */\nexport function state<S extends Schema>(\n name: string,\n state: ZodType<S>\n): StateBuilder<S> {\n return {\n init(init: () => Readonly<S>) {\n return {\n emits<E extends Schema>(events: ZodTypes<E>) {\n return {\n patch(patch: PatchHandlers<S, E>) {\n return action_builder<S, E, {}>({\n events,\n actions: {},\n state,\n name,\n init,\n patch,\n on: {},\n });\n },\n };\n },\n };\n },\n };\n}\n\nfunction action_builder<S extends Schema, E extends Schemas, A extends Schemas>(\n state: State<S, E, A>\n): ActionBuilder<S, E, A> {\n return {\n on<K extends string, AX extends Schema>(action: K, schema: ZodType<AX>) {\n if (action in state.actions)\n throw new Error(`Duplicate action \"${action}\"`);\n\n type NewA = A & { [P in K]: AX };\n const actions = { ...state.actions, [action]: schema } as ZodTypes<NewA>;\n const on = { ...state.on } as ActionHandlers<S, E, NewA>;\n const _given = { ...state.given } as GivenHandlers<S, NewA>;\n\n function given(rules: Invariant<S>[]) {\n _given[action] = rules;\n return { emit };\n }\n\n function emit(handler: ActionHandler<S, E, NewA, K>) {\n on[action] = handler;\n return action_builder<S, E, NewA>({\n ...state,\n actions,\n on,\n given: _given,\n });\n }\n\n return { given, emit };\n },\n\n snap(snap: (snapshot: Snapshot<S, E>) => boolean) {\n return action_builder<S, E, A>({ ...state, snap });\n },\n\n build(): State<S, E, A> {\n return state;\n },\n };\n}\n","import { config } from \"./config.js\";\nimport { disposeAndExit, logger } from \"./ports.js\";\n\n/**\n * @module act\n * Main entry point for the Act framework. Re-exports all core APIs.\n */\nexport * from \"./act-builder.js\";\nexport * from \"./act.js\";\nexport * from \"./ports.js\";\nexport * from \"./state-builder.js\";\nexport * from \"./types/index.js\";\nexport * from \"./utils.js\";\nexport { config };\n\n// exit on signals\nprocess.once(\"SIGINT\", async (arg?: any) => {\n logger.info(arg, \"SIGINT\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"SIGTERM\", async (arg?: any) => {\n logger.info(arg, \"SIGTERM\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"uncaughtException\", async (arg?: any) => {\n logger.error(arg, \"Uncaught Exception\");\n await disposeAndExit(\"ERROR\");\n});\nprocess.once(\"unhandledRejection\", async (arg?: any) => {\n logger.error(arg, \"Unhandled Rejection\");\n await disposeAndExit(\"ERROR\");\n});\n"],"mappings":"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","names":["z","z","pkg","store","randomUUID","state","action","action","state","randomUUID","state","state","patch","action","snap"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/types/errors.ts","../src/types/schemas.ts","../src/types/index.ts","../src/utils.ts","../src/ports.ts","../src/adapters/InMemoryStore.ts","../src/act.ts","../src/event-sourcing.ts","../src/act-builder.ts","../src/state-builder.ts","../src/index.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport { z } from \"zod/v4\";\nimport {\n Environment,\n Environments,\n LogLevel,\n LogLevels,\n} from \"./types/index.js\";\nimport { extend } from \"./utils.js\";\n\n/**\n * Configuration utilities for environment, logging, and package metadata.\n */\n\nexport const PackageSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().min(1),\n author: z\n .object({ name: z.string().min(1), email: z.string().optional() })\n .or(z.string().min(1)),\n license: z.string().min(1),\n dependencies: z.record(z.string(), z.string()),\n});\nexport type Package = z.infer<typeof PackageSchema>;\n\nconst getPackage = (): Package => {\n const pkg = fs.readFileSync(\"package.json\");\n return JSON.parse(pkg.toString()) as Package;\n};\n\nconst BaseSchema = PackageSchema.extend({\n env: z.enum(Environments),\n logLevel: z.enum(LogLevels),\n logSingleLine: z.boolean(),\n sleepMs: z.number().int().min(0).max(5000),\n});\nexport type Config = z.infer<typeof BaseSchema>;\n\nconst { NODE_ENV, LOG_LEVEL, LOG_SINGLE_LINE, SLEEP_MS } = process.env;\n\nconst env = (NODE_ENV || \"development\") as Environment;\nconst logLevel = (LOG_LEVEL ||\n (NODE_ENV === \"test\"\n ? \"error\"\n : LOG_LEVEL === \"production\"\n ? \"info\"\n : \"trace\")) as LogLevel;\nconst logSingleLine = (LOG_SINGLE_LINE || \"true\") === \"true\";\nconst sleepMs = parseInt(NODE_ENV === \"test\" ? \"0\" : (SLEEP_MS ?? \"100\"));\n\nconst pkg = getPackage();\n\nexport const config = (): Config => {\n return extend({ ...pkg, env, logLevel, logSingleLine, sleepMs }, BaseSchema);\n};\n","import type { Message, Schema, Schemas, Target } from \"./action.js\";\n\n/**\n * Application error types\n * - `ERR_VALIDATION` schema validation error\n * - `ERR_INVARIANT` invariant validation error\n * - `ERR_CONCURRENCY` optimistic concurrency validation error on commits\n */\nexport const Errors = {\n ValidationError: \"ERR_VALIDATION\",\n InvariantError: \"ERR_INVARIANT\",\n ConcurrencyError: \"ERR_CONCURRENCY\",\n} as const;\n\nexport class ValidationError extends Error {\n constructor(\n public readonly target: string,\n public readonly payload: any,\n public readonly details: any\n ) {\n super(`Invalid ${target} payload`);\n this.name = Errors.ValidationError;\n }\n}\n\nexport class InvariantError extends Error {\n public readonly details;\n constructor(\n name: string,\n payload: Schema,\n target: Target,\n description: string\n ) {\n super(`${name} failed invariant: ${description}`);\n this.name = Errors.InvariantError;\n this.details = { name, payload, target, description };\n }\n}\n\nexport class ConcurrencyError extends Error {\n constructor(\n public readonly lastVersion: number,\n public readonly events: Message<Schemas, keyof Schemas>[],\n public readonly expectedVersion: number\n ) {\n super(\n `Concurrency error committing event \"${\n events.at(0)?.name\n }\". Expected version ${expectedVersion} but found version ${lastVersion}.`\n );\n this.name = Errors.ConcurrencyError;\n }\n}\n","import { z, ZodObject, ZodRawShape } from \"zod/v4\";\n\nexport const ZodEmpty = z.record(z.string(), z.never());\n\nexport const ActorSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n })\n .readonly();\n\nexport const TargetSchema = z\n .object({\n stream: z.string(),\n actor: ActorSchema,\n expectedVersion: z.number().optional(),\n })\n .readonly();\n\nexport const CausationEventSchema = z.object({\n id: z.number(),\n name: z.string(),\n stream: z.string(),\n});\n\nexport const EventMetaSchema = z\n .object({\n correlation: z.string(),\n causation: z.object({\n action: TargetSchema.and(z.object({ name: z.string() })).optional(),\n event: CausationEventSchema.optional(),\n }),\n })\n .readonly();\n\nexport const CommittedMetaSchema = z\n .object({\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n .readonly();\n\nexport type StateSchema = Readonly<{\n events: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n actions: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n state: ZodObject<ZodRawShape>;\n}>;\n\nexport function buildSnapshotSchema<S extends StateSchema>(s: S) {\n const events = Object.entries(s.events).map(([name, zod]) =>\n z.object({\n name: z.literal(name),\n data: zod,\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n );\n return z.object({\n state: s.state.readonly(),\n event: z.union([events[0], events[1], ...events.slice(2)]).optional(),\n patches: z.number(),\n snaps: z.number(),\n });\n}\n\n/**\n * Options to query the all stream\n * - `stream?` filter by stream\n * - `names?` filter by event names\n * - `before?` filter events before this id\n * - `after?` filter events after this id\n * - `limit?` limit the number of events to return\n * - `created_before?` filter events created before this date/time\n * - `created_after?` filter events created after this date/time\n * - `backward?` order descending when true\n * - `correlation?` filter by correlation\n * - `actor?` filter by actor id (mainly used to reduce process managers)\n * - `loading?` flag when loading to optimize queries\n */\nexport const QuerySchema = z.object({\n stream: z.string().optional(),\n names: z.string().array().optional(),\n before: z.number().optional(),\n after: z.number().optional(),\n limit: z.number().optional(),\n created_before: z.date().optional(),\n created_after: z.date().optional(),\n backward: z.boolean().optional(),\n correlation: z.string().optional(),\n});\n","export type * from \"./action.js\";\nexport * from \"./errors.js\";\nexport type * from \"./ports.js\";\nexport type * from \"./reaction.js\";\nexport type * from \"./registry.js\";\nexport * from \"./schemas.js\";\n\nexport const Environments = [\n \"development\",\n \"test\",\n \"staging\",\n \"production\",\n] as const;\nexport type Environment = (typeof Environments)[number];\n\nexport const LogLevels = [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n] as const;\nexport type LogLevel = (typeof LogLevels)[number];\n","import { ZodError, type ZodType, prettifyError } from \"zod/v4\";\nimport { config } from \"./config.js\";\nimport type { Patch, Schema } from \"./types/index.js\";\nimport { ValidationError } from \"./types/index.js\";\n\n/** These objects are copied instead of deep merged */\nconst UNMERGEABLES = [\n RegExp,\n Date,\n Array,\n Map,\n Set,\n WeakMap,\n WeakSet,\n ArrayBuffer,\n SharedArrayBuffer,\n DataView,\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n];\n\nconst is_mergeable = (value: any): boolean =>\n !!value &&\n typeof value === \"object\" &&\n !UNMERGEABLES.some((t) => value instanceof t);\n\n/**\n * Utility functions for patching state, validation, extending objects, and async helpers.\n */\n\n/**\n * Copies state with patches recursively.\n * Keys with `undefined` or `null` values in patch are deleted.\n * @param original original state\n * @param patches patches to merge\n * @returns a new patched state\n */\nexport const patch = <S extends Schema>(\n original: Readonly<S>,\n patches: Readonly<Patch<S>>\n): Readonly<S> => {\n const copy = {} as Record<string, any>;\n Object.keys({ ...original, ...patches }).forEach((key) => {\n const patched_value = patches[key as keyof typeof patches];\n const original_value = original[key as keyof typeof original];\n const patched = patches && key in patches;\n const deleted =\n patched &&\n (typeof patched_value === \"undefined\" || patched_value === null);\n const value = patched && !deleted ? patched_value : original_value;\n !deleted &&\n (copy[key] = is_mergeable(value)\n ? patch(original_value || {}, patched_value || {})\n : value);\n });\n return copy as S;\n};\n\nexport const validate = <S>(\n target: string,\n payload: Readonly<S>,\n schema?: ZodType<S>\n): Readonly<S> => {\n try {\n return schema ? schema.parse(payload) : payload;\n } catch (error) {\n if (error instanceof Error && error.name === \"ZodError\") {\n throw new ValidationError(\n target,\n payload,\n prettifyError(error as ZodError)\n );\n }\n throw new ValidationError(target, payload, error);\n }\n};\n\n/**\n * Extends target payload with source payload after validating source\n */\nexport const extend = <\n S extends Record<string, unknown>,\n T extends Record<string, unknown>,\n>(\n source: Readonly<S>,\n schema: ZodType<S>,\n target?: Readonly<T>\n): Readonly<S & T> => {\n const value = validate(\"config\", source, schema);\n return Object.assign(target || {}, value) as Readonly<S & T>;\n};\n\nexport async function sleep(ms?: number) {\n return new Promise((resolve) => setTimeout(resolve, ms ?? config().sleepMs));\n}\n","import { pino } from \"pino\";\nimport { InMemoryStore } from \"./adapters/InMemoryStore.js\";\nimport { config } from \"./config.js\";\nimport type { Disposable, Disposer, Store } from \"./types/index.js\";\n\n/**\n * Port and adapter utilities for logging, store management, and resource disposal.\n * Provides singleton store and logger instances.\n */\n\nexport const ExitCodes = [\"ERROR\", \"EXIT\"] as const;\nexport type ExitCode = (typeof ExitCodes)[number];\n\nexport const logger = pino({\n transport:\n config().env !== \"production\"\n ? {\n target: \"pino-pretty\",\n options: {\n ignore: \"pid,hostname\",\n singleLine: config().logSingleLine,\n colorize: true,\n },\n }\n : undefined,\n level: config().logLevel,\n});\n\ntype Injector<Port extends Disposable> = (adapter?: Port) => Port;\nconst adapters = new Map<string, Disposable>();\nexport function port<Port extends Disposable>(injector: Injector<Port>) {\n return function (adapter?: Port): Port {\n if (!adapters.has(injector.name)) {\n const injected = injector(adapter);\n adapters.set(injector.name, injected);\n logger.info(`🔌 injected ${injector.name}:${injected.constructor.name}`);\n }\n return adapters.get(injector.name) as Port;\n };\n}\n\nconst disposers: Disposer[] = [];\nexport async function disposeAndExit(code: ExitCode = \"EXIT\"): Promise<void> {\n // ignore when errors are caught in production\n if (code === \"ERROR\" && config().env === \"production\") return;\n\n await Promise.all(disposers.map((disposer) => disposer()));\n await Promise.all(\n [...adapters.values()].reverse().map(async (adapter) => {\n await adapter.dispose();\n logger.info(`🔌 disposed ${adapter.constructor.name}`);\n })\n );\n adapters.clear();\n config().env !== \"test\" && process.exit(code === \"ERROR\" ? 1 : 0);\n}\n\n/**\n * Registers resource disposers that are triggered on process exit\n * @param disposer the disposer function\n * @returns a function that triggers all registered disposers and terminates the process\n */\nexport function dispose(\n disposer?: Disposer\n): (code?: ExitCode) => Promise<void> {\n disposer && disposers.push(disposer);\n return disposeAndExit;\n}\n\n// singleton ports\nexport const SNAP_EVENT = \"__snapshot__\";\nexport const store = port(function store(adapter?: Store) {\n return adapter || new InMemoryStore();\n});\n","import { SNAP_EVENT } from \"../ports.js\";\nimport { ConcurrencyError } from \"../types/errors.js\";\nimport type {\n Committed,\n EventMeta,\n Lease,\n Message,\n Query,\n Schemas,\n Store,\n} from \"../types/index.js\";\nimport { sleep } from \"../utils.js\";\n\nclass InMemoryStream {\n _at = -1;\n _retry = -1;\n _lease: Lease | undefined;\n _blocked = false;\n\n constructor(public readonly stream: string) {}\n\n lease(lease: Lease): Lease | undefined {\n if (!this._blocked && lease.at > this._at) {\n this._lease = { ...lease, retry: this._retry + 1 };\n return this._lease;\n }\n }\n\n ack(lease: Lease) {\n if (this._lease && lease.at >= this._at) {\n this._retry = lease.retry;\n this._blocked = lease.block;\n if (!this._blocked && !lease.error) {\n this._at = lease.at;\n this._retry = 0;\n }\n this._lease = undefined;\n }\n }\n}\n\n/**\n * @category Adapters\n * @remarks In-memory event store\n */\nexport class InMemoryStore implements Store {\n // stored events\n private _events: Committed<Schemas, keyof Schemas>[] = [];\n // stored stream positions and other metadata\n private _streams: Map<string, InMemoryStream> = new Map();\n\n async dispose() {\n await sleep();\n this._events.length = 0;\n }\n\n async seed() {\n await sleep();\n }\n\n async drop() {\n await sleep();\n this._events.length = 0;\n }\n\n async query<E extends Schemas>(\n callback: (event: Committed<E, keyof E>) => void,\n query?: Query\n ) {\n await sleep();\n const {\n stream,\n names,\n before,\n after = -1,\n limit,\n created_before,\n created_after,\n correlation,\n } = query || {};\n let i = after + 1,\n count = 0;\n while (i < this._events.length) {\n const e = this._events[i++];\n if (stream && e.stream !== stream) continue;\n if (names && !names.includes(e.name)) continue;\n if (correlation && e.meta?.correlation !== correlation) continue;\n if (created_after && e.created <= created_after) continue;\n if (before && e.id >= before) break;\n if (created_before && e.created >= created_before) break;\n callback(e as Committed<E, keyof E>);\n count++;\n if (limit && count >= limit) break;\n }\n return count;\n }\n\n async commit<E extends Schemas>(\n stream: string,\n msgs: Message<E, keyof E>[],\n meta: EventMeta,\n expectedVersion?: number\n ) {\n await sleep();\n const instance = this._events.filter((e) => e.stream === stream); // ignore state events, this is a production optimization\n if (expectedVersion && instance.length - 1 !== expectedVersion)\n throw new ConcurrencyError(\n instance.length - 1,\n msgs as Message<Schemas, keyof Schemas>[],\n expectedVersion\n );\n\n let version = instance.length;\n return msgs.map(({ name, data }) => {\n const committed: Committed<E, keyof E> = {\n id: this._events.length,\n stream,\n version,\n created: new Date(),\n name,\n data,\n meta,\n };\n this._events.push(committed as Committed<Schemas, keyof Schemas>);\n version++;\n return committed;\n });\n }\n\n /**\n * Fetches new events from stream watermarks\n */\n async fetch<E extends Schemas>(limit: number) {\n const streams = [...this._streams.values()]\n .filter((s) => !s._blocked)\n .sort((a, b) => a._at - b._at)\n .slice(0, limit);\n\n const after = streams.length\n ? streams.reduce(\n (min, s) => Math.min(min, s._at),\n Number.MAX_SAFE_INTEGER\n )\n : -1;\n\n const events: Committed<E, keyof E>[] = [];\n await this.query<E>((e) => e.name !== SNAP_EVENT && events.push(e), {\n after,\n limit,\n });\n return { streams: streams.map(({ stream }) => stream), events };\n }\n\n async lease(leases: Lease[]) {\n await sleep();\n return leases\n .map((lease) => {\n const stream =\n this._streams.get(lease.stream) ||\n // store new correlations\n this._streams\n .set(lease.stream, new InMemoryStream(lease.stream))\n .get(lease.stream)!;\n return stream.lease(lease);\n })\n .filter((l): l is Lease => !!l);\n }\n\n async ack(leases: Lease[]) {\n await sleep();\n leases.forEach((lease) => this._streams.get(lease.stream)?.ack(lease));\n }\n}\n","import { randomUUID } from \"crypto\";\nimport EventEmitter from \"events\";\nimport * as es from \"./event-sourcing.js\";\nimport { logger, store } from \"./ports.js\";\nimport { ValidationError } from \"./types/errors.js\";\nimport type {\n Committed,\n Lease,\n Query,\n ReactionPayload,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\n\ntype SnapshotArgs = Snapshot<Schemas, Schema>;\n\n/**\n * Act is the main orchestrator for event-sourced state machines.\n * It manages actions, reactions, event streams, and provides APIs for loading, querying, and draining events.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport class Act<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> {\n private _emitter = new EventEmitter();\n\n emit(event: \"committed\", args: SnapshotArgs): boolean;\n emit(event: \"drained\", args: Lease[]): boolean;\n emit(event: string, args: any): boolean {\n return this._emitter.emit(event, args);\n }\n\n on(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n on(event: \"drained\", listener: (args: Lease[]) => void): this;\n on(event: string, listener: (args: any) => void): this {\n this._emitter.on(event, listener);\n return this;\n }\n\n off(event: \"committed\", listener: (args: SnapshotArgs) => void): this;\n off(event: \"drained\", listener: (args: Lease[]) => void): this;\n off(event: string, listener: (args: any) => void): this {\n this._emitter.off(event, listener);\n return this;\n }\n\n constructor(\n public readonly registry: Registry<S, E, A>,\n public readonly drainLimit: number\n ) {}\n\n /**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template K The type of action to execute\n * @template T The type of target\n * @template P The type of payloads\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\n async do<K extends keyof A>(\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<E, keyof E>,\n skipValidation = false\n ) {\n const snapshot = await es.action(\n this.registry.actions[action],\n action,\n target,\n payload,\n reactingTo as Committed<Schemas, keyof Schemas>,\n skipValidation\n );\n this.emit(\"committed\", snapshot as SnapshotArgs);\n return snapshot;\n }\n\n /**\n * Loads a snapshot of the state from the store.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to load\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\n async load<SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>,\n stream: string,\n callback?: (snapshot: Snapshot<SX, EX>) => void\n ): Promise<Snapshot<SX, EX>> {\n return await es.load(state, stream, callback);\n }\n\n /**\n * Queries the store for events.\n *\n * @param query The query to execute\n * @param callback The callback to call with the events\n * @returns The query result\n */\n async query(\n query: Query,\n callback?: (event: Committed<E, keyof E>) => void\n ): Promise<{\n first?: Committed<E, keyof E>;\n last?: Committed<E, keyof E>;\n count: number;\n }> {\n let first: Committed<E, keyof E> | undefined = undefined,\n last: Committed<E, keyof E> | undefined = undefined;\n const count = await store().query<E>((e) => {\n !first && (first = e);\n last = e;\n callback && callback(e);\n }, query);\n return { first, last, count };\n }\n\n /**\n * Handles leased reactions.\n *\n * @param lease The lease to handle\n * @param reactions The reactions to handle\n * @returns The lease\n */\n private async handle(\n lease: Lease,\n reactions: ReactionPayload<E>[]\n ): Promise<Lease> {\n const stream = lease.stream;\n\n lease.retry > 0 &&\n logger.warn(`Retrying ${stream}@${lease.at} (${lease.retry}).`);\n\n for (const reaction of reactions) {\n const { event, handler, options } = reaction;\n try {\n await handler(event, stream); // the actual reaction\n lease.at = event.id;\n } catch (error) {\n lease.error = error;\n if (error instanceof ValidationError)\n logger.error({ stream, error }, error.message);\n else logger.error(error);\n\n if (lease.retry < options.maxRetries) lease.retry++;\n else if (options.blockOnError) {\n lease.block = true;\n logger.error(`Blocked ${stream} after ${lease.retry} retries.`);\n }\n break;\n }\n }\n return lease;\n }\n\n private drainLocked = false;\n\n /**\n * Drains events from the store.\n *\n * @returns The number of drained events\n */\n async drain(): Promise<number> {\n if (this.drainLocked) return 0;\n this.drainLocked = true;\n\n const drained: Lease[] = [];\n const { streams, events } = await store().fetch<E>(this.drainLimit);\n\n if (events.length) {\n logger.trace(\n events\n .map(({ id, stream, name }) => ({ id, stream, name }))\n .reduce(\n (a, { id, stream, name }) => ({ ...a, [id]: { [stream]: name } }),\n {}\n ),\n \"⚡️ fetch\"\n );\n\n // correlate events to streams by reaction resolvers\n const resolved = new Set<string>(streams);\n const correlated = new Map<string, ReactionPayload<E>[]>();\n for (const event of events) {\n const register = this.registry.events[event.name];\n if (!register) continue; // skip events with no registered reactions\n for (const reaction of register.reactions.values()) {\n const stream =\n typeof reaction.resolver === \"string\"\n ? reaction.resolver\n : reaction.resolver(event);\n if (stream) {\n resolved.add(stream);\n (\n correlated.get(stream) || correlated.set(stream, []).get(stream)!\n ).push({ ...reaction, event: event });\n }\n }\n }\n\n // lease fetched & resolved streams to the position of the last fetched event\n const last = events.at(-1)!.id;\n const leases = [...resolved.values()].map((stream) => ({\n by: randomUUID(),\n stream,\n at: last,\n retry: 0,\n block: false,\n }));\n const leased = await store().lease(leases);\n logger.trace(\n leased\n .map(({ stream, at, retry }) => ({ stream, at, retry }))\n .reduce(\n (a, { stream, at, retry }) => ({ ...a, [stream]: { at, retry } }),\n {}\n ),\n \"⚡️ lease\"\n );\n\n const handling = leased\n .map((lease) => ({\n lease,\n reactions: correlated.get(lease.stream) || [],\n }))\n .filter(({ reactions }) => reactions.length);\n\n if (handling.length) {\n await Promise.allSettled(\n handling.map(({ lease, reactions }) => this.handle(lease, reactions))\n ).then(\n (promise) => {\n promise.forEach((result) => {\n if (result.status === \"rejected\") logger.error(result.reason);\n else if (!result.value.error) drained.push(result.value);\n });\n },\n (error) => logger.error(error)\n );\n drained.length && this.emit(\"drained\", drained);\n }\n\n // acknowledge leases\n await store().ack(leased);\n logger.trace(\n leased\n .map(({ stream, at, retry, block, error }) => ({\n stream,\n at,\n retry,\n block,\n error,\n }))\n .reduce(\n (a, { stream, at, retry, block, error }) => ({\n ...a,\n [stream]: { at, retry, block, error },\n }),\n {}\n ),\n \"⚡️ ack\"\n );\n }\n\n this.drainLocked = false;\n return drained.length;\n }\n}\n","import { randomUUID } from \"crypto\";\nimport { logger, SNAP_EVENT, store } from \"./ports.js\";\nimport { InvariantError } from \"./types/errors.js\";\nimport type {\n Committed,\n Emitted,\n EventMeta,\n Schema,\n Schemas,\n Snapshot,\n State,\n Target,\n} from \"./types/index.js\";\nimport { patch, validate } from \"./utils.js\";\n\n/**\n * Event sourcing utilities for snapshotting, loading, and committing actions/events.\n * Used internally by Act and state machines.\n */\n\n/**\n * Saves a snapshot of the state to the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param snapshot The snapshot to save\n */\nexport async function snap<S extends Schema, E extends Schemas>(\n snapshot: Snapshot<S, E>\n): Promise<void> {\n try {\n const { id, stream, name, meta, version } = snapshot.event!;\n const snapped = await store().commit(\n stream,\n [{ name: SNAP_EVENT, data: snapshot.state }],\n {\n correlation: meta.correlation,\n causation: { event: { id, name: name as string, stream } },\n },\n version // IMPORTANT! - state events are committed right after the snapshot event\n );\n logger.trace(snapped, \"🟠 snap\");\n } catch (error) {\n logger.error(error);\n }\n}\n\n/**\n * Loads a snapshot of the state from the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @param me The state machine\n * @param stream The stream to load\n * @param callback The callback to call with the snapshot\n * @returns The snapshot of the loaded state\n */\nexport async function load<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n>(\n me: State<S, E, A>,\n stream: string,\n callback?: (snapshot: Snapshot<S, E>) => void\n): Promise<Snapshot<S, E>> {\n let state = me.init ? me.init() : ({} as S);\n let patches = 0;\n let snaps = 0;\n let event: Committed<E, string> | undefined;\n await store().query(\n (e) => {\n event = e as Committed<E, string>;\n if (e.name === SNAP_EVENT) {\n state = e.data as S;\n snaps++;\n patches = 0;\n } else if (me.patch[e.name]) {\n state = patch(state, me.patch[e.name](event, state));\n patches++;\n }\n callback && callback({ event, state, patches, snaps });\n },\n { stream },\n true\n );\n logger.trace({ stream, patches, snaps, state }, \"🟢 load\");\n return { event, state, patches, snaps };\n}\n\n/**\n * Executes an action and emits an event to be committed by the store.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actionSchemas\n * @template K The type of action to execute\n * @param me The state machine\n * @param action The action to execute\n * @param target The target of the action\n * @param payload The payload of the action\n * @param reactingTo The event that the action is reacting to\n * @param skipValidation Whether to skip validation\n * @returns The snapshot of the committed Event\n */\nexport async function action<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n K extends keyof A,\n>(\n me: State<S, E, A>,\n action: K,\n target: Target,\n payload: Readonly<A[K]>,\n reactingTo?: Committed<Schemas, keyof Schemas>,\n skipValidation = false\n): Promise<Snapshot<S, E>> {\n const { stream, expectedVersion, actor } = target;\n if (!stream) throw new Error(\"Missing target stream\");\n\n payload = skipValidation\n ? payload\n : validate(action as string, payload, me.actions[action]);\n logger.trace(\n payload,\n `🔵 ${action as string} \"${stream}${expectedVersion ? `@${expectedVersion}` : \"\"}\"`\n );\n\n let snapshot = await load(me, stream);\n if (me.given) {\n const invariants = me.given[action] || [];\n invariants.forEach(({ valid, description }) => {\n if (!valid(snapshot.state, actor))\n throw new InvariantError(\n action as string,\n payload,\n target,\n description\n );\n });\n }\n\n let { state, patches } = snapshot;\n const result = me.on[action](payload, state, target);\n if (!result) return snapshot;\n\n // An empty array means no events were emitted\n if (Array.isArray(result) && result.length === 0) {\n return snapshot;\n }\n\n const tuples = Array.isArray(result[0])\n ? (result as Emitted<E>[]) // array of tuples\n : ([result] as Emitted<E>[]); // single tuple\n\n const emitted = tuples.map(([name, data]) => ({\n name,\n data: skipValidation\n ? data\n : validate(name as string, data, me.events[name]),\n }));\n\n const meta: EventMeta = {\n correlation: reactingTo?.meta.correlation || randomUUID(),\n causation: {\n action: {\n name: action as string,\n ...target,\n // payload: TODO: flag to include action payload in metadata\n // not included by default to avoid large payloads\n },\n event: reactingTo\n ? {\n id: reactingTo.id,\n name: reactingTo.name,\n stream: reactingTo.stream,\n }\n : undefined,\n },\n };\n\n const committed = await store().commit(\n stream,\n emitted,\n meta,\n // TODO: review reactions not enforcing expected version\n reactingTo ? undefined : expectedVersion || snapshot.event?.version\n );\n\n snapshot = committed\n .map((event) => {\n state = patch(state, me.patch[event.name](event, state));\n patches++;\n logger.trace({ event, state }, \"🔴 commit\");\n return { event, state, patches, snaps: snapshot.snaps };\n })\n .at(-1)!;\n\n me.snap && me.snap(snapshot) && void snap(snapshot); // fire and forget snaps\n return snapshot;\n}\n","import { Act } from \"./act.js\";\nimport type {\n EventRegister,\n Reaction,\n ReactionHandler,\n ReactionOptions,\n ReactionResolver,\n Registry,\n Schema,\n SchemaRegister,\n Schemas,\n State,\n} from \"./types/index.js\";\n\n// resolves to the event stream (default)\nconst _this_ = ({ stream }: { stream: string }) => stream;\n// resolves to nothing\nconst _void_ = () => undefined;\n\n/**\n * Fluent builder for composing event-sourced state machines with actions and reactions.\n * Provides a chainable API for registering states, events, and reaction handlers.\n *\n * @template S SchemaRegister for state\n * @template E Schemas for events\n * @template A Schemas for actions\n */\nexport type ActBuilder<\n S extends SchemaRegister<A>,\n E extends Schemas,\n A extends Schemas,\n> = {\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => ActBuilder<S & { [K in keyof AX]: SX }, E & EX, A & AX>;\n on: <K extends keyof E>(\n event: K\n ) => {\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => ActBuilder<S, E, A> & {\n to: (resolver: ReactionResolver<E, K>) => ActBuilder<S, E, A>;\n void: () => ActBuilder<S, E, A>;\n };\n };\n build: (drainLimit?: number) => Act<S, E, A>;\n readonly events: EventRegister<E>;\n};\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\n\n/**\n * Creates an ActBuilder instance.\n *\n * @template S The type of state\n * @template E The type of events\n * @template A The type of actions\n */\nexport function act<\n // @ts-expect-error empty schema\n S extends SchemaRegister<A> = {},\n E extends Schemas = {},\n A extends Schemas = {},\n>(\n states: Set<string> = new Set(),\n registry: Registry<S, E, A> = {\n actions: {} as any,\n events: {} as any,\n }\n): ActBuilder<S, E, A> {\n const builder: ActBuilder<S, E, A> = {\n /**\n * Adds a state to the builder.\n *\n * @template SX The type of state\n * @template EX The type of events\n * @template AX The type of actions\n * @param state The state to add\n * @returns The builder\n */\n with: <SX extends Schema, EX extends Schemas, AX extends Schemas>(\n state: State<SX, EX, AX>\n ) => {\n if (!states.has(state.name)) {\n states.add(state.name);\n for (const name of Object.keys(state.actions)) {\n if (registry.actions[name])\n throw new Error(`Duplicate action \"${name}\"`);\n // @ts-expect-error indexed access\n registry.actions[name] = state;\n }\n for (const name of Object.keys(state.events)) {\n if (registry.events[name])\n throw new Error(`Duplicate event \"${name}\"`);\n // @ts-expect-error indexed access\n registry.events[name] = {\n schema: state.events[name],\n reactions: new Map(),\n };\n }\n }\n return act<S & { [K in keyof AX]: SX }, E & EX, A & AX>(\n states,\n registry as unknown as Registry<\n S & { [K in keyof AX]: SX },\n E & EX,\n A & AX\n >\n );\n },\n /**\n * Adds a reaction to an event.\n *\n * @template K The type of event\n * @param event The event to add a reaction to\n * @returns The builder\n */\n on: <K extends keyof E>(event: K) => ({\n do: (\n handler: ReactionHandler<E, K>,\n options?: Partial<ReactionOptions>\n ) => {\n const reaction: Reaction<E, K> = {\n handler,\n resolver: _this_,\n options: {\n blockOnError: options?.blockOnError ?? true,\n maxRetries: options?.maxRetries ?? 3,\n retryDelayMs: options?.retryDelayMs ?? 1000,\n },\n };\n registry.events[event].reactions.set(handler.name, reaction);\n return {\n ...builder,\n to(resolver: ReactionResolver<E, K>) {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver,\n });\n return builder;\n },\n void() {\n registry.events[event].reactions.set(handler.name, {\n ...reaction,\n resolver: _void_,\n });\n return builder;\n },\n };\n },\n }),\n build: (drainLimit = 10) => new Act<S, E, A>(registry, drainLimit),\n events: registry.events,\n };\n return builder;\n}\n","import { ZodType } from \"zod/v4\";\nimport {\n ActionHandler,\n ActionHandlers,\n GivenHandlers,\n Invariant,\n PatchHandlers,\n Schema,\n Schemas,\n Snapshot,\n State,\n ZodTypes,\n} from \"./types/index.js\";\n\n/* eslint-disable @typescript-eslint/no-empty-object-type */\nexport type StateBuilder<S extends Schema> = {\n init: (init: () => Readonly<S>) => {\n emits: <E extends Schemas>(\n events: ZodTypes<E>\n ) => {\n patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, {}>;\n };\n };\n};\n\nexport type ActionBuilder<\n S extends Schema,\n E extends Schemas,\n A extends Schemas,\n> = {\n on: <K extends string, AX extends Schema>(\n action: K,\n schema: ZodType<AX>\n ) => {\n given: (rules: Invariant<S>[]) => {\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n emit: (\n handler: ActionHandler<S, E, { [P in K]: AX }, K>\n ) => ActionBuilder<S, E, A & { [P in K]: AX }>;\n };\n snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;\n build: () => State<S, E, A>;\n};\n\n/**\n * Fluent interface for defining a strongly-typed state machine using Zod schemas.\n *\n * This builder helps you model a system where:\n * - You start by defining the state schema with `state(name, zodSchema)`\n * - Then, provide the initial state using `.init(() => defaultState)`\n * - Declare the event types your system can emit using `.emits({ ... })`\n * - Define how emitted events update state with `.patch({ ... })`\n * - Define actions using `.on(\"actionName\", actionSchema)`\n * - Optionally constrain the action with `.given([...invariants])`\n * - Then finalize the action behavior with `.emit(handler)`\n * - (Optional) Define a `.snap(snapshot => boolean)` function to reduce recomputations\n * - Finalize the state machine definition using `.build()`\n *\n * Example usage:\n * ```ts\n * const machine = state(\"machine\", myStateSchema)\n * .init(() => ({ count: 0 }))\n * .emits({ Incremented: z.object({ amount: z.number() }) })\n * .patch({\n * Incremented: (event, state) => ({ count: state.count + event.amount })\n * })\n * .on(\"increment\", z.object({ by: z.number() }))\n * .given([{ description: \"must be positive\", valid: (s, a) => a?.by > 0 }])\n * .emit((action, state) => ({ type: \"Incremented\", amount: action.by }))\n * .build();\n * ```\n */\nexport function state<S extends Schema>(\n name: string,\n state: ZodType<S>\n): StateBuilder<S> {\n return {\n init(init: () => Readonly<S>) {\n return {\n emits<E extends Schema>(events: ZodTypes<E>) {\n return {\n patch(patch: PatchHandlers<S, E>) {\n return action_builder<S, E, {}>({\n events,\n actions: {},\n state,\n name,\n init,\n patch,\n on: {},\n });\n },\n };\n },\n };\n },\n };\n}\n\nfunction action_builder<S extends Schema, E extends Schemas, A extends Schemas>(\n state: State<S, E, A>\n): ActionBuilder<S, E, A> {\n return {\n on<K extends string, AX extends Schema>(action: K, schema: ZodType<AX>) {\n if (action in state.actions)\n throw new Error(`Duplicate action \"${action}\"`);\n\n type NewA = A & { [P in K]: AX };\n const actions = { ...state.actions, [action]: schema } as ZodTypes<NewA>;\n const on = { ...state.on } as ActionHandlers<S, E, NewA>;\n const _given = { ...state.given } as GivenHandlers<S, NewA>;\n\n function given(rules: Invariant<S>[]) {\n _given[action] = rules;\n return { emit };\n }\n\n function emit(handler: ActionHandler<S, E, NewA, K>) {\n on[action] = handler;\n return action_builder<S, E, NewA>({\n ...state,\n actions,\n on,\n given: _given,\n });\n }\n\n return { given, emit };\n },\n\n snap(snap: (snapshot: Snapshot<S, E>) => boolean) {\n return action_builder<S, E, A>({ ...state, snap });\n },\n\n build(): State<S, E, A> {\n return state;\n },\n };\n}\n","import { config } from \"./config.js\";\nimport { disposeAndExit, logger } from \"./ports.js\";\n\n/**\n * @module act\n * Main entry point for the Act framework. Re-exports all core APIs.\n */\nexport * from \"./act-builder.js\";\nexport * from \"./act.js\";\nexport * from \"./ports.js\";\nexport * from \"./state-builder.js\";\nexport * from \"./types/index.js\";\nexport * from \"./utils.js\";\nexport { config };\n\n// exit on signals\nprocess.once(\"SIGINT\", async (arg?: any) => {\n logger.info(arg, \"SIGINT\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"SIGTERM\", async (arg?: any) => {\n logger.info(arg, \"SIGTERM\");\n await disposeAndExit(\"EXIT\");\n});\nprocess.once(\"uncaughtException\", async (arg?: any) => {\n logger.error(arg, \"Uncaught Exception\");\n await disposeAndExit(\"ERROR\");\n});\nprocess.once(\"unhandledRejection\", async (arg?: any) => {\n logger.error(arg, \"Unhandled Rejection\");\n await disposeAndExit(\"ERROR\");\n});\n"],"mappings":"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","names":["z","z","pkg","store","randomUUID","state","action","action","state","randomUUID","state","state","patch","action","snap"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rotorsoft/act",
3
3
  "type": "module",
4
- "version": "0.5.0",
4
+ "version": "0.5.1",
5
5
  "description": "act core library",
6
6
  "author": "rotorsoft",
7
7
  "license": "MIT",