commit 72a455c1fd377fa4d6109a5ce8605f6514e89fc0 Author: Szymon Nowakowski Date: Thu Jun 18 00:54:46 2026 +0200 Initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..38ce722 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 +indent_style = space + +[bun.lock] +indent_size = 2 +indent_style = space diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c925c21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/dist +/node_modules diff --git a/.tsbuildinfo b/.tsbuildinfo new file mode 100644 index 0000000..644676e --- /dev/null +++ b/.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/Result.ts","./src/StandardSchemaV1.ts","./src/index.ts","./src/index.test.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/web-globals/streams.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@24.12.4/node_modules/@types/node/index.d.ts"],"fileIdsList":[[94,145,146,148,165,166],[94,147,148,165,166],[148,165,166],[94,148,153,165,166,183],[94,148,149,154,159,165,166,168,180,191],[94,148,149,150,159,165,166,168],[94,148,165,166],[94,148,151,165,166,192],[94,148,152,153,160,165,166,169],[94,148,153,165,166,180,188],[94,148,154,156,159,165,166,168],[94,147,148,155,165,166],[94,148,156,157,165,166],[94,148,158,159,165,166],[94,147,148,159,165,166],[94,148,159,160,161,165,166,180,191],[94,148,159,160,161,165,166,175,180,183],[94,140,148,156,159,162,165,166,168,180,191],[94,148,159,160,162,163,165,166,168,180,188,191],[94,148,162,164,165,166,180,188,191],[92,93,94,95,96,97,98,99,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[94,148,159,165,166],[94,148,165,166,167,191],[94,148,156,159,165,166,168,180],[94,148,165,166,169],[94,148,165,166,170],[94,147,148,165,166,171],[94,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[94,148,165,166,173],[94,148,165,166,174],[94,148,159,165,166,175,176],[94,148,165,166,175,177,192,194],[94,148,160,165,166],[94,148,159,165,166,180,181,183],[94,148,165,166,182,183],[94,148,165,166,180,181],[94,148,165,166,183],[94,148,165,166,184],[94,145,148,165,166,180,185,191],[94,148,159,165,166,186,187],[94,148,165,166,186,187],[94,148,153,165,166,168,180,188],[94,148,165,166,189],[94,148,165,166,168,190],[94,148,162,165,166,174,191],[94,148,153,165,166,192],[94,148,165,166,180,193],[94,148,165,166,167,194],[94,148,165,166,195],[94,148,153,165,166],[94,140,148,165,166],[94,148,165,166,196],[94,140,148,159,161,165,166,171,180,183,191,193,194,196],[94,148,165,166,180,197],[94,106,109,112,113,148,165,166,191],[94,109,148,165,166,180,191],[94,109,113,148,165,166,191],[94,148,165,166,180],[94,103,148,165,166],[94,107,148,165,166],[94,105,106,109,148,165,166,191],[94,148,165,166,168,188],[94,148,165,166,198],[94,103,148,165,166,198],[94,105,109,148,165,166,168,191],[94,100,101,102,104,108,148,159,165,166,180,191],[94,109,117,125,148,165,166],[94,101,107,148,165,166],[94,109,134,135,148,165,166],[94,101,104,109,148,165,166,183,191,198],[94,109,148,165,166],[94,105,109,148,165,166,191],[94,100,148,165,166],[94,103,104,105,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,148,165,166],[94,109,127,130,148,156,165,166],[94,109,117,118,119,148,165,166],[94,107,109,118,120,148,165,166],[94,108,148,165,166],[94,101,103,109,148,165,166],[94,109,113,118,120,148,165,166],[94,113,148,165,166],[94,107,109,112,148,165,166,191],[94,101,105,109,117,148,165,166],[94,109,127,148,165,166],[94,120,148,165,166],[94,103,109,134,148,165,166,183,196,198],[89,90,94,148,165,166],[88,89,94,148,165,166]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"1692b3287f843f13acaf29456b41e9513dddb30d79fd7fe9b711b88ae17c1516","signature":"b963db70d875fb0f07cced689891aee9023fac4e126c0f51cd466c4411b9783b","impliedFormat":99},{"version":"8a4cdcdf611fe6f81d3c51e768666923ddfed358a7d7c9c2d7ae344a098280c7","signature":"a19084f106070dab5c473636c5c90aa4843a1536d5c9f7bda2e7b207b73cdee7","impliedFormat":99},{"version":"25b579b3121b0d7e1da7e724a4e222b74f3df4c650b5162139c455ef70c21e42","signature":"dcf73037fa873891abaf5f6fd2583086e138ac003bbaf73a77ac4cf8fa58cfc4","impliedFormat":99},{"version":"49a2781e6b4c2fe1cc61acae2d6f392b7c7b7843f08cdd89416d34e80a49b51d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"a016b2a26863dd6acb1f18c4ff37363c2b51e27ca7b3374dc6342aff1ddead2d","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3806cdd6b48ba01a9198134e62a384ec217a98f316d4baef74dd46d62c947a63","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[[88,91]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"jsx":4,"module":199,"newLine":1,"noErrorTruncation":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"./dist","removeComments":true,"rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[145,1],[146,1],[147,2],[94,3],[148,4],[149,5],[150,6],[92,7],[151,8],[152,9],[153,10],[154,11],[155,12],[156,13],[157,13],[158,14],[159,15],[160,16],[161,17],[95,7],[93,7],[162,18],[163,19],[164,20],[198,21],[165,22],[166,7],[167,23],[168,24],[169,25],[170,26],[171,27],[172,28],[173,29],[174,30],[175,31],[176,31],[177,32],[178,7],[179,33],[180,34],[182,35],[181,36],[183,37],[184,38],[185,39],[186,40],[187,41],[188,42],[189,43],[190,44],[191,45],[192,46],[193,47],[194,48],[195,49],[96,7],[97,50],[98,7],[99,7],[141,51],[142,52],[143,7],[144,37],[196,53],[197,54],[86,7],[87,7],[15,7],[14,7],[2,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[3,7],[24,7],[25,7],[4,7],[26,7],[30,7],[27,7],[28,7],[29,7],[31,7],[32,7],[33,7],[5,7],[34,7],[35,7],[36,7],[37,7],[6,7],[41,7],[38,7],[39,7],[40,7],[42,7],[7,7],[43,7],[48,7],[49,7],[44,7],[45,7],[46,7],[47,7],[8,7],[53,7],[50,7],[51,7],[52,7],[54,7],[9,7],[55,7],[56,7],[57,7],[59,7],[58,7],[60,7],[61,7],[10,7],[62,7],[63,7],[64,7],[11,7],[65,7],[66,7],[67,7],[68,7],[69,7],[70,7],[12,7],[71,7],[72,7],[73,7],[74,7],[75,7],[1,7],[76,7],[77,7],[13,7],[78,7],[79,7],[80,7],[81,7],[82,7],[83,7],[84,7],[85,7],[117,55],[129,56],[115,57],[130,58],[139,59],[106,60],[107,61],[105,62],[138,63],[133,64],[137,65],[109,66],[126,67],[108,68],[136,69],[103,70],[104,64],[110,71],[111,7],[116,72],[114,71],[101,73],[140,74],[131,75],[120,76],[119,71],[121,77],[124,78],[118,79],[122,80],[134,63],[112,81],[113,82],[125,83],[102,58],[128,84],[127,71],[123,85],[132,7],[100,7],[135,86],[88,7],[89,7],[91,87],[90,88]],"latestChangedDtsFile":"./dist/index.test.d.ts","version":"6.0.3"} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..db419fa --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "apios", + "private": true, + "type": "module", + "license": "UNLICENSED", + "imports": { + "#/*": { + "types": "./dist/*.d.ts", + "import": "./dist/*.js" + } + }, + "scripts": { + "watch": "pnpm exec tsc --build --watch" + }, + "devDependencies": { + "@effect/language-service": "^0.86.2", + "@types/node": "^24", + "typescript": "^6.0.3" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..6aaa300 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,78 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + effect: + specifier: ^3.21.2 + version: 3.21.2 + devDependencies: + '@effect/language-service': + specifier: ^0.86.2 + version: 0.86.2 + '@types/node': + specifier: ^24 + version: 24.12.4 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + +packages: + + '@effect/language-service@0.86.2': + resolution: {integrity: sha512-SaPln+8srOqDJDUwNTDmP5e+IYpEDr9+1epGznnsLqu8xvo6VnxyWARdeLpqvZJlb0Pgy9ca7ppqvvdWbHPXAg==} + hasBin: true + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@types/node@24.12.4': + resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + + effect@3.21.2: + resolution: {integrity: sha512-rXd2FGDM8KdjSIrc+mqEELo7ScW7xTVxEf1iInmPSpIde9/nyGuFM710cjTo7/EreGXiUX2MOonPpprbz2XHCg==} + + fast-check@3.23.2: + resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} + engines: {node: '>=8.0.0'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + +snapshots: + + '@effect/language-service@0.86.2': {} + + '@standard-schema/spec@1.1.0': {} + + '@types/node@24.12.4': + dependencies: + undici-types: 7.16.0 + + effect@3.21.2: + dependencies: + '@standard-schema/spec': 1.1.0 + fast-check: 3.23.2 + + fast-check@3.23.2: + dependencies: + pure-rand: 6.1.0 + + pure-rand@6.1.0: {} + + typescript@6.0.3: {} + + undici-types@7.16.0: {} diff --git a/src/Result.ts b/src/Result.ts new file mode 100644 index 0000000..f8fa68c --- /dev/null +++ b/src/Result.ts @@ -0,0 +1,145 @@ +type Covariant = (_: never) => A; + +type Destruct = + | { success: A, failure: null } + | { success: null, failure: E } + ; + +const identity = (_: A): A => _; +const throwUnwrapError = (_: E): never => { throw new UnwrapError(_); } + +const TypeId = Symbol("Result"); +type TypeId = typeof TypeId; + +interface ResultBase { + readonly [TypeId]: { + readonly _A: Covariant, + readonly _E: Covariant, + }; + + isFailure(): this is Failure; + isSuccess(): this is Success; + + unwrap(onFailure?: (failure: E) => E1): A | E1; + destruct(): Destruct; + + map( + onSuccess: (success: A) => A1, + onFailure?: (failure: E) => E1, + ): Result; + + flatMap( + onSuccess: (success: A) => Result, + onFailure?: (failure: E) => Result, + ): Result; +} + +const CommonProto = Object.freeze({ + [TypeId]: Object.freeze({ + _A: (_: never) => _, + _E: (_: never) => _, + }), + + isFailure(this: Result): this is Failure { return this._tag == "Failure"; }, + isSuccess(this: Result): this is Success { return this._tag == "Success"; }, + + unwrap( + this: Result, + onFailure: (failure: E) => E1 = throwUnwrapError, + ): A | E1 { + switch (this._tag) { + case "Failure": + return onFailure(this.failure); + case "Success": + return this.success; + } + }, + destruct(this: Result): Destruct { + switch (this._tag) { + case "Failure": + return { failure: this.failure, success: null }; + case "Success": + return { failure: null, success: this.success }; + } + }, + + map( + this: Result, + onSuccess: (success: A) => A1, + onFailure: (failure: E) => E1 = identity as (_: E) => E1, + ): Result { + switch (this._tag) { + case "Failure": + return Result.failure(onFailure(this.failure)); + case "Success": + return Result.success(onSuccess(this.success)); + } + }, + + flatMap( + this: Result, + onSuccess: (success: A) => Result, + onFailure: (failure: E) => Result = Result.failure as (_: E) => Result, + ): Result { + switch (this._tag) { + case "Failure": + return onFailure(this.failure); + case "Success": + return onSuccess(this.success); + } + }, +}); + +export interface Failure extends ResultBase { + readonly _tag: "Failure"; + readonly failure: E; +} + +const FailureProto = Object.freeze(Object.assign( + Object.create(CommonProto), + { + _tag: "Failure", + }, +)); + +export interface Success extends ResultBase { + readonly _tag: "Success"; + readonly success: A; +} + +const SuccessProto = Object.freeze(Object.assign( + Object.create(CommonProto), + { + _tag: "Success", + }, +)); + +export type Result = Failure | Success; + +export const Result = Object.freeze({ + isResult(u: unknown): u is Result { + return typeof u === "object" && u !== null && TypeId in u; + }, + + failure(failure: E): Failure { + return Object.freeze(Object.create(FailureProto, { + failure: { value: failure }, + })); + }, + + success(success: A): Success { + return Object.freeze(Object.create(SuccessProto, { + success: { value: success }, + })); + }, +}); + +export class UnwrapError extends Error { + + readonly failure: E; + + constructor(failure: E) { + super(); + this.failure = failure; + } +} diff --git a/src/StandardSchemaV1.ts b/src/StandardSchemaV1.ts new file mode 100644 index 0000000..fcc06a9 --- /dev/null +++ b/src/StandardSchemaV1.ts @@ -0,0 +1,76 @@ +/** The Standard Schema interface. */ +export interface StandardSchemaV1 { + /** The Standard Schema properties. */ + readonly '~standard': StandardSchemaV1.Props; +} + +export declare namespace StandardSchemaV1 { + /** The Standard Schema properties interface. */ + export interface Props { + /** The version number of the standard. */ + readonly version: 1; + /** The vendor name of the schema library. */ + readonly vendor: string; + /** Validates unknown input values. */ + readonly validate: ( + value: unknown, + options?: StandardSchemaV1.Options | undefined + ) => Result | Promise>; + /** Inferred types associated with the schema. */ + readonly types?: Types | undefined; + } + + /** The result interface of the validate function. */ + export type Result = SuccessResult | FailureResult; + + /** The result interface if validation succeeds. */ + export interface SuccessResult { + /** The typed output value. */ + readonly value: Output; + /** A falsy value for `issues` indicates success. */ + readonly issues?: undefined; + } + + export interface Options { + /** Explicit support for additional vendor-specific parameters, if needed. */ + readonly libraryOptions?: Record | undefined; + } + + /** The result interface if validation fails. */ + export interface FailureResult { + /** The issues of failed validation. */ + readonly issues: ReadonlyArray; + } + + /** The issue interface of the failure output. */ + export interface Issue { + /** The error message of the issue. */ + readonly message: string; + /** The path of the issue, if any. */ + readonly path?: ReadonlyArray | undefined; + } + + /** The path segment interface of the issue. */ + export interface PathSegment { + /** The key representing a path segment. */ + readonly key: PropertyKey; + } + + /** The Standard Schema types interface. */ + export interface Types { + /** The input type of the schema. */ + readonly input: Input; + /** The output type of the schema. */ + readonly output: Output; + } + + /** Infers the input type of a Standard Schema. */ + export type InferInput = NonNullable< + Schema['~standard']['types'] + >['input']; + + /** Infers the output type of a Standard Schema. */ + export type InferOutput = NonNullable< + Schema['~standard']['types'] + >['output']; +} diff --git a/src/index.test.ts b/src/index.test.ts new file mode 100644 index 0000000..b5e25fa --- /dev/null +++ b/src/index.test.ts @@ -0,0 +1,53 @@ +import { defineApi } from "./index.js"; +import type { StandardSchemaV1 } from "./StandardSchemaV1.js"; + +interface User { + readonly userId: string; + readonly username: string; +} + +interface UserCreateInfo { + readonly username: string; +} + +declare const UserSchema: StandardSchemaV1; +declare const UsersSchema: StandardSchemaV1; +declare const UserCreateInfoSchema: StandardSchemaV1; + +const fetchUsers = defineApi({ + url: "https://apios.invalid/api/v1/users/", + method: "GET", + + responseBody: UsersSchema, +}); + +const createUser = defineApi({ + url: "https://apios.invalid/api/v1/users/", + method: "POST", + + requestBody: UserCreateInfoSchema, + responseBody: UserSchema, + + credentials: "include", +}); + +const resultA = (await createUser({ username: "admin" })).unwrap(); +const resultB = await fetchUsers(); + +{ + const { success: users, failure } = resultB.destruct(); + + if (failure !== null) { + console.error("Failed to fetch users"); + } else { + console.log("Users:", users); + } +} + +// --- OR --- + +if (resultB.isFailure()) { + console.error("Failed to fetch users"); +} else { + console.log("Users:", resultB.success); +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..2f86c12 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,116 @@ +import { Result } from "./Result.js"; +import type { StandardSchemaV1 } from "./StandardSchemaV1.js"; + +type RequestBody = Args["requestBody"] extends StandardSchemaV1 ? StandardSchemaV1.InferOutput : void; +type ResponseBody = Args["responseBody"] extends StandardSchemaV1 ? StandardSchemaV1.InferOutput : void; +type ErrorBody = Args["errorBody"] extends StandardSchemaV1 ? StandardSchemaV1.InferOutput : void; + +type Api = (requestBody: RequestBody, signal?: AbortSignal) => Promise, ErrorBody>>; + +interface ArgsBase { + readonly url: string; + readonly method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | (string & {}); + + readonly requestBody?: StandardSchemaV1 | undefined; + readonly responseBody?: StandardSchemaV1 | undefined; + readonly errorBody?: StandardSchemaV1 | undefined; + + readonly cache?: RequestInit["cache"]; + readonly credentials?: RequestInit["credentials"]; + readonly headers?: RequestInit["headers"]; +} + +export const defineApi = ({ + url, + method, + + requestBody: requestBodySchema, + responseBody: responseBodySchema, + errorBody: errorBodySchema, + + cache, + credentials, + headers: headersInit, +}: Args): Api => { + + const headers = new Headers(headersInit); + if (requestBodySchema !== undefined) { + headers.set("Content-Type", "application/json"); + } + + const init: RequestInit = { + method, + headers, + ...(cache !== undefined ? { cache } : null), + ...(credentials !== undefined ? { credentials } : null), + }; + + return async (requestBody, signal) => { + const body = requestBodySchema !== undefined ? JSON.stringify(requestBody) : null; + const response = await fetch(url, { + ...init, + body, + ...(signal !== undefined ? { signal } : null), + }); + + if (response.ok) { + if (responseBodySchema !== undefined) { + const json = await response.json(); + const validateResult = await responseBodySchema["~standard"].validate(json); + if (validateResult.issues !== undefined) { + throw new ValidationError({ + schema: responseBodySchema, + input: json, + issues: validateResult.issues, + }); + } else { + return Result.success(validateResult.value); + } + } else { + return Result.success(undefined); + } + } else { + if (errorBodySchema !== undefined) { + const json = await response.json(); + const validateResult = await errorBodySchema["~standard"].validate(json); + if (validateResult.issues !== undefined) { + throw new ValidationError({ + schema: errorBodySchema, + input: json, + issues: validateResult.issues, + }); + } else { + return Result.failure(validateResult.value); + } + } else { + return Result.failure(undefined); + } + } + }; +}; + +export namespace ValidationError { + export interface Props { + readonly schema: StandardSchemaV1; + readonly input: unknown; + readonly issues: readonly StandardSchemaV1.Issue[]; + } +} + +export class ValidationError extends Error { + + readonly schema: StandardSchemaV1; + readonly input: unknown; + readonly issues: readonly StandardSchemaV1.Issue[]; + + constructor({ + schema, + input, + issues, + }: ValidationError.Props) { + super(); + this.schema = schema; + this.input = input; + this.issues = issues; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1d3bbed --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "incremental": true, + "composite": true, + + "rootDir": "./src", + "outDir": "./dist", + "tsBuildInfoFile": ".tsbuildinfo", + + "module": "NodeNext", + "moduleResolution": "NodeNext", + "moduleDetection": "force", + + "types": ["node"], + + "target": "ESNext", + "lib": ["ESNext"], + "jsx": "react-jsx", + + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "removeComments": true, + "newLine": "lf", + + "strict": true, + + "noImplicitOverride": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noPropertyAccessFromIndexSignature": true, + "exactOptionalPropertyTypes": true, + "forceConsistentCasingInFileNames": true, + "verbatimModuleSyntax": true, + + "noErrorTruncation": true, + "skipLibCheck": true, + + "plugins": [ + { "name": "@effect/language-service" }, + ], + }, + "include": ["./src"], +}