gemi 0.51.1 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.js +1 -1
- package/dist/bin/gemi.js +30 -1
- package/dist/bin/gemi.js.map +4 -4
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-npeq63a2.js → chunk-07jtzbf0.js} +1 -1
- package/dist/{chunk-5v36t9j3.js → chunk-092pj2j2.js} +3 -3
- package/dist/{chunk-5v36t9j3.js.map → chunk-092pj2j2.js.map} +1 -1
- package/dist/{chunk-zwpx6z5f.js → chunk-0h3jr9d9.js} +2 -2
- package/dist/{chunk-8zd6d5nd.js.map → chunk-0h3jr9d9.js.map} +1 -1
- package/dist/{chunk-hwwp6x2s.js → chunk-1ab1ptq5.js} +2 -2
- package/dist/{chunk-hwwp6x2s.js.map → chunk-1ab1ptq5.js.map} +1 -1
- package/dist/chunk-1pqfmw5h.js +5 -0
- package/dist/chunk-1pqfmw5h.js.map +30 -0
- package/dist/{chunk-dk01r6se.js → chunk-23g7qdpg.js} +2 -2
- package/dist/{chunk-dk01r6se.js.map → chunk-23g7qdpg.js.map} +1 -1
- package/dist/{chunk-fs091xz7.js → chunk-2gw6cyyj.js} +2 -2
- package/dist/{chunk-fs091xz7.js.map → chunk-2gw6cyyj.js.map} +1 -1
- package/dist/chunk-2qn472j4.js +5 -0
- package/dist/{chunk-8gb1w19q.js.map → chunk-2qn472j4.js.map} +1 -1
- package/dist/{chunk-pkzj7c5w.js → chunk-2sfz64xh.js} +2 -2
- package/dist/{chunk-pkzj7c5w.js.map → chunk-2sfz64xh.js.map} +1 -1
- package/dist/{chunk-q0xq0pt0.js → chunk-2yth3kk2.js} +4 -4
- package/dist/{chunk-q0xq0pt0.js.map → chunk-2yth3kk2.js.map} +1 -1
- package/dist/chunk-3d3nmr5g.js +4 -0
- package/dist/{chunk-6x6gb7zg.js.map → chunk-3d3nmr5g.js.map} +3 -3
- package/dist/{chunk-8vnbvfmd.js → chunk-3y9nf09k.js} +2 -2
- package/dist/{chunk-8vnbvfmd.js.map → chunk-3y9nf09k.js.map} +1 -1
- package/dist/{chunk-8zd6d5nd.js → chunk-4e61qbp4.js} +2 -2
- package/dist/{chunk-zwpx6z5f.js.map → chunk-4e61qbp4.js.map} +1 -1
- package/dist/{chunk-j33n723q.js → chunk-5s45prj5.js} +3 -3
- package/dist/{chunk-j33n723q.js.map → chunk-5s45prj5.js.map} +1 -1
- package/dist/{chunk-16bnbtyn.js → chunk-68w225rv.js} +2 -2
- package/dist/{chunk-16bnbtyn.js.map → chunk-68w225rv.js.map} +1 -1
- package/dist/{chunk-rxeyhwqz.js → chunk-69w4egkg.js} +3 -3
- package/dist/{chunk-rxeyhwqz.js.map → chunk-69w4egkg.js.map} +1 -1
- package/dist/{chunk-8m3wq94b.js → chunk-6scjrbw7.js} +2 -2
- package/dist/{chunk-8m3wq94b.js.map → chunk-6scjrbw7.js.map} +1 -1
- package/dist/{chunk-3z4nwzvp.js → chunk-7s1g3v1y.js} +3 -3
- package/dist/{chunk-3z4nwzvp.js.map → chunk-7s1g3v1y.js.map} +1 -1
- package/dist/{chunk-asgfqcwd.js → chunk-88pq4gmf.js} +2 -2
- package/dist/{chunk-asgfqcwd.js.map → chunk-88pq4gmf.js.map} +1 -1
- package/dist/{chunk-p0z35s59.js → chunk-8p6rqegw.js} +1 -1
- package/dist/chunk-92793zh4.js +5 -0
- package/dist/{chunk-98sj7tkf.js.map → chunk-92793zh4.js.map} +3 -4
- package/dist/chunk-9279y4af.js +5 -0
- package/dist/{chunk-tqbp8550.js.map → chunk-9279y4af.js.map} +2 -2
- package/dist/chunk-bq4w14a6.js +5 -0
- package/dist/chunk-bq4w14a6.js.map +10 -0
- package/dist/{chunk-nbx9mgmr.js → chunk-cg53h5ht.js} +2 -2
- package/dist/{chunk-nbx9mgmr.js.map → chunk-cg53h5ht.js.map} +1 -1
- package/dist/{chunk-g4gjn481.js → chunk-cmq5t8p9.js} +3 -3
- package/dist/{chunk-g4gjn481.js.map → chunk-cmq5t8p9.js.map} +1 -1
- package/dist/{chunk-zznpmnp7.js → chunk-d1ahbza9.js} +3 -3
- package/dist/{chunk-zznpmnp7.js.map → chunk-d1ahbza9.js.map} +1 -1
- package/dist/{chunk-c4r1zh9q.js → chunk-ear03axe.js} +24 -24
- package/dist/{chunk-c4r1zh9q.js.map → chunk-ear03axe.js.map} +3 -5
- package/dist/{chunk-an6nq9yd.js → chunk-ebcgdv00.js} +3 -3
- package/dist/{chunk-an6nq9yd.js.map → chunk-ebcgdv00.js.map} +1 -1
- package/dist/{chunk-gvf1d636.js → chunk-faa987e4.js} +2 -2
- package/dist/{chunk-gvf1d636.js.map → chunk-faa987e4.js.map} +1 -1
- package/dist/{chunk-gdegb5t0.js → chunk-fbp5vapa.js} +2 -2
- package/dist/{chunk-gdegb5t0.js.map → chunk-fbp5vapa.js.map} +2 -2
- package/dist/chunk-ffre1z8s.js +6 -0
- package/dist/{chunk-y0wg8aq9.js.map → chunk-ffre1z8s.js.map} +2 -2
- package/dist/{chunk-6wm9bsz9.js → chunk-h5g05qwb.js} +2 -2
- package/dist/{chunk-6wm9bsz9.js.map → chunk-h5g05qwb.js.map} +1 -1
- package/dist/{chunk-x80n922n.js → chunk-h7jv3ame.js} +2 -2
- package/dist/{chunk-x80n922n.js.map → chunk-h7jv3ame.js.map} +1 -1
- package/dist/chunk-ha7n1c94.js +7 -0
- package/dist/{chunk-bm6q0q1q.js.map → chunk-ha7n1c94.js.map} +3 -3
- package/dist/{chunk-3fcgg506.js → chunk-j1knf8gv.js} +3 -3
- package/dist/{chunk-3fcgg506.js.map → chunk-j1knf8gv.js.map} +1 -1
- package/dist/{chunk-1sbm38g3.js → chunk-kaxvw75w.js} +3 -3
- package/dist/{chunk-1sbm38g3.js.map → chunk-kaxvw75w.js.map} +1 -1
- package/dist/{chunk-eyvtf769.js → chunk-kxzwem3g.js} +2 -2
- package/dist/{chunk-eyvtf769.js.map → chunk-kxzwem3g.js.map} +1 -1
- package/dist/{chunk-hnw1jy86.js → chunk-msz8rngs.js} +2 -2
- package/dist/{chunk-hnw1jy86.js.map → chunk-msz8rngs.js.map} +1 -1
- package/dist/chunk-mt2755rs.js +5 -0
- package/dist/{chunk-g0w87jtw.js.map → chunk-mt2755rs.js.map} +4 -3
- package/dist/chunk-p22rkf1g.js +8 -0
- package/dist/chunk-p22rkf1g.js.map +11 -0
- package/dist/{chunk-kv8p4h79.js → chunk-q09mmr05.js} +3 -3
- package/dist/{chunk-kv8p4h79.js.map → chunk-q09mmr05.js.map} +1 -1
- package/dist/{chunk-mrf9tjev.js → chunk-qjnv2rkh.js} +2 -2
- package/dist/{chunk-mrf9tjev.js.map → chunk-qjnv2rkh.js.map} +1 -1
- package/dist/{chunk-d3tf618w.js → chunk-qx6sahe0.js} +2 -2
- package/dist/{chunk-d3tf618w.js.map → chunk-qx6sahe0.js.map} +1 -1
- package/dist/{chunk-w7fpm2pw.js → chunk-qyaqg07q.js} +2 -2
- package/dist/{chunk-w7fpm2pw.js.map → chunk-qyaqg07q.js.map} +1 -1
- package/dist/{chunk-a6w4tpwz.js → chunk-rq770c71.js} +2 -2
- package/dist/{chunk-a6w4tpwz.js.map → chunk-rq770c71.js.map} +1 -1
- package/dist/{chunk-zezdm4ep.js → chunk-t4n25km9.js} +3 -3
- package/dist/{chunk-zezdm4ep.js.map → chunk-t4n25km9.js.map} +1 -1
- package/dist/{chunk-eby61053.js → chunk-tkv6cw94.js} +3 -3
- package/dist/{chunk-eby61053.js.map → chunk-tkv6cw94.js.map} +1 -1
- package/dist/chunk-tmk4zfz9.js +33 -0
- package/dist/chunk-tmk4zfz9.js.map +18 -0
- package/dist/{chunk-k4mjcvsm.js → chunk-ttzkn1qd.js} +2 -2
- package/dist/{chunk-k4mjcvsm.js.map → chunk-ttzkn1qd.js.map} +1 -1
- package/dist/{chunk-94k8pjmf.js → chunk-tztqkat2.js} +3 -3
- package/dist/{chunk-94k8pjmf.js.map → chunk-tztqkat2.js.map} +1 -1
- package/dist/{chunk-ybqftmjx.js → chunk-vnjvd82s.js} +2 -2
- package/dist/{chunk-ybqftmjx.js.map → chunk-vnjvd82s.js.map} +1 -1
- package/dist/{chunk-0k5jhyry.js → chunk-xsmt86n3.js} +2 -2
- package/dist/{chunk-0k5jhyry.js.map → chunk-xsmt86n3.js.map} +1 -1
- package/dist/chunk-y4djde42.js +5 -0
- package/dist/chunk-y4djde42.js.map +11 -0
- package/dist/{chunk-ntr81h76.js → chunk-z4q1ty6w.js} +2 -2
- package/dist/{chunk-ntr81h76.js.map → chunk-z4q1ty6w.js.map} +1 -1
- package/dist/{chunk-53w1njqz.js → chunk-zhsaz9cr.js} +1 -1
- package/dist/chunks/ThemeProvider-CTX9LOFC.js +2718 -0
- package/dist/chunks/ThemeProvider-CTX9LOFC.js.map +1 -0
- package/dist/client/Mutation.d.ts +1 -1
- package/dist/client/Mutation.d.ts.map +1 -1
- package/dist/client/ThemeProvider.d.ts +7 -0
- package/dist/client/ThemeProvider.d.ts.map +1 -1
- package/dist/client/index.js +107 -2673
- package/dist/client/index.js.map +1 -1
- package/dist/client/useIsNavigationPending.d.ts.map +1 -1
- package/dist/client/useMutate.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/console/Command.d.ts +143 -0
- package/dist/console/Command.d.ts.map +1 -0
- package/dist/console/CommandRegistry.d.ts +46 -0
- package/dist/console/CommandRegistry.d.ts.map +1 -0
- package/dist/console/builder.d.ts +115 -0
- package/dist/console/builder.d.ts.map +1 -0
- package/dist/console/builder.test-d.d.ts +2 -0
- package/dist/console/builder.test-d.d.ts.map +1 -0
- package/dist/console/config.d.ts +40 -0
- package/dist/console/config.d.ts.map +1 -0
- package/dist/console/context.d.ts +90 -0
- package/dist/console/context.d.ts.map +1 -0
- package/dist/console/errors.d.ts +19 -0
- package/dist/console/errors.d.ts.map +1 -0
- package/dist/console/parse.d.ts +65 -0
- package/dist/console/parse.d.ts.map +1 -0
- package/dist/console/run.d.ts +2 -0
- package/dist/console/run.d.ts.map +1 -0
- package/dist/console/run.js +16 -0
- package/dist/console/run.js.map +14 -0
- package/dist/console/runner.d.ts +41 -0
- package/dist/console/runner.d.ts.map +1 -0
- package/dist/console/usage.d.ts +7 -0
- package/dist/console/usage.d.ts.map +1 -0
- package/dist/container/index.js +2 -2
- package/dist/container/index.js.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +2 -2
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/foundation/index.js +2 -2
- package/dist/foundation/index.js.map +1 -1
- package/dist/http/ViewRouter.d.ts.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/i18n/Dictionary.d.ts.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +3 -3
- package/dist/kernel/Kernel.d.ts +29 -0
- package/dist/kernel/Kernel.d.ts.map +1 -1
- package/dist/kernel/index.js +3 -3
- package/dist/kernel/index.js.map +3 -3
- package/dist/orm/index.js +2 -2
- package/dist/orm/index.js.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/cron/ScheduleServiceProvider.d.ts.map +1 -1
- package/dist/services/discovery.d.ts +15 -0
- package/dist/services/discovery.d.ts.map +1 -1
- package/dist/services/index.d.ts +8 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +11 -11
- package/dist/services/index.js.map +2 -2
- package/dist/support/Service.d.ts +90 -0
- package/dist/support/Service.d.ts.map +1 -0
- package/dist/support/discover.d.ts +9 -1
- package/dist/support/discover.d.ts.map +1 -1
- package/dist/support/index.d.ts +1 -0
- package/dist/support/index.d.ts.map +1 -1
- package/dist/support/index.js +2 -2
- package/dist/support/index.js.map +4 -3
- package/dist/testing/Page.d.ts +166 -0
- package/dist/testing/Page.d.ts.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +352 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/utils/Subject.d.ts.map +1 -1
- package/dist/utils/variantKey.d.ts +19 -0
- package/dist/utils/variantKey.d.ts.map +1 -0
- package/package.json +3 -1
- package/dist/chunk-6fym5bfg.js +0 -23
- package/dist/chunk-6fym5bfg.js.map +0 -36
- package/dist/chunk-6x6gb7zg.js +0 -4
- package/dist/chunk-8gb1w19q.js +0 -5
- package/dist/chunk-98sj7tkf.js +0 -5
- package/dist/chunk-bm6q0q1q.js +0 -7
- package/dist/chunk-g0w87jtw.js +0 -5
- package/dist/chunk-j4rkk01q.js +0 -5
- package/dist/chunk-j4rkk01q.js.map +0 -10
- package/dist/chunk-tqbp8550.js +0 -5
- package/dist/chunk-y0wg8aq9.js +0 -6
- /package/dist/{chunk-npeq63a2.js.map → chunk-07jtzbf0.js.map} +0 -0
- /package/dist/{chunk-p0z35s59.js.map → chunk-8p6rqegw.js.map} +0 -0
- /package/dist/{chunk-53w1njqz.js.map → chunk-zhsaz9cr.js.map} +0 -0
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../services/cron/Scheduler.ts", "../services/queue/config.ts", "../services/queue/QueueManager.ts", "../auth/AuthServiceProvider.ts", "../services/cron/CronJob.ts", "../services/cron/config.ts", "../services/queue/Job.ts", "../services/discovery.ts", "../services/cron/ScheduleServiceProvider.ts", "../services/email/MailServiceProvider.ts", "../services/file-storage/FilesystemServiceProvider.ts", "../services/image-optimization/ImageServiceProvider.ts", "../services/kernel-id/KernelIdServiceProvider.ts", "../services/logging/config.ts", "../services/logging/LogServiceProvider.ts", "../services/middleware/MiddlewareServiceProvider.ts", "../services/pubsub/config.ts", "../services/pubsub/BroadcastServiceProvider.ts", "../services/queue/QueueServiceProvider.ts", "../services/rate-limiter/drivers/RateLimiterDriver.ts", "../services/rate-limiter/slidingWindow.ts", "../services/rate-limiter/drivers/InMemoryRateLimiterDriver.ts", "../services/rate-limiter/config.ts", "../services/rate-limiter/RateLimiterServiceProvider.ts", "../services/redis/config.ts", "../services/redis/RedisServiceProvider.ts", "../services/router/RouteServiceProvider.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { CronJob } from \"./CronJob\";\nimport type { ScheduleConfig } from \"./config\";\n\n// The handle the in-process `Bun.cron(schedule, callback)` overload returns\n// (has `.stop()`). `ReturnType<typeof Bun.cron>` can't be used — it resolves to\n// the module-path overload's `Promise<void>` instead.\ntype BunCronHandle = Bun.CronJob;\n\n// Runs a tick inside whatever async context the framework needs, so a job body\n// can resolve services exactly like a request handler can.\nexport type ScheduleRunner = <T>(cb: () => T | Promise<T>) => Promise<T> | T;\n\ndeclare global {\n // Registered cron jobs keyed by name, kept on `globalThis` so it survives\n // `bun --hot` reloads. Re-registering a name stops the previous schedule\n // first, so a reload *updates* the job in place instead of stacking a\n // duplicate. (Bun also stops all in-process cron jobs before re-evaluating on\n // hot reload; this makes the intent explicit and covers any re-construction.)\n var __gemiCronJobs: Map<string, BunCronHandle> | undefined;\n}\n\n/**\n * One tick of one job: the gate, then the three hooks in order.\n *\n * Named and exported rather than left inline in `start()` because otherwise the\n * only way to reach it is to wait — the tightest schedule `Bun.cron` accepts is\n * once a minute, which is not a thing a test can honestly sit through. What a\n * caller gives up by calling this directly is Bun's clock; what it keeps is\n * everything the scheduler puts between the clock and the job, which is the\n * part that has behaviour.\n *\n * The three hooks each catch and log, so one throwing does not stop the next —\n * `onComplete` in particular runs whether `callback` returned or threw, closer\n * to a `finally` than to a success handler.\n */\nexport async function runTick(job: CronJob): Promise<void> {\n try {\n // Plain truthiness, not `!== false`. The sloppy gate an app writes is\n // `if (!isProduction) return false;`, which returns `undefined` on the path\n // that was meant to run — and between the two readings of that, the one\n // that skips a recurring tick is recoverable and the one that mails a\n // customer from a developer's laptop is not. The declared return type makes\n // that method a compile error anyway, so the type system catches it while\n // it is still being written and the runtime stays on the safe side.\n if (!(await job.shouldRun.call(job))) {\n return;\n }\n } catch (error) {\n // Fail closed, for the same reason. A gate that throws has told us nothing\n // about whether the job may run, and the framework already refuses to\n // schedule a job whose name or expression it cannot read rather than run\n // something half-declared. The throw is logged, so this is loud; the missed\n // tick comes back on the next one.\n console.error(\n `Error evaluating shouldRun for cron job ${job.name}:`,\n error,\n );\n return;\n }\n\n try {\n await job.onTick.call(job);\n } catch (error) {\n console.error(`Error executing cron job ${job.name}:`, error);\n }\n try {\n await job.callback.call(job);\n } catch (error) {\n console.error(`Error in cron job ${job.name}:`, error);\n }\n try {\n await job.onComplete.call(job);\n } catch (error) {\n console.error(`Error completing cron job ${job.name}:`, error);\n }\n}\n\nexport class Scheduler {\n static token = \"scheduler\";\n\n private handles: BunCronHandle[] = [];\n private resolved: Array<new () => CronJob>;\n\n constructor(config: Required<ScheduleConfig>) {\n this.resolved = config.jobs;\n }\n\n /**\n * The jobs this scheduler will run, or ran — declared in the config slice or\n * discovered under `app/cron`, whichever the slice asked for.\n *\n * #323 turned an application's schedule from an array it could import into a\n * directory it cannot, and an app that had a test walking that array —\n * asserting every report has an owner, that no two share an expression — was\n * about to lose it. This is where that test goes instead, and it is the\n * better question anyway: the config slice says what was asked for, this says\n * what the scheduler took.\n *\n * It lists what `start()` iterates, not what `Bun.cron` accepted. A job with\n * no name, no expression, or a name another job already claimed is logged and\n * skipped, and still appears here — a test walking this should see the\n * problem rather than have it tidied away.\n *\n * A copy, so that walk cannot edit the set the scheduler is running from.\n */\n get jobs(): ReadonlyArray<new () => CronJob> {\n return [...this.resolved];\n }\n\n /**\n * Replaces the job set, for the provider to hand over what it found under\n * `app/cron` before it calls `start()`.\n *\n * The scheduler is constructed in `register()`, where reading a directory and\n * importing what is in it is not allowed to happen — that phase is\n * synchronous and resolves nothing. So it is built from whatever the slice\n * declared and corrected in `boot()`, one line before it starts. Calling this\n * after `start()` changes what `jobs` reports and nothing else; the schedules\n * are already registered.\n */\n useJobs(jobs: Array<new () => CronJob>) {\n this.resolved = jobs;\n }\n\n /**\n * Schedules every configured job. Called from `ScheduleServiceProvider.boot()`\n * — never from the constructor — so a job body may resolve any service the\n * container holds by the time it first ticks. That ordering is what replaced\n * the old `kernel.waitForBoot()` handshake.\n */\n start(run: ScheduleRunner = (cb) => cb()) {\n if (this.resolved.length === 0) {\n return;\n }\n\n const registry = (globalThis.__gemiCronJobs ??= new Map());\n\n // Names claimed during *this* pass, which is a different question from what\n // `registry` holds. `registry` spans hot reloads and is supposed to already\n // contain the previous reload's handle under the same name; this starts\n // empty every time and is how a name claimed twice in one schedule is told\n // apart from the same job coming back after an edit.\n const claimed = new Map<string, string>();\n\n for (const Job of this.resolved) {\n const job = new Job();\n if (!job.name) {\n // Named by its class, because under discovery nobody wrote this job\n // down anywhere and `JSON.stringify(job)` on a nameless one prints\n // `{}`. The overwhelmingly common cause is the second sentence: a\n // shared base class sitting in the walked directory. `abstract` is\n // erased before this code runs, so there is nothing here that could\n // tell a base class from a job — only the message can.\n console.error(\n `Cron job must have a name — ${Job.name || \"an anonymous class\"} ` +\n `has none, so it is not scheduled. If this is a base class that ` +\n `other jobs extend, move it out of the discovered directory: ` +\n `\\`abstract\\` does not survive to runtime, so a class under ` +\n `app/cron is indistinguishable from a job.`,\n );\n continue;\n }\n if (!job.cron) {\n console.error(`Cron job must have an expression. Job: ${job.name}`);\n continue;\n }\n const taken = claimed.get(job.name);\n if (taken !== undefined) {\n // Refusing the second one, rather than letting it through to the\n // `registry.get(...).stop()` below — which is what used to happen, and\n // it stopped the *first* job's schedule while leaving both classes in\n // `jobs`. That is the failure #323 exists to remove wearing a disguise:\n // a report that silently stops arriving, and a test walking `jobs` that\n // sees two healthy entries and passes.\n console.error(\n `Two cron jobs claim the name \"${job.name}\" — ${taken} is ` +\n `scheduled and ${Job.name || \"an anonymous class\"} is not. A name ` +\n `is the scheduler's key, so only one job can hold it. Rename one.`,\n );\n continue;\n }\n claimed.set(job.name, Job.name || \"an anonymous class\");\n\n // Update in place: stop any schedule previously registered under this name\n // before re-registering, so a hot reload replaces rather than duplicates.\n registry.get(job.name)?.stop();\n\n // Inside `run`, gate included: a `shouldRun` that resolves a service to\n // decide is the ordinary case, and evaluating it out here would leave it\n // without the application context every other line of the tick has.\n const handle = Bun.cron(job.cron, () => run(() => runTick(job)));\n\n registry.set(job.name, handle);\n this.handles.push(handle);\n }\n }\n\n stop() {\n for (const handle of this.handles) {\n handle.stop();\n }\n this.handles = [];\n }\n}\n",
|
|
6
|
-
"import type { Job } from \"./Job\";\n\n// Config key: `queue`. Derived from `QueueServiceProvider`.\nexport interface QueueConfig {\n /**\n * The `Job` subclasses this application dispatches, or nothing.\n *\n * ### Why \"or nothing\" is the point\n *\n * A dispatch that names a job the `QueueManager` has never heard of does not\n * fail — `next()` looks the name up in this list, and what is not there is\n * dropped with a line on stderr and nothing else. `Job.dispatch` has already\n * returned by then, so nothing upstream can be told. The list is therefore a\n * second spelling of `app/jobs`, kept in step by hand, and the cost of the\n * two disagreeing is paid by whatever was supposed to happen after the\n * dispatch.\n *\n * Leaving this out spells it once: the jobs are the classes under `jobsDir`.\n *\n * ### The rule, exactly\n *\n * **Declared wins, and `[]` is declared.** A `jobs` that is present is used\n * verbatim and no directory is read — that is the escape hatch for an app\n * whose jobs live somewhere this cannot walk, for one that deliberately\n * registers a subset, and for a deploy that ships no source. An empty array\n * means an app with no jobs and says so; it does not mean \"find some\".\n *\n * **Absent or `undefined` discovers.** `undefined` counts as absent for the\n * same reason `withDefaults` treats it that way everywhere else: a key spread\n * in from an optional value is an omission, not an instruction.\n */\n jobs?: Array<new () => Job>;\n\n /**\n * Where to look when `jobs` was not declared. Relative to the project root,\n * or absolute.\n *\n * Every `.ts`/`.tsx` file underneath it is imported at boot and every exported\n * class extending `Job` is registered, so this wants to be a directory of job\n * declarations rather than a directory that merely contains some. Moving the\n * jobs is what this field is for; pointing it at `app/` is not.\n */\n jobsDir?: string;\n\n concurrency?: number;\n}\n\nexport function defineQueueConfig(config: QueueConfig): QueueConfig {\n return config;\n}\n\nexport function queueConfigDefaults(): Required<QueueConfig> {\n return {\n jobs: [],\n jobsDir: \"app/jobs\",\n concurrency: 1,\n };\n}\n",
|
|
7
|
-
"import { Job } from \"./Job\";\nimport { queueConfigDefaults, type QueueConfig } from \"./config\";\nimport { withDefaults } from \"../../support/withDefaults\";\n\nfunction createWorker() {\n const APP_DIR = process.env.APP_DIR;\n const ROOT_DIR = process.env.ROOT_DIR;\n\n const appPath =\n process.env.NODE_ENV === \"production\"\n ? `${ROOT_DIR}/dist/server/bootstrap.mjs`\n : `${APP_DIR}/bootstrap.ts`;\n\n const file = new File(\n [\n `\n import { app } from \"${appPath}\"\n self.onmessage = async (event) => {\n const clone = app.clone()\n let result = null;\n let error = null;\n try {\n result = clone.dispatchJob(event.data.jobName, event.data.args)\n } catch (err) {\n error = err\n }\n clone.destroy()\n if(error) {\n self.postMessage({error});\n } else {\n self.postMessage({result});\n }\n };\n `,\n ],\n \"worker.ts\",\n );\n const url = URL.createObjectURL(file);\n return new Worker(url);\n}\n\n// TODO: terminate worker after the job is done\nasync function runInWorker(jobName: string, args: string) {\n const worker = createWorker();\n worker.postMessage({ jobName, args });\n return await new Promise((resolve, reject) => {\n worker.onmessage = (e) => {\n const data = e.data;\n if (\"error\" in data) {\n reject(data.error);\n } else {\n resolve(data.result);\n }\n };\n });\n}\n\ntype JobDefinition = {\n class: string;\n args: string;\n createdAt: number;\n retries: number;\n};\n\nexport class QueueManager {\n static token = \"queue\";\n\n queue: Set<JobDefinition> = new Set();\n activeRunningJobsCount = 0;\n isRunning = false;\n jobs: Record<string, new () => Job> = {};\n\n readonly config: Required<QueueConfig>;\n\n constructor(config: QueueConfig = {}) {\n this.config = withDefaults(queueConfigDefaults(), config);\n this.useJobs(this.config.jobs);\n }\n\n /**\n * Replaces the registered set, for the provider to hand over what it found\n * under `app/jobs`.\n *\n * This exists because the two phases disagree about when the answer is\n * knowable. The manager is constructed in `register()`, which is synchronous\n * and must resolve nothing; reading a directory and importing what is in it is\n * neither. So the manager is built from whatever the config slice declared —\n * nothing, when the app left `jobs` out — and the discovered set arrives in\n * `boot()`.\n *\n * The consequence worth knowing: anything that constructs an application and\n * skips phase two sees an empty registry, and every dispatch against an empty\n * registry is dropped — loudly on stderr, but after `Job.dispatch` has already\n * returned, so no caller finds out. An app that lists its jobs explicitly is\n * unaffected, because that list is already in place by the end of `register()`.\n */\n useJobs(jobs: Array<new () => Job>) {\n this.config.jobs = jobs;\n\n // Built one at a time rather than by `Object.fromEntries`, which resolves a\n // repeated key by keeping the last and saying nothing.\n //\n // Two classes with one name is the worst failure in this subsystem, and it\n // is worse than the dropped dispatch the rest of this file is about: the\n // registry is keyed by class name, a dispatch carries a class name, so\n // `SendEmail.dispatch(...)` on the one under `app/jobs/auth` would run the\n // body of the one under `app/jobs/billing`. Nothing is dropped and nothing\n // errors — the wrong work happens and reports success.\n //\n // Discovery is what makes it ordinary. A hand-written list forces an import\n // alias in one visible file the moment two names clash; a directory walk\n // does not, and `auth/SendEmail.ts` beside `billing/SendEmail.ts` is a\n // perfectly natural thing to write. So the first claim wins and the second\n // is refused out loud — the same rule `Scheduler.start` applies to a cron\n // name, and the reverse of the silent last-wins this replaces.\n this.jobs = {};\n for (const job of jobs) {\n const taken = this.jobs[job.name];\n if (taken) {\n console.error(\n `Two queued jobs are named \"${job.name}\" — the first is registered ` +\n `and this one is not, so dispatching either would have run one of ` +\n `them. A class name is the queue's key, so only one job can hold ` +\n `it. Rename one.`,\n );\n continue;\n }\n this.jobs[job.name] = job;\n }\n }\n\n /**\n * What the manager was handed, discovered or declared.\n *\n * The registry is keyed by name, and a name is exactly what a dispatch\n * carries, so \"is this job registered?\" is a question with a silent wrong\n * answer — `next()` drops an unknown name long after the caller moved on.\n * This is where a test asks it out loud.\n *\n * It reports what came in, not what the registry accepted, so a name claimed\n * twice appears twice here — deliberately, the same way `Scheduler.jobs`\n * does. A test walking this should see the collision rather than have it\n * tidied away. A copy, so that walk cannot edit the registry underneath it.\n */\n get registeredJobs(): ReadonlyArray<new () => Job> {\n return [...this.config.jobs];\n }\n\n dispatchJob(jobName: string, args: string) {\n if (this.jobs[jobName]) {\n const job = new this.jobs[jobName]();\n return job.run(JSON.parse(args));\n }\n }\n\n async next() {\n if (!this.isRunning) {\n this.isRunning = true;\n }\n\n if (this.activeRunningJobsCount >= this.config.concurrency) {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n return this.next();\n }\n\n const jobDefinition = this.queue.values().next().value as\n | JobDefinition\n | undefined;\n\n if (jobDefinition) {\n // Taken off the queue before anything decides what to do with it. The\n // delete used to live inside the `if` below, so a name the registry could\n // not resolve left the head in place, the `size === 0` check below was\n // never reached, and `next()` recursed on the same entry until the stack\n // gave out. An unregistered dispatch is meant to be a dropped job, not a\n // crash — and discovery makes an empty registry newly reachable (a deploy\n // that ships no source finds nothing to register), so the difference\n // stopped being theoretical.\n this.queue.delete(jobDefinition);\n\n if (this.jobs[jobDefinition.class]) {\n this.run(jobDefinition);\n } else {\n // The one place this is observable. A dispatch carries a name, the\n // registry is keyed by name, and a name nobody registered matches\n // nothing — which is exactly the silence #322 is about, except here it\n // has already happened and the work is gone. Saying so is all that is\n // left to do about it.\n console.error(\n `Dropped a queued job: nothing is registered under the name ` +\n `\"${jobDefinition.class}\". If the class exists, it was not ` +\n `discovered — check that it is under the queue slice's jobsDir ` +\n `(app/jobs by default), or list it in app/config/queue.ts.`,\n );\n }\n }\n\n if (this.queue.size === 0) {\n this.isRunning = false;\n return;\n }\n\n await this.next();\n }\n\n private async run(jobDefinition: JobDefinition) {\n const Job = this.jobs[jobDefinition.class];\n const jobInstance = new Job();\n const args: any[] = JSON.parse(jobDefinition.args);\n\n this.activeRunningJobsCount++;\n\n try {\n const result = await (jobInstance.worker\n ? runInWorker(jobDefinition.class, jobDefinition.args)\n : jobInstance.run(...args));\n\n jobInstance.onSuccess(result, ...args);\n } catch (err) {\n jobInstance.onFail(err, ...args);\n if (jobDefinition.retries >= jobInstance.maxAttempts - 1) {\n jobInstance.onDeadletter(err, ...args);\n } else {\n this.push(Job, jobDefinition.args, jobDefinition.retries + 1);\n }\n }\n\n this.activeRunningJobsCount--;\n }\n\n push(job: new () => Job, args: string, retries = 0) {\n this.queue.add({\n class: job.name,\n args,\n createdAt: Date.now(),\n retries,\n });\n if (!this.isRunning) {\n this.next();\n }\n }\n}\n",
|
|
8
|
-
"import { ServiceProvider } from \"../support/ServiceProvider\";\nimport type { AuthConfig } from \"./config\";\nimport { AuthManager } from \"./AuthManager\";\n\nexport class AuthServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n AuthManager,\n () => new AuthManager(this.app.config.get<AuthConfig>(\"auth\", {})),\n );\n }\n}\n",
|
|
9
|
-
"// A cron expression accepted by `Bun.cron`: a 5-field expression\n// (`minute hour day-of-month month day-of-week`, interpreted in UTC) or one of\n// the nicknames below. The `string & {}` member keeps arbitrary expressions\n// assignable while still surfacing the nicknames in editor autocomplete.\nexport type CronExpression =\n | \"@yearly\"\n | \"@annually\"\n | \"@monthly\"\n | \"@weekly\"\n | \"@daily\"\n | \"@midnight\"\n | \"@hourly\"\n | (string & {});\n\nexport class CronJob {\n name: string;\n cron: CronExpression;\n\n /**\n * Decides whether this tick happens at all. Evaluated once per tick, before\n * anything else; returning `false` skips `onTick`, `callback` and\n * `onComplete` alike.\n *\n * ### Why this is a member and not a line the job writes for itself\n *\n * A job that reports outward — mails a digest, opens a Sentry issue, pings a\n * channel — must not fire from a laptop, and the guard for that has to cover\n * the whole tick. There was nowhere to write it. gemi calls `onTick` and\n * `onComplete` *outside* `callback`, so a guard placed in a lifecycle hook\n * only stops the hook it lives in: an early `return` at the top of `callback`\n * leaves the job still announcing that it started and still announcing that\n * it finished, which for an outward-reporting job is most of the damage.\n *\n * The only construct that covered every hook was an abstract base class that\n * shadowed `callback` with the guard and renamed the real body to `run()` —\n * and that costs the app the framework's own vocabulary. A job then reads\n * `async run()` while every page of the documentation reads `async\n * callback()`, so the next person to follow the docs writes a `callback` the\n * base class never calls: no error, no output, a job that silently does\n * nothing. Forgetting *this* member fails the other way round — the job runs,\n * which is what it did before anyone asked for a gate.\n *\n * ### What it gates\n *\n * Work, not registration. A job whose gate returns `false` is still\n * scheduled, still holds its `Bun.cron` handle, and still appears in\n * `app(Scheduler).jobs` — \"is it scheduled\" and \"will it do anything\" are\n * different questions and the second one is answered per tick. That is also\n * why this is a method: a field would be read once, when the scheduler\n * constructs the job at boot, and would freeze whatever it saw then.\n *\n * A gate that throws is logged and treated as `false`. Cron work recurs, so\n * a skipped tick is recovered by the next one, while an email sent from the\n * wrong machine is not recovered at all.\n *\n * ### Composing with a base class\n *\n * Nothing here calls `super` for you. A subclass that overrides `shouldRun`\n * for its own reason silently replaces whatever its base was gating on, so\n * narrow rather than redefine:\n *\n * ```typescript\n * async shouldRun() {\n * return (await super.shouldRun()) && this.hasSubscribers();\n * }\n * ```\n *\n * A shared base should annotate its return type as written here rather than\n * let it be inferred: a base returning a plain `boolean` narrows the\n * signature its subclasses inherit, and the `await super` above then does not\n * typecheck against it.\n */\n shouldRun(): Promise<boolean> | boolean {\n return true;\n }\n\n callback(): Promise<void> | void {}\n onTick(): Promise<void> | void {}\n onComplete(): Promise<void> | void {}\n\n static exp(expression: CronExpression) {\n return expression;\n }\n}\n",
|
|
10
|
-
"import type { CronJob } from \"./CronJob\";\n\n// Config key: `schedule`. Consumed by `ScheduleServiceProvider`.\nexport interface ScheduleConfig {\n /**\n * The `CronJob` subclasses this application runs on a schedule, or nothing.\n *\n * ### Why \"or nothing\" is the point\n *\n * A cron job that is written and not listed here never fires, and unlike a\n * dropped dispatch there is no caller left waiting to notice: nothing is\n * downstream of a tick that did not happen. The report is simply not sent,\n * for as long as it takes somebody to ask why they stopped seeing it. That is\n * the whole failure — the file exists, the expression is right, and the class\n * was never in the module graph.\n *\n * Leaving this out spells the schedule once: the jobs are the classes under\n * `jobsDir`.\n *\n * ### The rule, exactly\n *\n * **Declared wins, and `[]` is declared.** A `jobs` that is present is used\n * verbatim and no directory is read — the escape hatch for an app whose jobs\n * live somewhere this cannot walk, for one that runs a deliberate subset, and\n * for a deploy that ships no source. An empty array means an app with nothing\n * scheduled and says so; it does not mean \"find some\".\n *\n * **Absent or `undefined` discovers.** `undefined` counts as absent for the\n * same reason `withDefaults` treats it that way everywhere else: a key spread\n * in from an optional value is an omission, not an instruction.\n *\n * Either way the set the scheduler ended up with is readable afterwards, as\n * `app(Scheduler).jobs` — an app that used to import this array to assert\n * something about its own schedule asks the scheduler instead.\n */\n jobs?: Array<new () => CronJob>;\n\n /**\n * Where to look when `jobs` was not declared. Relative to the project root,\n * or absolute.\n *\n * Every `.ts`/`.tsx` file underneath it is imported at boot and every exported\n * class extending `CronJob` is scheduled, so this wants to be a directory of\n * cron declarations rather than a directory that merely contains some. Moving\n * the jobs is what this field is for; pointing it at `app/` is not.\n */\n jobsDir?: string;\n}\n\nexport function defineScheduleConfig(config: ScheduleConfig): ScheduleConfig {\n return config;\n}\n\nexport function scheduleConfigDefaults(): Required<ScheduleConfig> {\n return {\n jobs: [],\n jobsDir: \"app/cron\",\n };\n}\n",
|
|
11
|
-
"import { app } from \"../../foundation/app\";\nimport { QueueManager } from \"./QueueManager\";\n\nexport class Job {\n static name = \"unset\";\n worker = false;\n maxAttempts = 3;\n\n run(..._args: any[]): Promise<any> | any {}\n\n onFail(_error: Error, ..._args: any[]): void {}\n onSuccess(_result: any, ..._args: any[]): void {}\n onDeadletter(_error: Error, ..._args: any[]): void {}\n\n static dispatch<T extends Job>(\n this: new () => T,\n ...args: Parameters<T[\"run\"]>\n ): void {\n if (this.name === \"unset\") {\n throw new Error(\"Cannot dispatch a job with no name\");\n }\n\n app(QueueManager).push(this, JSON.stringify(args));\n }\n}\n",
|
|
12
|
-
"import { existsSync } from \"node:fs\";\nimport { dirname, isAbsolute, join } from \"node:path\";\n\nimport { discoverClasses, projectRoot } from \"../support/discover\";\nimport { CronJob } from \"./cron/CronJob\";\nimport { scheduleConfigDefaults } from \"./cron/config\";\nimport { Job } from \"./queue/Job\";\nimport { queueConfigDefaults } from \"./queue/config\";\n\n/**\n * Reading an application's jobs off the filesystem, for the two subsystems that\n * were asking every app to write its job list twice.\n *\n * Both functions here are the same call to `discoverClasses` with a different\n * base class, which is deliberate: one walk, one set of skip rules, one answer\n * to \"what does this app have\". They are exported from `gemi/services` rather\n * than kept private to the providers because the list stopped being something\n * an app could import — a test that used to walk the exported `jobs` array\n * needs somewhere to ask the same question, and so does a script.\n *\n * What the providers add on top of these is the decision of *whether* to ask,\n * which is the config's to make and not this file's.\n */\n\n/**\n * A directory the app named, resolved the way the app meant it.\n *\n * Relative paths hang off the project root rather than `process.cwd()` at the\n * moment of the call, because a config slice saying `app/jobs` means the app's\n * `app/jobs` and not whatever directory somebody happened to launch a script\n * from. Absolute paths are taken as given, which is what makes these callable\n * from a test that has no project around it.\n */\nfunction resolveDir(dir: string): string {\n return isAbsolute(dir) ? dir : join(projectRoot(), dir);\n}\n\n/**\n * Says something when the directory is missing *and so is the tree it lives in*.\n *\n * A missing directory has two readings and they want opposite responses. An app\n * that has never written a cron job has no `app/cron`, and warning about that on\n * every boot for the rest of its life is noise — the answer \"you have no cron\n * jobs\" is correct and uninteresting. But a deploy that ships `dist/` and\n * `node_modules/` without the source has no `app/cron` *and no `app/`*, and\n * there discovery quietly returns nothing while the app very much does have\n * jobs: the exact silence #322 and #323 exist to remove, reintroduced one layer\n * down and in production only.\n *\n * The parent directory is what tells them apart. If neither the directory nor\n * the one above it is there, the tree this was pointed into is not there\n * either, and that is worth a sentence.\n */\nfunction warnIfSourceIsMissing(\n resolved: string,\n subject: string,\n slice: string,\n) {\n if (existsSync(resolved) || existsSync(dirname(resolved))) return;\n\n console.warn(\n `No ${subject} were discovered: neither ${resolved} nor the directory ` +\n `above it exists, so this process cannot see the application's source. ` +\n `If this is a deploy that ships only the build output, list the classes ` +\n `explicitly in app/config/${slice}.ts so they travel with it.`,\n );\n}\n\n/**\n * The `Job` subclasses under `dir`, defaulting to the config slice's `app/jobs`.\n *\n * This is what a `queue` config slice with no `jobs` key resolves to. Call it\n * directly to ask the question a test used to answer by importing the array:\n * every job this application would register, in the order it would register\n * them.\n *\n * Every file underneath is imported, so calling this runs the app's job modules\n * — the cost `discoverClasses` documents at length, paid once per call.\n */\nexport async function discoverJobs(\n dir: string = queueConfigDefaults().jobsDir,\n): Promise<Array<new () => Job>> {\n const resolved = resolveDir(dir);\n warnIfSourceIsMissing(resolved, \"queue jobs\", \"queue\");\n const jobs = await discoverClasses(resolved, Job);\n warnIfNameWillNotSurviveTheBuild(jobs);\n return jobs;\n}\n\n/**\n * Says something about a discovered job that never declared `static name`.\n *\n * This is the one hazard discovery introduces rather than removes, and it is\n * production-only. `gemi build` minifies the server entry, and app code\n * reachable from it — a controller, and every job class that controller\n * imports to dispatch — is bundled and minified with it. Minification renames\n * the class binding, and a class's implicit `.name` is that binding: a\n * `TestJob` in the bundle reports `\"D\"`. Discovery, meanwhile, imports\n * `app/jobs/TestJob.ts` from source at runtime, where it is still `\"TestJob\"`.\n * The queue is keyed by that name, so the two halves stop agreeing and the\n * dispatch is dropped — in production, and only there.\n *\n * A declared `static name = \"TestJob\"` is a string literal, which survives\n * minification intact, and the two halves agree again. `docs/jobs-and-queues.md`\n * has always called it required; before discovery an app could get away without\n * it, because the explicit `jobs` array was bundled too and both sides were\n * wrong in the same way.\n *\n * The check is exact rather than a guess: a `static name = \"...\"` class field\n * defines a *writable* own property, while the implicit class name is\n * non-writable. Cron is unaffected — `CronJob.name` is an instance field\n * holding a string literal, not the class binding.\n */\nfunction warnIfNameWillNotSurviveTheBuild(jobs: Array<new () => Job>) {\n for (const job of jobs) {\n if (Object.getOwnPropertyDescriptor(job, \"name\")?.writable) continue;\n\n console.warn(\n `Queued job ${job.name} does not declare \\`static name\\`, so it is ` +\n `registered under its class name. A production build minifies the ` +\n `class that dispatches it and renames it, while discovery reads this ` +\n `file from source and does not — so the dispatch would be dropped in ` +\n `production and nowhere else. Add: static name = \"${job.name}\";`,\n );\n }\n}\n\n/**\n * The `CronJob` subclasses under `dir`, defaulting to the config slice's\n * `app/cron`.\n *\n * This is what a `schedule` config slice with no `jobs` key resolves to. Call it\n * directly to ask the question a test used to answer by importing the array —\n * though after boot `app(Scheduler).jobs` is the better one, because it is what\n * the scheduler actually took rather than what this would find if asked again.\n *\n * Every file underneath is imported, so calling this runs the app's cron\n * modules — the cost `discoverClasses` documents at length, paid once per call.\n */\nexport async function discoverCronJobs(\n dir: string = scheduleConfigDefaults().jobsDir,\n): Promise<Array<new () => CronJob>> {\n const resolved = resolveDir(dir);\n warnIfSourceIsMissing(resolved, \"cron jobs\", \"schedule\");\n return await discoverClasses(resolved, CronJob);\n}\n",
|
|
13
|
-
"import { kernelContext } from \"../../kernel/context\";\nimport { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { discoverCronJobs } from \"../discovery\";\nimport { scheduleConfigDefaults, type ScheduleConfig } from \"./config\";\nimport { Scheduler } from \"./Scheduler\";\n\nexport class ScheduleServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n Scheduler,\n () =>\n new Scheduler(\n withDefaults(\n scheduleConfigDefaults(),\n this.app.config.get<ScheduleConfig>(\"schedule\", {}),\n ),\n ),\n );\n }\n\n /**\n * Resolves the schedule, then starts it.\n *\n * Cron jobs are scheduled in phase two, not in `register()`: a job body is\n * free to resolve any service, and by the time `boot()` runs every provider\n * has registered. Each tick re-enters the application context so the job sees\n * the same container a request handler would.\n *\n * ### Why the raw slice and not the scheduler's config\n *\n * The decision here is whether the app said anything, and by the time the\n * scheduler holds a config it can no longer tell: `withDefaults` treats an\n * absent key and an `undefined` one alike and substitutes the default `[]`,\n * which is the same value an app writes when it means \"nothing scheduled, and\n * I mean it\". Reading the slice before defaults are applied is the only place\n * that difference still exists.\n *\n * So: `jobs` present, including `jobs: []`, is used verbatim and no directory\n * is read. Absent or `undefined` — which includes an app with no `schedule`\n * slice at all — the classes under `jobsDir` are, which is the case #323 is\n * about: a cron job that is written and never listed fires never, and nothing\n * downstream is waiting to notice.\n */\n async boot() {\n const scheduler = this.app.make(Scheduler);\n const slice = this.app.config.get<ScheduleConfig>(\"schedule\", {});\n\n if (slice.jobs === undefined) {\n const { jobsDir } = withDefaults(scheduleConfigDefaults(), slice);\n scheduler.useJobs(await discoverCronJobs(jobsDir));\n }\n\n const app = this.app;\n scheduler.start((cb) => kernelContext.run(app, cb));\n }\n}\n",
|
|
14
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport type { MailConfig } from \"./config\";\nimport { MailManager } from \"./MailManager\";\n\nexport class MailServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n MailManager,\n () => new MailManager(this.app.config.get<MailConfig>(\"mail\", {})),\n );\n }\n}\n",
|
|
15
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport type { FilesystemConfig } from \"./config\";\nimport { FilesystemManager } from \"./FilesystemManager\";\n\nexport class FilesystemServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n FilesystemManager,\n () =>\n new FilesystemManager(\n this.app.config.get<FilesystemConfig>(\"filesystem\", {}),\n ),\n );\n }\n}\n",
|
|
16
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport type { ImageConfig } from \"./config\";\nimport { ImageManager } from \"./ImageManager\";\n\nexport class ImageServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n ImageManager,\n () => new ImageManager(this.app.config.get<ImageConfig>(\"image\", {})),\n );\n }\n}\n",
|
|
17
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { KernelId } from \"./KernelId\";\n\n// Config-less by nature: the id is generated per process, never declared.\nexport class KernelIdServiceProvider extends ServiceProvider {\n register() {\n this.app.instance(KernelId, new KernelId());\n }\n}\n",
|
|
18
|
-
"import type { LogEntry } from \"./types\";\n\n// Config key: `log`. Derived from `LoggingServiceProvider`.\nexport interface LogConfig {\n maxFileSize?: number;\n\n onLogFileClosed?: (file: File) => void | Promise<void>;\n onLogCreated?: (logEntry: LogEntry) => void | Promise<void>;\n}\n\nexport function defineLogConfig(config: LogConfig): LogConfig {\n return config;\n}\n\nexport function logConfigDefaults(): Required<LogConfig> {\n return {\n maxFileSize: 1024 * 1024 * 10, // 10MB\n onLogFileClosed: () => {},\n onLogCreated: () => {},\n };\n}\n",
|
|
19
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { LogManager } from \"./LogManager\";\nimport { logConfigDefaults, type LogConfig } from \"./config\";\n\nexport class LogServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n LogManager,\n () =>\n new LogManager(\n withDefaults(\n logConfigDefaults(),\n this.app.config.get<LogConfig>(\"log\", {}),\n ),\n ),\n );\n }\n\n /**\n * The log directory is created once at kernel boot rather than on the first\n * `Log.info()`, which is what the old eagerly-constructed container did.\n * Resolving here is deliberate: it is the one service whose readiness is a\n * boot-time side effect, and paying for it lazily mid-request would add file\n * IO to whichever handler happened to log first.\n */\n async boot() {\n await this.app.make(LogManager).boot();\n }\n}\n",
|
|
20
|
-
"import {\n middlewareConfigDefaults,\n type MiddlewareConfig,\n} from \"../../http/middleware-config\";\nimport { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { MiddlewareRegistry } from \"./MiddlewareRegistry\";\n\nexport class MiddlewareServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n MiddlewareRegistry,\n () =>\n new MiddlewareRegistry(\n withDefaults(\n middlewareConfigDefaults(),\n this.app.config.get<MiddlewareConfig>(\"middleware\", {}),\n ),\n ),\n );\n }\n}\n",
|
|
21
|
-
"import type { BroadcastingChannel } from \"../../broadcasting/BroadcastingChannel\";\n\n// Config key: `broadcast`. Derived from `BroadcastingServiceProvider`.\nexport interface BroadcastConfig {\n channels?: Record<string, new () => BroadcastingChannel>;\n}\n\nexport function defineBroadcastConfig(\n config: BroadcastConfig,\n): BroadcastConfig {\n return config;\n}\n\nexport function broadcastConfigDefaults(): Required<BroadcastConfig> {\n return {\n channels: {},\n };\n}\n",
|
|
22
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { BroadcastManager } from \"./BroadcastManager\";\nimport { broadcastConfigDefaults, type BroadcastConfig } from \"./config\";\n\nexport class BroadcastServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n BroadcastManager,\n () =>\n new BroadcastManager(\n withDefaults(\n broadcastConfigDefaults(),\n this.app.config.get<BroadcastConfig>(\"broadcast\", {}),\n ),\n ),\n );\n }\n}\n",
|
|
23
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { discoverJobs } from \"../discovery\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { queueConfigDefaults, type QueueConfig } from \"./config\";\nimport { QueueManager } from \"./QueueManager\";\n\nexport class QueueServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n QueueManager,\n () => new QueueManager(this.app.config.get<QueueConfig>(\"queue\", {})),\n );\n }\n\n /**\n * Fills in the job registry when the app did not declare one.\n *\n * ### Why the raw slice and not the manager's config\n *\n * The decision here is whether the app said anything, and by the time the\n * manager holds a config it can no longer tell: `withDefaults` treats an\n * absent key and an `undefined` one alike and substitutes the default `[]`,\n * which is the same value an app writes when it means \"no jobs, and I mean\n * it\". Reading the slice before defaults are applied is the only place the\n * difference still exists.\n *\n * So: `jobs` present, including `jobs: []`, is used verbatim and no directory\n * is read. Absent or `undefined`, the classes under `jobsDir` are.\n *\n * ### Why phase two\n *\n * Discovery imports every file it walks, which is asynchronous, and\n * `register()` is not. It also has to happen before the first dispatch rather\n * than before the first tick — there is no equivalent of the scheduler's\n * `start()` to hang it off, so the registry has to be complete by the end of\n * boot.\n */\n async boot() {\n const slice = this.app.config.get<QueueConfig>(\"queue\", {});\n if (slice.jobs !== undefined) return;\n\n const { jobsDir } = withDefaults(queueConfigDefaults(), slice);\n this.app.make(QueueManager).useJobs(await discoverJobs(jobsDir));\n }\n}\n",
|
|
24
|
-
"import type { ConsumeParams, RateLimitResult } from \"../types\";\n\nexport abstract class RateLimiterDriver {\n /**\n * Records one request against `params.key` and reports whether it fits.\n *\n * Implementations must decide *and* record atomically — two concurrent calls\n * for the same key may never both be told they were the last one that fit.\n *\n * May be sync or async: the in-memory driver answers immediately, a network\n * backed driver returns a promise. Callers always `await` the result.\n */\n abstract consume(\n params: ConsumeParams,\n ): Promise<RateLimitResult> | RateLimitResult;\n}\n",
|
|
25
|
-
"import type { RateLimitResult } from \"./types\";\n\n/**\n * The sliding-window-counter algorithm, shared by every driver.\n *\n * A fixed window is cheap but lets a client spend its whole budget at the end\n * of one window and again at the start of the next — twice the limit across a\n * window's worth of time. A true sliding log fixes that but has to keep a\n * timestamp per request.\n *\n * The counter variant keeps two integers per key (this window and the one\n * before it) and estimates usage by weighting the previous window by how much\n * of it still overlaps the trailing window:\n *\n * usage = previous * (window - elapsed) / window + current\n *\n * That is a ~0.003% error on real traffic and costs two integers per key, so\n * it is what the in-memory and Redis drivers both implement.\n */\n\n/** Epoch ms of the start of the window `now` falls into. */\nexport function windowStartFor(now: number, window: number) {\n return Math.floor(now / window) * window;\n}\n\n/** Weight of the previous window's count, from `1` down to `0`. */\nexport function previousWeight(elapsed: number, window: number) {\n if (window <= 0) return 0;\n return Math.min(1, Math.max(0, (window - elapsed) / window));\n}\n\n/** Estimated usage of the trailing `window` ending at `now`. */\nexport function estimateUsage(\n current: number,\n previous: number,\n elapsed: number,\n window: number,\n) {\n return previous * previousWeight(elapsed, window) + current;\n}\n\n/**\n * How long until a request costing `cost` would be admitted, in milliseconds.\n *\n * Solves the usage equation for `elapsed` instead of guessing: the caller gets\n * a `Retry-After` that lands the moment capacity actually frees up rather than\n * at the end of the window, which for a sliding window is usually far too late.\n */\nexport function timeUntilAllowed(params: {\n current: number;\n previous: number;\n elapsed: number;\n window: number;\n limit: number;\n cost: number;\n}) {\n const { current, previous, elapsed, window, limit, cost } = params;\n // Usage the bucket may sit at for this request to still fit.\n const budget = limit - cost;\n\n // The request can never fit, no matter how long the caller waits. Report a\n // full window rather than `Infinity` so a `Retry-After` header stays usable.\n if (budget < 0) return window;\n\n const remainingWindow = Math.max(0, window - elapsed);\n\n // Phase 1 — capacity frees up inside the current window as `previous` decays.\n if (previous > 0) {\n // previous * (window - e) / window + current = budget => solve for e\n const target = window * (1 - (budget - current) / previous);\n if (target <= window) {\n return Math.max(0, Math.ceil(target - elapsed));\n }\n }\n\n // Phase 2 — `current` alone is already over budget, so nothing frees up until\n // the window rolls and `current` becomes the decaying `previous`.\n if (current <= budget) return remainingWindow;\n if (current <= 0) return remainingWindow;\n\n const target = window * (1 - budget / current);\n return remainingWindow + Math.max(0, Math.ceil(target));\n}\n\n/**\n * Turns a driver's post-operation counters into the result the caller sees.\n * `current` and `previous` are the counts *after* an allowed request has been\n * recorded, so every driver reports the same numbers for the same state.\n */\nexport function buildResult(params: {\n allowed: boolean;\n current: number;\n previous: number;\n now: number;\n elapsed: number;\n window: number;\n limit: number;\n cost: number;\n}): RateLimitResult {\n const { allowed, current, previous, now, elapsed, window, limit, cost } =\n params;\n\n if (allowed) {\n const usage = estimateUsage(current, previous, elapsed, window);\n return {\n allowed: true,\n limit,\n remaining: Math.max(0, Math.floor(limit - usage)),\n resetAt: now - elapsed + window,\n retryAfter: 0,\n };\n }\n\n const retryAfter = timeUntilAllowed({\n current,\n previous,\n elapsed,\n window,\n limit,\n cost,\n });\n\n return {\n allowed: false,\n limit,\n remaining: 0,\n resetAt: now + retryAfter,\n retryAfter,\n };\n}\n",
|
|
26
|
-
"import { buildResult, estimateUsage, windowStartFor } from \"../slidingWindow\";\nimport type { ConsumeParams, RateLimitResult } from \"../types\";\nimport { RateLimiterDriver } from \"./RateLimiterDriver\";\n\ninterface Bucket {\n /** Window length this bucket was counted with, so config changes reset it. */\n window: number;\n windowStart: number;\n current: number;\n previous: number;\n}\n\nexport interface InMemoryRateLimiterOptions {\n /**\n * Hard cap on tracked keys. Reached only by traffic that never repeats a key\n * (spoofed `x-forwarded-for`, for instance); the map is swept of dead buckets\n * first and only then evicts live ones, oldest touched first.\n *\n * Defaults to 100k keys — a few MB, and far more than a single instance\n * legitimately sees inside one window.\n */\n maxKeys?: number;\n}\n\n/**\n * Per-process rate limiter. The default driver, and the right one for a single\n * instance or for development.\n *\n * State lives in this process only: with N instances behind a load balancer the\n * effective limit is N × the configured limit, and it resets on deploy. Point\n * the service provider at `RedisRateLimiter` once you run more than one.\n */\nexport class InMemoryRateLimiter extends RateLimiterDriver {\n private buckets = new Map<string, Bucket>();\n private maxKeys: number;\n\n constructor(options: InMemoryRateLimiterOptions = {}) {\n super();\n this.maxKeys = Math.max(1, options.maxKeys ?? 100_000);\n }\n\n consume(params: ConsumeParams): RateLimitResult {\n const { key, limit, window } = params;\n const cost = params.cost ?? 1;\n const now = Date.now();\n const windowStart = windowStartFor(now, window);\n const elapsed = now - windowStart;\n\n const bucket = this.roll(key, window, windowStart);\n const usage = estimateUsage(\n bucket.current,\n bucket.previous,\n elapsed,\n window,\n );\n const allowed = usage + cost <= limit;\n\n if (allowed) {\n bucket.current += cost;\n }\n\n // Re-inserting moves the key to the end of the iteration order, which is\n // what makes eviction least-recently-used rather than arbitrary.\n this.buckets.delete(key);\n this.buckets.set(key, bucket);\n if (this.buckets.size > this.maxKeys) {\n this.evict(now);\n }\n\n return buildResult({\n allowed,\n current: bucket.current,\n previous: bucket.previous,\n now,\n elapsed,\n window,\n limit,\n cost,\n });\n }\n\n /** Drops all counters. Mainly useful in tests. */\n clear() {\n this.buckets.clear();\n }\n\n /** Number of tracked keys. Exposed for tests and diagnostics. */\n get size() {\n return this.buckets.size;\n }\n\n /** Advances a bucket to `windowStart`, creating it when absent or stale. */\n private roll(key: string, window: number, windowStart: number): Bucket {\n const bucket = this.buckets.get(key);\n\n if (!bucket || bucket.window !== window) {\n return { window, windowStart, current: 0, previous: 0 };\n }\n\n if (bucket.windowStart === windowStart) {\n return bucket;\n }\n\n if (bucket.windowStart + window === windowStart) {\n bucket.previous = bucket.current;\n bucket.current = 0;\n bucket.windowStart = windowStart;\n return bucket;\n }\n\n // Idle for more than a full window: everything it held has decayed away.\n bucket.previous = 0;\n bucket.current = 0;\n bucket.windowStart = windowStart;\n return bucket;\n }\n\n private evict(now: number) {\n for (const [key, bucket] of this.buckets) {\n // Fully decayed — it would be reset on the next read anyway.\n if (now - bucket.windowStart >= bucket.window * 2) {\n this.buckets.delete(key);\n }\n }\n\n // Still over the cap, so the traffic is live rather than stale. Drop the\n // least recently touched keys; the worst case is that a client whose bucket\n // was dropped gets a fresh budget, which beats growing without bound.\n for (const key of this.buckets.keys()) {\n if (this.buckets.size <= this.maxKeys) break;\n this.buckets.delete(key);\n }\n }\n}\n",
|
|
27
|
-
"import { InMemoryRateLimiter } from \"./drivers/InMemoryRateLimiterDriver\";\nimport type { RateLimiterDriver } from \"./drivers/RateLimiterDriver\";\n\n// Config key: `ratelimiter`. Derived from `RateLimiterServiceProvider`.\nexport interface RateLimiterConfig {\n /**\n * Where counters live. In-process by default; swap in `RedisRateLimiter` once\n * the app runs on more than one instance.\n */\n driver?: RateLimiterDriver;\n\n /** Requests allowed per window when the `rate-limit` DSL omits a limit. */\n limit?: number;\n\n /** Window length in **seconds** when the `rate-limit` DSL omits one. */\n window?: number;\n}\n\nexport function defineRateLimiterConfig(\n config: RateLimiterConfig,\n): RateLimiterConfig {\n return config;\n}\n\nexport function rateLimiterConfigDefaults(): Required<RateLimiterConfig> {\n return {\n driver: new InMemoryRateLimiter(),\n limit: 1000,\n window: 60,\n };\n}\n",
|
|
28
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { RateLimiter } from \"./RateLimiter\";\nimport { rateLimiterConfigDefaults, type RateLimiterConfig } from \"./config\";\n\nexport class RateLimiterServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n RateLimiter,\n () =>\n new RateLimiter(\n withDefaults(\n rateLimiterConfigDefaults(),\n this.app.config.get<RateLimiterConfig>(\"ratelimiter\", {}),\n ),\n ),\n );\n }\n}\n",
|
|
29
|
-
"import type { RedisOptions } from \"bun\";\n\n// Config key: `redis`. Derived from `RedisServiceProvider`.\nexport interface RedisConfig {\n // Connection URL for Bun's Redis client. Defaults to the `REDIS_URL`\n // environment variable (Bun itself falls back to `redis://localhost:6379`\n // when unset).\n url?: string;\n\n // Optional Bun Redis client options (TLS, timeouts, auto-reconnect, ...).\n options?: RedisOptions;\n}\n\nexport function defineRedisConfig(config: RedisConfig): RedisConfig {\n return config;\n}\n\nexport function redisConfigDefaults(): RedisConfig {\n return {\n url: process.env.REDIS_URL,\n options: undefined,\n };\n}\n",
|
|
30
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { withDefaults } from \"../../support/withDefaults\";\nimport { redisConfigDefaults, type RedisConfig } from \"./config\";\nimport { RedisManager } from \"./RedisManager\";\n\nexport class RedisServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n RedisManager,\n () =>\n new RedisManager(\n withDefaults(\n redisConfigDefaults(),\n this.app.config.get<RedisConfig>(\"redis\", {}),\n ),\n ),\n );\n }\n}\n",
|
|
31
|
-
"import { ServiceProvider } from \"../../support/ServiceProvider\";\nimport { ApiRouteDispatcher } from \"./ApiRouteDispatcher\";\nimport { ViewRouteDispatcher } from \"./ViewRouteDispatcher\";\nimport type { ApiRouteConfig, ViewRouteConfig } from \"./config\";\nimport type { Repository } from \"../../support/Repository\";\n\nfunction readConfig<T>(config: Repository, key: string): T {\n const slice = config.get<T>(key);\n if (!slice) {\n throw new Error(\n `Missing \"${key}\" configuration. Route dispatching needs a root router — declare it in \"app/config/route.ts\".`,\n );\n }\n return slice;\n}\n\n/**\n * Owns both route dispatchers. Laravel ships a single RouteServiceProvider for\n * every route file it loads; the api/view split is a config slice, not a\n * separate provider.\n */\nexport class RouteServiceProvider extends ServiceProvider {\n register() {\n this.app.singleton(\n ApiRouteDispatcher,\n () =>\n new ApiRouteDispatcher(\n readConfig<ApiRouteConfig>(this.app.config, \"route.api\"),\n ),\n );\n\n this.app.singleton(\n ViewRouteDispatcher,\n () =>\n new ViewRouteDispatcher(\n readConfig<ViewRouteConfig>(this.app.config, \"route.view\"),\n ),\n );\n }\n\n /**\n * The two dispatchers are the one pair of services that must not be built\n * lazily: constructing them flattens the route tables and runs\n * `assertNoReservedRoutePaths`, so a missing `route` config or a route under\n * a reserved prefix has to fail the boot rather than the first request that\n * happens to hit it.\n */\n boot() {\n this.app.make(ApiRouteDispatcher);\n this.app.make(ViewRouteDispatcher);\n }\n}\n"
|
|
32
|
-
],
|
|
33
|
-
"mappings": "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",
|
|
34
|
-
"debugId": "BF9FE5D10AAECB4B64756E2164756E21",
|
|
35
|
-
"names": []
|
|
36
|
-
}
|
package/dist/chunk-6x6gb7zg.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Ud as hs,Xd as s0}from"./chunk-98sj7tkf.js";import{ue as i0}from"./chunk-8vnbvfmd.js";import{De as uT}from"./chunk-g0w87jtw.js";class eT{static kind="controller";constructor(){}}class RP extends eT{}function _P(s){return typeof s==="function"&&s.prototype!==void 0}function Gi(s){if(!/^\d+$/.test(s))return null;let i=Number(s);return Number.isSafeInteger(i)?i:null}function sc(s){if(!s)return null;let i=s.trim();if(!/^bytes=/i.test(i))return null;let T=i.slice(6).split(",").map((C)=>C.trim()).filter((C)=>C!=="");if(T.length!==1)return null;let f=T[0],a=f.indexOf("-");if(a===-1)return null;let P=f.slice(0,a),D=f.slice(a+1);if(P===""){let C=Gi(D);if(C===null)return null;return{kind:"suffix",suffixLength:C}}let O=Gi(P);if(O===null)return null;if(D==="")return{kind:"offset",start:O,end:null};let F=Gi(D);if(F===null||F<O)return null;return{kind:"offset",start:O,end:F}}function sf(s,i){if(!Number.isFinite(i)||i<=0)return null;let c,T;if(s.kind==="suffix"){if(s.suffixLength<=0)return null;c=Math.max(0,i-s.suffixLength),T=i-1}else{if(s.start>=i)return null;if(c=s.start,T=s.end===null?i-1:Math.min(s.end,i-1),T<c)return null}return{start:c,end:T,length:T-c+1}}function m0(s){if(s.kind==="suffix")return`bytes=-${s.suffixLength}`;return s.end===null?`bytes=${s.start}-`:`bytes=${s.start}-${s.end}`}function Z0(s){if(!s)return null;let i=/^bytes\s+(\d+)-(\d+)\/(\d+)$/i.exec(s.trim());if(!i)return null;let c=Gi(i[1]),T=Gi(i[2]),f=Gi(i[3]);if(c===null||T===null||f===null||T<c)return null;return{start:c,end:T,total:f}}function cf(s,i,c){return`bytes ${s}-${i}/${c}`}function ic(s){return`bytes */${s}`}var Zd="GEMI_REQUEST_BREAKER_ERROR";class p extends Error{kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class cc extends p{errors={};constructor(s){super("Validation error");this.name="ValidationError",this.errors=s,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:s}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}class Li{data;constructor(s){this.data=s}get(s){return this.data[s]}has(s){return this.data[s]!==void 0}toJSON(){return this.data}}function A0(s){let[i,c]=s.match(/\d+|\D+/g)??[];if(!i||!c)return 0;let T=Number.parseInt(i);switch(c){case"B":return T;case"KB":return T*1024;case"MB":return T*1024*1024;case"GB":return T*1024*1024*1024;case"TB":return T*1024*1024*1024*1024;default:return 0}}function w0(s){switch(s){case"image":return"image";case"png":return"image/png";case"jpg":return"image/jpeg";case"jpeg":return"image/jpeg";case"ttf":return"font/ttf";case"excel":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"csv":return"text/csv";case"word":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"pdf":return"application/pdf";case"json":return"application/json";default:return s}}function j0(s){let[i,c]=s.split(":");switch(i){case"required":return(T)=>{if(T instanceof Blob)return T.size>0;return T!==null&&T!==void 0&&T?.length>0};case"password":return(T)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(T)};case"number":return(T)=>{if(typeof T!=="number")return!1;return!Number.isNaN(T)};case"min":return(T)=>{return T?.length>=Number.parseInt(c)};case"max":return(T)=>{return T?.length<=Number.parseInt(c)};case"email":return(T)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)};case"file":return(T)=>{return T instanceof Blob};case"fileType":return(T)=>{if(T instanceof Blob){let f=w0(c);return T.type.startsWith(f)}};case"fileSize":return(T)=>{if(T instanceof Blob){let f=A0(c);return T.size<=f}};default:return()=>!0}}class Is{kind;rawRequest;headers;cookies;search;schema={};routePath;params;constructor(s,i,c,T){if(!s){let F=hs.getStore().req;this.params=F.params,this.rawRequest=F.rawRequest,this.kind=F.kind,this.routePath=F.routePath}else this.params=i,this.rawRequest=s,this.routePath=T,this.kind=c??"api";this.headers=this.rawRequest.headers;let f=this.rawRequest.headers.get("Cookie"),a=new Map;if(f){let F=f.split(";");for(let C of F){let[S,M]=C.split("=");a.set(S.trim(),M.trim())}}let P=new URL(this.rawRequest.url),D=new Map;for(let[F,C]of P.searchParams)if(D.has(F)){let S=D.get(F);if(Array.isArray(S))S.push(C),D.set(F,S);else D.set(F,[S,C])}else D.set(F,C);let O=Object.fromEntries(D.entries());this.search=new Li(O),this.cookies=a}locale(){return hs.getStore().locale}ctx(){return hs.getStore()}range(){return sc(this.rawRequest.headers.get("Range"))}refine(s){return{}}async parseBody(){let s=new Li({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){let i=await this.rawRequest.json();s=new Li(i)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){let i=await this.rawRequest.formData();s=new Li(i)}if(this.rawRequest.headers.get("Content-Type")?.startsWith("multipart/form-data")){let i=await this.rawRequest.formData(),c=new Map;for(let[T,f]of i.entries())if(c.has(T)){let a=c.get(T);if(Array.isArray(a))a.push(f),c.set(T,a);else c.set(T,[a,f])}else c.set(T,f);s=new Li(Object.fromEntries(c.entries()))}return s}validateInput(s){let i={};for(let[c,T]of Object.entries(this.schema))for(let[f,a]of Object.entries(T)){let P=j0(f),D=a,O=!1;if(typeof a==="function")D=a(s.get(c)),O=typeof D>"u";else O=P(s.get(c));if(O)continue;if(!s.get(c)&&!Object.keys(T).includes("required"))continue;if(!i[c])i[c]=[];if(f==="required"){i[c]=[String(D)];continue}i[c].push(String(D))}for(let[c,T]of Object.entries(this.refine(s.toJSON())??{})){if(!i[c])i[c]=[];i[c]=[...i[c]??[],T]}if(Object.keys(i).length>0)throw new cc(i);return s}async input(){return this.validateInput(await this.parseBody())}async safeInput(){let s=await this.parseBody();try{return this.validateInput(s),{isValid:!0,errors:{},input:s}}catch(i){if(!(i instanceof cc))throw i;return{isValid:!1,errors:i.errors,input:s}}}}function Rc(s,i){let c=i?"attachment":"inline",T=s.replace(/["\\]/g,"").replace(/[^\x20-\x7e]/g,"_");return`${c}; filename="${T}"; filename*=UTF-8''${encodeURIComponent(s)}`}function x0(s){return"total"in s&&"partial"in s&&"body"in s}function Tc(s){return new Response(null,{status:416,headers:{"Accept-Ranges":"bytes","Content-Range":ic(s),"Content-Length":"0","Cache-Control":"no-store"}})}async function E0(s){if(s instanceof Blob)return{body:s,start:0,end:s.size-1,total:s.size,partial:!1,type:s.type,name:s.name,download:!1,status:200,extraHeaders:{}};if(x0(s))return{body:s.body,start:s.start,end:s.end,total:s.total,partial:s.partial,type:s.type,name:s.name,download:!1,etag:s.etag,lastModified:s.lastModified,status:200,extraHeaders:{}};let i=s.file,c=i instanceof Blob?i:null,T=s.total??c?.size??-1;return{body:i,start:s.start??0,end:s.end??T-1,total:T,partial:s.partial??!1,type:s.type??c?.type??"",name:s.name??i?.name,download:s.download??!1,etag:s.etag,lastModified:s.lastModified,status:s.status??200,extraHeaders:s.headers??{}}}async function Tf(s,i){if(s instanceof Response)return s;if(!s)return new Response("Not found",{status:404});let c=await E0(s),{body:T,start:f,end:a,total:P,partial:D}=c;if(T instanceof Blob&&"exists"in T&&typeof T.exists==="function"){if(!await T.exists())return new Response("Not found",{status:404})}let{range:O}=i;if(O){if(P<=0)return Tc(Math.max(P,0));if(!D){if(T instanceof Blob){let M=sf(O,P);if(!M)return Tc(P);T=T.slice(M.start,M.end+1),f=M.start,a=M.end,D=!0}}}let F=Boolean(O)&&D,C=F?206:c.status,S=new Headers;if(S.set("Accept-Ranges","bytes"),S.set("Content-Type",c.type||"application/octet-stream"),F)S.set("Content-Range",cf(f,a,P)),S.set("Content-Length",String(a-f+1));else if(P>=0)S.set("Content-Length",String(P));if(c.name)S.set("Content-Disposition",Rc(c.name,c.download));if(c.etag)S.set("ETag",c.etag);if(c.lastModified)S.set("Last-Modified",c.lastModified.toUTCString());for(let[M,d]of Object.entries(c.extraHeaders))S.set(M,d);if((i.method??"GET").toUpperCase()==="HEAD"){if(T&&"cancel"in T&&typeof T.cancel==="function")await T.cancel();return new Response(null,{status:C,headers:S})}return new Response(T,{status:C,headers:S})}class BP extends p{error;constructor(s="Not authorized"){super("Authentication error");this.name="AuthenticationError",this.error=s,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class zP extends p{error;constructor(s="Insufficient permissions"){super("Authentication error");this.name="AuthenticationError",this.error=s,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class _c extends p{total;constructor(s){super("Range not satisfiable");this.total=s;this.name="RangeNotSatisfiableError",this.payload={api:{status:416,data:{error:{message:"Range not satisfiable"}},headers:{"Content-Range":ic(s),"Accept-Ranges":"bytes","Cache-Control":"no-store"}},view:{}}}}class NP extends p{fileName;constructor(s){super("File not found");this.fileName=s;this.name="FileNotFoundError",this.payload={api:{status:404,data:{error:{message:"Not found"}},headers:{"Cache-Control":"no-store"}},view:{}}}}class fc extends p{constructor(){super("Authentication error");this.name="AuthenticationError"}payload={api:{status:401,data:{error:"Authentication error"}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:"/auth/sign-in"}}}}function b0(s){return _P(s)}class Ds{method;handler;methodName;__internal_brand="RouteHandler";middlewares=[];constructor(s,i,c){this.method=s;this.handler=i;this.methodName=c;this.handler=i,this.methodName=c,this.method=s}__internal_use(){return{run:this.run.bind(this),middlewares:this.middlewares}}run(s){if(b0(this.handler)){let i=new this.handler;return i[this.methodName].bind(i)()}return this.handler()}middleware(s){return this.middlewares=s,this}}class HP{url;headers;__internal_brand="ProxyHandler";constructor(s,i){this.url=s;this.headers=i}run(){let s=new Is;return fetch(this.url,{method:s.rawRequest.method,headers:{...s.headers.toJSON(),...this.headers},body:s.rawRequest.body})}}class pP{constructor(...s){return new Ds(...s)}}class VP extends Ds{__internal_brand="StreamHandler";async run(s){let i=hs.getStore(),c=i?.req?.rawRequest,T=sc(c?.headers.get("Range"));if(i)i.rangeRequest=T;try{let f=await super.run(s);return await Tf(f,{range:T,method:c?.method})}catch(f){if(f instanceof _c)return Tc(f.total);throw f}finally{if(i)i.rangeRequest=null}}}class lP{constructor(...s){return new VP(...s)}}class hP{__internal_brand="ResourceRoutes";first;second;constructor(s){this.first={get:new Ds("GET",s,"list"),post:new Ds("POST",s,"store")},this.second={get:new Ds("GET",s,"show"),put:new Ds("PUT",s,"update"),delete:new Ds("DELETE",s,"delete")}}middleware(s){if(s.list)this.first.get.middleware(s.list);if(s.store)this.first.post.middleware(s.store);if(s.show)this.second.get.middleware(s.show);if(s.update)this.second.put.middleware(s.update);if(s.delete)this.second.delete.middleware(s.delete);return this}}class kP{static __brand="ApiRouter";routes={};middlewares=[];middleware(s){}get(s,i){return new Ds("GET",s,i)}post(s,i){return new Ds("POST",s,i)}put(s,i){return new Ds("PUT",s,i)}patch(s,i){return new Ds("PATCH",s,i)}delete(s,i){return new Ds("DELETE",s,i)}resource(s){return new hP(s)}file(s,i){return new pP("GET",s,i)}stream(s,i){return new lP("GET",s,i)}proxy(s,i={}){return new HP(s,i)}}function vP(s,i){return s.replace(/:([^/]+[*?]?)/g,(c,T)=>{let f=T.endsWith("?")||T.endsWith("*"),a=f?T.slice(0,-1):T,P=i[a];if(P===void 0){if(f)return"";if(import.meta.env.DEV)throw Error(`Missing parameter: ${a}`);console.error(`Missing parameter: ${a} in URL: ${s}`)}return String(P)}).replace(/\/\//g,"/").replace(/\/$/,"")}class ff extends p{constructor(s,i=307){super("Redirect error");this.name="RedirectError",this.payload={api:{status:200,data:{},directive:{kind:"Redirect",path:s}},view:{status:i,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:s}}}}}class af{static to(s,...i){let[c={}]=i,{search:T={},params:f={},permanent:a,status:P}={params:{},status:307,permanent:!1,...c},D=new URLSearchParams(T).toString();throw new ff([vP(s,f),D.toString()].filter(Boolean).join("?"),P??(a?301:307))}static external(s,i=307){throw new ff(s,i)}}class oP{kind="redirect";viewPath="REDIRECT";middlewares=[];handler;constructor(s){if(!s)this.handler=()=>({});else if(typeof s==="function")this.handler=s;else{let[i,c]=s,T=new i,f=T[c].bind(T);this.handler=(a)=>{return f()}}}async run(s,i){let{destination:c,permanent:T=!1,status:f=307}=await this.handler(s);if(!c)throw Error(`Redirect destination is required see ${i}`);return af.to(c,{permanent:T,status:f}),{}}middleware(s){return this.middlewares=s,this}}async function g0(s,i){if(s instanceof Response)return s;let c=s instanceof Blob,T=c?s:s.file,f=c?s.name:s.name??s.file?.name,a=(c?s.type:s.type??s.file?.type)||"",P=c?!1:s.download??!1,D=c?200:s.status??200;if(!c)for(let[O,F]of Object.entries(s.headers??{}))i.set(O,F);if(T instanceof Blob&&"exists"in T&&typeof T.exists==="function"){if(!await T.exists())return new Response("Not found",{status:404})}if(i.set("Content-Type",a||"application/octet-stream"),T instanceof Blob)i.set("Content-Length",String(T.size));if(f)i.set("Content-Disposition",Rc(f,P));return new Response(T instanceof Blob?T.stream():T,{status:D,headers:i})}class tP{kind="file";viewPath="FILE";middlewares=[];handler;constructor(s){if(!s)this.handler=()=>null;else if(typeof s==="function")this.handler=s;else{let[i,c]=s,T=new i,f=T[c].bind(T);this.handler=(a)=>f(a)}}async run(s,i){let c=await this.handler(s);if(!c)throw Error(`File route handler must return a file see ${i}`);return{FILE:c}}middleware(s){return this.middlewares=s,this}}class rP{viewPath;middlewares=[];handler;constructor(s,i){this.viewPath=s;if(!i)this.handler=()=>({});else if(typeof i==="function")this.handler=i;else{let[c,T]=i,f=new c,a=f[T].bind(f);this.handler=(P)=>{return a()}}}async run(s,i){let c=await this.handler(s);return{[this.viewPath]:{...c,breadcrumb:{label:c?.breadcrumb??"",href:i}}}}middleware(s){return this.middlewares=s,this}}class uP{viewPath;children;middlewares=[];alwaysRuns=!1;handler=()=>({});constructor(s,i,c){this.viewPath=s;if(typeof i==="function")this.handler=i,this.children=class extends ac{routes=c??{}};else if(Array.isArray(i)){let[T,f]=i,a=new T,P=a[f].bind(a);this.handler=(D)=>{return P(D)},this.children=class extends ac{routes=c??{}}}else this.children=class extends ac{routes=i},this.handler=()=>({})}async run(s,i){let c=await this.handler(s);return{[this.viewPath]:{...c,breadcrumb:{label:c?.breadcrumb??"",href:i}}}}alwaysRun(){return this.alwaysRuns=!0,this}middleware(s){return this.middlewares=s,this}}class ac{middlewares=[];routes={};view(s,i){return new rP(s,i)}file(s){return new tP(s)}redirect(s){return new oP(s)}layout(s,i,c){return new uP(s,i,c)}}class ms{req;config={};constructor(s){this.req=s}run(...s){return{}}static configure(s){let i=this;return class extends i{config=s}}}function y0(s){let i=s.headers.get("cookie");if(!i)return new Map;let c=new Map,T=i.split(";");for(let f of T){let[a,P]=f.split("=");c.set(a.trim(),P)}return c}function W0(s){return s}function q0(){return{aliases:{}}}import{randomBytes as Fd}from"crypto";function Os(s,i,c,T,f){return js(i,dD(s,i),c,T,f)}function js(s,i,c,T,f,a){let P=Cf(i,c,T);if(f&&i!==P)throw RangeError(rF(s,i,c,T,a));return P}function dD(s,i){let c=s[i];if(c===void 0)throw TypeError(za(i));return c}function l(s){return s!==null&&/object|function/.test(typeof s)}function Ss(s,i=Map){let c=new i;return(T,...f)=>{if(c.has(T))return c.get(T);let a=s(T,...f);return c.set(T,a),a}}function jf(s){return Mi({name:s},1)}function Mi(s,i){return gs((c)=>({value:c,configurable:1,writable:!i}),s)}function mD(s){return gs((i)=>({get:i,configurable:1}),s)}function ec(s){return{[Symbol.toStringTag]:{value:s,configurable:1}}}function Yi(s,i){let c={},T=s.length;for(let f of i)c[s[--T]]=f;return c}function gs(s,i,c){let T={};for(let f in i)T[f]=s(i[f],f,c);return T}function mc(s,i,c){let T={};for(let f=0;f<i.length;f++){let a=i[f];T[a]=s(a,f,c)}return T}function G0(s,i,c){let T={};for(let f=0;f<s.length;f++)T[i[f]]=c[s[f]];return T}function ds(s,i){let c={};for(let T of s)c[T]=i[T];return c}function xf(s,i){let c={};for(let T in i)s.has(T)||(c[T]=i[T]);return c}function Ef(s){s={...s};let i=Object.keys(s);for(let c of i)s[c]===void 0&&delete s[c];return s}function ZD(s,i){for(let c of i)if(!(c in s))return 0;return 1}function AD(s,i,c){for(let T of s)if(i[T]!==c[T])return 0;return 1}function wD(s,i,c){let T={...c};for(let f=0;f<i;f++)T[s[f]]=0;return T}function E(s,...i){return(...c)=>s(...i,...c)}function nP(s){return s[0].toUpperCase()+s.substring(1)}function Zc(s){return s.slice().sort()}function lc(s,i){return String(i).padStart(s,"0")}function ks(s,i){return Math.sign(s-i)}function Cf(s,i,c){return Math.min(Math.max(s,i),c)}function _s(s,i){return[Math.floor(s/i),Dc(s,i)]}function Dc(s,i){return(s%i+i)%i}function ts(s,i){return[sT(s,i),bf(s,i)]}function sT(s,i){return Math.trunc(s/i)||0}function bf(s,i){return s%i||0}function Bc(s){return Math.abs(s%1)===0.5}function jD(s,i,c){let T=0,f=0;for(let D=0;D<=i;D++){let O=s[c[D]],F=Ks[D],C=W/F,[S,M]=ts(O,C);T+=M*F,f+=S}let[a,P]=ts(T,W);return[f+a,P]}function iT(s,i,c){let T={};for(let f=i;f>=0;f--){let a=Ks[f];T[c[f]]=sT(s,a),s=bf(s,a)}return T}function xD(s){return s===b?IT:[]}function ED(s){return s===b?qc:[]}function bD(s){return s===b?["year","day"]:[]}function gD(s){if(s!==void 0)return X(s)}function yD(s){if(s!==void 0)return ys(s)}function gf(s){if(s!==void 0)return Ac(s)}function ys(s){return GD(Ac(s))}function Ac(s){return qD(wS(s))}function yf(s){if(s==null)throw TypeError("Cannot be null or undefined");return s}function WD(s,i){if(i==null)throw RangeError(za(s));return i}function zs(s){if(!l(s))throw TypeError(tF);return s}function cT(s,i,c=s){if(typeof i!==s)throw TypeError(gc(c,i));return i}function qD(s,i="number"){if(!Number.isInteger(s))throw RangeError(p0(i,s));return s||0}function GD(s,i="number"){if(s<=0)throw RangeError(V0(i,s));return s}function Wf(s){if(typeof s=="symbol")throw TypeError(v0);return String(s)}function hc(s,i){return l(s)?String(s):X(s,i)}function TT(s){if(typeof s=="string")return BigInt(s);if(typeof s!="bigint")throw TypeError(k0(s));return s}function LD(s,i="number"){if(typeof s=="bigint")throw TypeError(h0(i));if(s=Number(s),!Number.isFinite(s))throw RangeError(l0(i,s));return s}function e(s,i){return Math.trunc(LD(s,i))||0}function JD(s,i){return qD(LD(s,i),i)}function eP(s,i){return GD(e(s,i),i)}function qf(s,i){let[c,T]=ts(i,W),f=s+c,a=Math.sign(f);return a&&a===-Math.sign(T)&&(f-=a,T+=a*W),[f,T]}function Ki(s,i,c=1){return qf(s[0]+i[0]*c,s[1]+i[1]*c)}function $i(s,i){return qf(s[0],s[1]+i)}function Zs(s,i){return Ki(i,s,-1)}function is(s,i){return ks(s[0],i[0])||ks(s[1],i[1])}function KD(s,i,c){return is(s,i)===-1||is(s,c)===1}function fT(s,i=1){let c=BigInt(W/i);return[Number(s/c),Number(s%c)*i]}function Qi(s,i=1){let c=W/i,[T,f]=ts(s,c);return[T,f*i]}function $D(s,i=1){let[c,T]=s,f=Math.floor(T/i),a=W/i;return BigInt(c)*BigInt(a)+BigInt(f)}function As(s,i=1,c){let[T,f]=s,[a,P]=ts(f,i);return T*(W/i)+(a+(c?P/i:0))}function Gf(s,i,c=_s){let[T,f]=s,[a,P]=c(f,i);return[T*(W/i)+a,P]}function Lf(s,i){let c=s.formatToParts(i),T={};for(let f of c)T[f.type]=f.value;return T}function Jf(s){return Os(s,"isoYear",dc,Mc,1),s.isoYear===dc?Os(s,"isoMonth",4,12,1):s.isoYear===Mc&&Os(s,"isoMonth",1,9,1),s}function vs(s){return Ns({...s,...bs,isoHour:12}),s}function Ns(s){let i=Os(s,"isoYear",dc,Mc,1),c=i===dc?1:i===Mc?-1:0;return c&&ws(ss({...s,isoDay:s.isoDay+c,isoNanosecond:s.isoNanosecond-c})),s}function ws(s){if(!s||KD(s,WS,yS))throw RangeError(QT);return s}function rs(s){return jD(s,5,Ls)[1]}function aT(s){let[i,c]=_s(s,W);return[iT(c,5,Ls),i]}function QD(s){return XD(s)[0]}function XD(s){return Gf(s,Es)}function cs(s){return Ii(s.isoYear,s.isoMonth,s.isoDay,s.isoHour,s.isoMinute,s.isoSecond,s.isoMillisecond)}function ss(s){let i=cs(s);if(i!==void 0){let[c,T]=ts(i,Cs);return[c,T*$s+(s.isoMicrosecond||0)*bi+(s.isoNanosecond||0)]}}function Kf(s,i){let[c,T]=aT(rs(s)-i);return ws(ss({...s,isoDay:s.isoDay+T,...c}))}function kc(...s){return Ii(...s)/DC}function Ii(...s){let[i,c]=UD(...s),T=i.valueOf();if(!isNaN(T))return T-c*Cs}function UD(s,i=1,c=1,T=0,f=0,a=0,P=0){let D=s===dc?1:s===Mc?-1:0,O=new Date;return O.setUTCHours(T,f,a,P),O.setUTCFullYear(s,i-1,c+D),[O,D]}function ns(s,i){let[c,T]=$i(s,i);T<0&&(T+=W,c-=1);let[f,a]=_s(T,$s),[P,D]=_s(a,bi);return PT(c*Cs+f,P,D)}function PT(s,i=0,c=0){let T=Math.ceil(Math.max(0,Math.abs(s)-gS)/Cs)*Math.sign(s),f=new Date(s-T*Cs);return Yi(_T,[f.getUTCFullYear(),f.getUTCMonth()+1,f.getUTCDate()+T,f.getUTCHours(),f.getUTCMinutes(),f.getUTCSeconds(),f.getUTCMilliseconds(),i,c])}function YD(s){return[s.isoYear,s.isoMonth,s.isoDay]}function ID(){return Rs}function $f(s,i){switch(i){case 2:return Qf(s)?29:28;case 4:case 6:case 9:case 11:return 30}return 31}function RD(s){return Qf(s)?366:365}function Qf(s){return s%4==0&&(s%100!=0||s%400==0)}function _D(s){let[i,c]=UD(s.isoYear,s.isoMonth,s.isoDay);return Dc(i.getUTCDay()-c,7)||7}function BD({isoYear:s}){return s<1?["bce",1-s]:["ce",s]}function L0(s){let i=cs(s);if(i<GS)return BD(s);let c=Lf(TP(Xi),i),{era:T,eraYear:f}=tO(c,Xi);return[T,f]}function DT(s){return di(s),OT(s,1),s}function di(s){return zD(s,1),s}function sD(s){return AD(ta,s,zD(s))}function zD(s,i){let{isoYear:c}=s,T=Os(s,"isoMonth",1,ID(),i);return{isoYear:c,isoMonth:T,isoDay:Os(s,"isoDay",1,$f(c,T),i)}}function OT(s,i){return Yi(Ls,[Os(s,"isoHour",0,23,i),Os(s,"isoMinute",0,59,i),Os(s,"isoSecond",0,59,i),Os(s,"isoMillisecond",0,999,i),Os(s,"isoMicrosecond",0,999,i),Os(s,"isoNanosecond",0,999,i)])}function g(s){return s===void 0?0:WC(zs(s))}function wc(s,i=0){s=Ws(s);let c=qC(s),T=RS(s,i);return[WC(s),T,c]}function Xf(s){return qC(Ws(s))}function ND(s){return s=Ws(s),na(s,9,6,1)}function Ri(s,i,c,T=9,f=0,a=4){i=Ws(i);let P=na(i,T,f),D=If(i),O=Lc(i,a),F=Gc(i,T,f,1);return P==null?P=Math.max(c,F):lD(P,F),D=Rf(D,F,1),s&&(O=((C)=>C<4?(C+2)%4:C)(O)),[P,F,D,O]}function FT(s,i=6,c){let T=If(s=_f(s,nc)),f=Lc(s,7),a=Gc(s,i);return a=WD(nc,a),T=Rf(T,a,void 0,c),[a,T,f]}function Uf(s){return ea(Ws(s))}function HD(s,i){return Yf(Ws(s),i)}function Yf(s,i=4){let c=VD(s);return[Lc(s,4),...pD(Gc(s,i),c)]}function pD(s,i){return s!=null?[Ks[s],s<4?9-3*s:-1]:[i===void 0?1:10**(9-i),i]}function If(s){let i=s[Oc];return i===void 0?1:e(i,Oc)}function Rf(s,i,c,T){let f=T?W:Ks[i+1];if(f){let a=Ks[i];if(f%((s=js(Oc,s,1,f/a-(T?0:1),1))*a))throw RangeError(gc(Oc,s))}else s=js(Oc,s,1,c?1e9:1,1);return s}function VD(s){let i=s[Ff];if(i!==void 0){if(typeof i!="number"){if(Wf(i)==="auto")return;throw RangeError(gc(Ff,i))}i=js(Ff,Math.floor(i),0,9,1)}return i}function Ws(s){return s===void 0?{}:zs(s)}function _f(s,i){return typeof s=="string"?{[i]:s}:zs(s)}function R(s){if(s!==void 0){if(l(s))return Object.assign(Object.create(null),s);throw TypeError(tF)}}function CT(s,i){return s&&Object.assign(Object.create(null),s,{overflow:JS[i]})}function Bf(s,i,c=9,T=0,f){let a=i[s];if(a===void 0)return f?T:void 0;if(a=Wf(a),a==="auto")return f?T:null;let P=mf[a];if(P===void 0&&(P=ES[a]),P===void 0)throw RangeError(eF(s,a,mf));return js(s,P,T,c,1,Wc),P}function mi(s,i,c,T=0){let f=c[s];if(f===void 0)return T;let a=Wf(f),P=i[a];if(P===void 0)throw RangeError(eF(s,a,i));return P}function lD(s,i){if(i>s)throw RangeError(MS)}function h(s){return{branding:zT,epochNanoseconds:s}}function t(s,i,c){return{branding:ls,calendar:c,timeZone:i,epochNanoseconds:s}}function _(s,i=s.calendar){return{branding:yi,calendar:i,...ds(EC,s)}}function B(s,i=s.calendar){return{branding:gi,calendar:i,...ds(ra,s)}}function Ci(s,i=s.calendar){return{branding:li,calendar:i,...ds(ra,s)}}function vc(s,i=s.calendar){return{branding:hi,calendar:i,...ds(ra,s)}}function qs(s){return{branding:BT,...ds(xC,s)}}function K(s){return{branding:NT,sign:es(s),...ds(ka,s)}}function hD(s){return QD(s.epochNanoseconds)}function ST(s){return Gf(s.epochNanoseconds,$s)[0]}function kD(s){return $D(s.epochNanoseconds,bi)}function vD(s){return $D(s.epochNanoseconds)}function oD(s){return s.epochNanoseconds}function v(s){return typeof s=="string"?s:X(s.id)}function _i(s,i){return s===i||v(s)===v(i)}function tD(s,i,c,T,f){let a=Si(T),[P,D]=((A,j)=>{let w=j((A=_f(A,wf))[gC]),x=IS(A);return x=WD(wf,x),[x,w]})(f,s);if(Cc(Math.max(P,a),D))return iD(T,P);if(!D)throw RangeError(XT);let[O,F,C]=wT(i,c,D),S=Oa(C),M=jT(C),d=Fa(C),m=M(F,O,T),Z=d(F,O,m,P);return Cc(P,D)?iD(Z,P):((A,j,w,x,I,$,J)=>{let Q=es(A),[k,H]=zf(x,oa(w,A),w,Q,I,$,J),ni=Nf(j,k,H);return A[y[w]]+ni*Q})(Z,S(m),P,F,O,S,M)}function iD(s,i){return As(V(s),Ks[i],1)}function zf(s,i,c,T,f,a,P){let D=y[c],O={...i,[D]:i[D]+T},F=P(s,f,i),C=P(s,f,O);return[a(F),a(C)]}function Nf(s,i,c){let T=As(Zs(i,c));if(!T)throw RangeError(yc);return As(Zs(i,s))/T}function rD(s,i){let[c,T,f]=FT(i,5,1);return h(dT(s.epochNanoseconds,c,T,f,1))}function uD(s,i,c){let{epochNanoseconds:T,timeZone:f,calendar:a}=i,[P,D,O]=FT(c);if(P===0&&D===1)return i;let F=s(f);if(P===6)T=((C,S,M,d)=>{let m=Ts(M,S),[Z,A]=C(m),j=M.epochNanoseconds,w=Ms(S,Z),x=Ms(S,A);if(KD(j,w,x))throw RangeError(yc);return PO(Nf(j,w,x),d)?x:w})(fO,F,i,O);else{let C=F.getOffsetNanosecondsFor(T);T=Ai(F,cO(ns(T,C),P,D,O),C,2,0,1)}return t(T,f,a)}function nD(s,i){return _(cO(s,...FT(i)),s.calendar)}function eD(s,i){let[c,T,f]=FT(i,5);var a;return qs((a=f,Hf(s,jc(c,T),a)[0]))}function sO(s,i){let c=s(i.timeZone),T=Ts(i,c),[f,a]=fO(T),P=As(Zs(Ms(c,f),Ms(c,a)),YT,1);if(P<=0)throw RangeError(yc);return P}function iO(s,i){let{timeZone:c,calendar:T}=i,f=((a,P,D)=>Ms(P,a(Ts(D,P))))(aO,s(c),i);return t(f,c,T)}function cO(s,i,c,T){return TO(s,jc(i,c),T)}function TO(s,i,c){let[T,f]=Hf(s,i,c);return Ns({...wi(s,f),...T})}function Hf(s,i,c){return aT(us(rs(s),i,c))}function oc(s){return us(s,UT,7)}function jc(s,i){return Ks[s]*i}function fO(s){let i=aO(s);return[i,wi(i,1)]}function aO(s){return bS(6,s)}function J0(s,i,c){let T=Math.min(Si(s),6);return zi(mT(V(s,T),i,c),T)}function MT(s,i,c,T,f,a,P,D,O,F){if(T===0&&f===1)return s;let C=Cc(T,D)?xT(D)&&T<6&&c>=6?$0:K0:Q0,[S,M,d]=C(s,i,c,T,f,a,P,D,O,F);return d&&T!==7&&(S=((m,Z,A,j,w,x,I,$)=>{let J=es(m);for(let Q=j+1;Q<=A;Q++){if(Q===7&&A!==7)continue;let k=oa(Q,m);k[y[Q]]+=J;let H=As(Zs(I($(w,x,k)),Z));if(H&&Math.sign(H)!==J)break;m=k}return m})(S,M,c,Math.max(6,T),P,D,O,F)),S}function dT(s,i,c,T,f){if(i===6){let a=((P)=>P[0]+P[1]/W)(s);return[us(a,c,T),0]}return mT(s,jc(i,c),T,f)}function mT(s,i,c,T){let[f,a]=s;T&&a<0&&(a+=W,f-=1);let[P,D]=_s(us(a,i,c),W);return qf(f+P,D)}function us(s,i,c){return PO(s/i,c)*i}function PO(s,i){return zS[i](s)}function K0(s,i,c,T,f,a){let P=es(s),D=V(s),O=dT(D,T,f,a),F=Zs(D,O),C=Math.sign(O[0]-D[0])===P,S=zi(O,Math.min(c,6));return[{...s,...S},Ki(i,F),C]}function $0(s,i,c,T,f,a,P,D,O,F){let C=es(s),S=As(V(s,5)),M=jc(T,f),d=us(S,M,a),[m,Z]=zf(P,{...s,...va},6,C,D,O,F),A=d-As(Zs(m,Z)),j=0;A&&Math.sign(A)!==C?i=$i(m,d):(j+=C,d=us(A,M,a),i=$i(Z,d));let w=bT(d);return[{...s,...w,days:s.days+j},i,Boolean(j)]}function Q0(s,i,c,T,f,a,P,D,O,F){let C=es(s),S=y[T],M=oa(T,s);T===7&&(s={...s,weeks:s.weeks+Math.trunc(s.days/7)});let d=sT(s[S],f)*f;M[S]=d;let[m,Z]=zf(P,M,T,f*C,D,O,F),A=d+Nf(i,m,Z)*C*f,j=us(A,f,a),w=Math.sign(j-A)===C;return M[S]=j,[M,w?Z:m,w]}function pf(s,i,c,T){let[f,a,P,D]=((F)=>{let C=Yf(F=Ws(F));return[F.timeZone,...C]})(T),O=f!==void 0;return((F,C,S,M,d,m)=>{S=mT(S,d,M,1);let Z=C.getOffsetNanosecondsFor(S);return tf(ns(S,Z),m)+(F?Zi(oc(Z)):"Z")})(O,i(O?s(f):Wi),c.epochNanoseconds,a,P,D)}function Vf(s,i,c){let[T,f,a,P,D,O]=((F)=>{F=Ws(F);let C=ea(F),S=VD(F),M=BS(F),d=Lc(F,4),m=Gc(F,4);return[C,_S(F),M,d,...pD(m,S)]})(c);return((F,C,S,M,d,m,Z,A,j,w)=>{M=mT(M,j,A,1);let x=F(S).getOffsetNanosecondsFor(M);return tf(ns(M,x),w)+Zi(oc(x),Z)+((I,$)=>$!==1?"["+($===2?"!":"")+v(I)+"]":"")(S,m)+rf(C,d)})(s,i.calendar,i.timeZone,i.epochNanoseconds,T,f,a,P,D,O)}function lf(s,i){let[c,T,f,a]=((F)=>(F=Ws(F),[ea(F),...Yf(F)]))(i);return P=s.calendar,D=c,O=a,tf(TO(s,f,T),O)+rf(P,D);var P,D,O}function hf(s,i){return c=s.calendar,T=s,f=Uf(i),tc(T)+rf(c,f);var c,T,f}function kf(s,i){return DO(s.calendar,OO,s,Uf(i))}function vf(s,i){return DO(s.calendar,X0,s,Uf(i))}function of(s,i){let[c,T,f]=HD(i);return a=f,FO(Hf(s,T,c)[0],a);var a}function ZT(s,i){let[c,T,f]=HD(i,3);return T>1&&(s={...s,...J0(s,T,c)}),((a,P)=>{let{sign:D}=a,O=D===-1?fs(a):a,{hours:F,minutes:C}=O,[S,M]=Gf(V(O,3),Es,ts);wO(S);let d=uf(M,P),m=P>=0||!D||d;return(D<0?"-":"")+"P"+cD({Y:Fi(O.years),M:Fi(O.months),W:Fi(O.weeks),D:Fi(O.days)})+(F||C||S||m?"T"+cD({H:Fi(F),M:Fi(C),S:Fi(S,m)+d}):"")})(s,f)}function DO(s,i,c,T){let f=v(s),a=T>1||T===0&&f!==b;return T===1?f===b?i(c):tc(c):a?tc(c)+CO(f,T===2):i(c)}function cD(s){let i=[];for(let c in s){let T=s[c];T&&i.push(T,c)}return i.join("")}function tf(s,i){return tc(s)+"T"+FO(s,i)}function tc(s){return OO(s)+"-"+xs(s.isoDay)}function OO(s){let{isoYear:i}=s;return(i<0||i>9999?SO(i)+lc(6,Math.abs(i)):lc(4,i))+"-"+xs(s.isoMonth)}function X0(s){return xs(s.isoMonth)+"-"+xs(s.isoDay)}function FO(s,i){let c=[xs(s.isoHour),xs(s.isoMinute)];return i!==-1&&c.push(xs(s.isoSecond)+((T,f,a,P)=>uf(T*$s+f*bi+a,P))(s.isoMillisecond,s.isoMicrosecond,s.isoNanosecond,i)),c.join(":")}function Zi(s,i=0){if(i===1)return"";let[c,T]=_s(Math.abs(s),YT),[f,a]=_s(T,UT),[P,D]=_s(a,Es);return SO(s)+xs(c)+":"+xs(f)+(P||D?":"+xs(P)+uf(D):"")}function rf(s,i){if(i!==1){let c=v(s);if(i>1||i===0&&c!==b)return CO(c,i===2)}return""}function CO(s,i){return"["+(i?"!":"")+"u-ca="+s+"]"}function uf(s,i){let c=lc(9,s);return c=i===void 0?c.replace(pS,""):c.slice(0,i),c?"."+c:""}function SO(s){return s<0?"-":"+"}function Fi(s,i){return s||i?s.toLocaleString("fullwide",{useGrouping:0}):""}function U0(s,i){let{epochNanoseconds:c}=s,T=(i.getOffsetNanosecondsFor?i:i(s.timeZone)).getOffsetNanosecondsFor(c),f=ns(c,T);return{calendar:s.calendar,...f,offsetNanoseconds:T}}function MO(s,i){let c=Ts(i,s);return{calendar:i.calendar,...ds(EC,c),offset:Zi(c.offsetNanoseconds),timeZone:i.timeZone}}function Ai(s,i,c,T=0,f=0,a,P){if(c!==void 0&&T===1&&(T===1||P))return Kf(i,c);let D=s.getPossibleInstantsFor(i);if(c!==void 0&&T!==3){let O=((F,C,S,M)=>{let d=ss(C);M&&(S=oc(S));for(let m of F){let Z=As(Zs(m,d));if(M&&(Z=oc(Z)),Z===S)return m}})(D,i,c,a);if(O!==void 0)return O;if(T===0)throw RangeError(PS)}return P?ss(i):Ms(s,i,f,D)}function Ms(s,i,c=0,T=s.getPossibleInstantsFor(i)){if(T.length===1)return T[0];if(c===1)throw RangeError(DS);if(T.length)return T[c===3?1:0];let f=ss(i),a=((D,O)=>{let F=D.getOffsetNanosecondsFor($i(O,-W));return ef(D.getOffsetNanosecondsFor($i(O,W))-F)})(s,f),P=a*(c===2?-1:1);return(T=s.getPossibleInstantsFor(ns(f,P)))[c===2?0:T.length-1]}function nf(s){if(Math.abs(s)>=W)throw RangeError(fS);return s}function ef(s){if(s>W)throw RangeError(aS);return s}function sa(s,i,c){return h(ws(Ki(i.epochNanoseconds,((T)=>{if(jO(T))throw RangeError(CS);return V(T,5)})(s?fs(c):c))))}function ia(s,i,c,T,f,a=Object.create(null)){let P=i(T.timeZone),D=s(T.calendar);return{...T,...Pa(P,D,T,c?fs(f):f,a)}}function ca(s,i,c,T,f=Object.create(null)){let{calendar:a}=c;return _(Da(s(a),c,i?fs(T):T,f),a)}function Ta(s,i,c,T,f){let{calendar:a}=c;return B(AT(s(a),c,i?fs(T):T,f),a)}function fa(s,i,c,T,f=Object.create(null)){let a=c.calendar,P=s(a),D=Fc(P,c);i&&(T=ET(T)),T.sign<0&&(D=P.dateAdd(D,{...o,months:1}),D=wi(D,-1));let O=P.dateAdd(D,T,f);return Ci(Fc(P,O),a)}function aa(s,i,c){return qs(dO(i,s?fs(c):c)[0])}function Pa(s,i,c,T,f){let a=V(T,5),P=c.epochNanoseconds;if(jO(T)){let D=Ts(c,s);P=Ki(Ms(s,{...AT(i,D,{...T,...va},f),...ds(Ls,D)}),a)}else P=Ki(P,a),g(f);return{epochNanoseconds:ws(P)}}function Da(s,i,c,T){let[f,a]=dO(i,c);return Ns({...AT(s,i,{...c,...va,days:c.days+a},T),...f})}function AT(s,i,c,T){if(c.years||c.months||c.weeks)return s.dateAdd(i,c,T);g(T);let f=c.days+V(c,5)[0];return f?vs(wi(i,f)):i}function Fc(s,i,c=1){return wi(i,c-s.day(i))}function dO(s,i){let[c,T]=V(i,5),[f,a]=aT(rs(s)+T);return[f,c+a]}function wi(s,i){return i?{...s,...PT(cs(s)+i*Cs)}:s}function wT(s,i,c){let T=s(c.calendar);return xT(c)?[c,T,i(c.timeZone)]:[{...c,...bs},T]}function Oa(s){return s?oD:ss}function jT(s){return s?E(Pa,s):Da}function Fa(s){return s?E(I0,s):R0}function xT(s){return s&&s.epochNanoseconds}function Cc(s,i){return s<=6-(xT(i)?1:0)}function Ca(s,i,c,T,f,a,P){let D=s(Ws(P).relativeTo),O=Math.max(Si(f),Si(a));if(Cc(O,D))return K(Bi(((Z,A,j,w)=>{let x=Ki(V(Z),V(A),w?-1:1);if(!Number.isFinite(x[0]))throw RangeError(QT);return{...o,...zi(x,j)}})(f,a,O,T)));if(!D)throw RangeError(XT);T&&(a=fs(a));let[F,C,S]=wT(i,c,D),M=jT(S),d=Fa(S),m=M(C,F,f);return K(d(C,F,M(C,m,a),O))}function mO(s,i,c,T,f){let a=Si(T),[P,D,O,F,C]=((J,Q,k)=>{J=_f(J,nc);let H=na(J),ni=k(J[gC]),ei=If(J),d0=Lc(J,7),Oi=Gc(J);if(H===void 0&&Oi===void 0)throw RangeError(SS);return Oi==null&&(Oi=0),H==null&&(H=Math.max(Oi,Q)),lD(H,Oi),ei=Rf(ei,Oi,1),[H,Oi,ei,d0,ni]})(f,a,s),S=Math.max(a,P);if(!xT(C)&&S<=6)return K(Bi(((J,Q,k,H,ni)=>{let ei=dT(V(J),k,H,ni);return{...o,...zi(ei,Q)}})(T,P,D,O,F)));if(!C)throw RangeError(XT);let[M,d,m]=wT(i,c,C),Z=Oa(m),A=jT(m),j=Fa(m),w=A(d,M,T),x=j(d,M,w,P),I=T.sign,$=es(x);if(I&&$&&I!==$)throw RangeError(yc);return $&&(x=MT(x,Z(w),P,D,O,F,d,M,Z,A)),K(x)}function ZO(s){return s.sign===-1?ET(s):s}function ET(s){return K(fs(s))}function fs(s){let i={};for(let c of y)i[c]=-1*s[c]||0;return i}function AO(s){return!s.sign}function es(s,i=y){let c=0;for(let T of i){let f=Math.sign(s[T]);if(f){if(c&&c!==f)throw RangeError(FS);c=f}}return c}function Bi(s){for(let i of xS)js(i,s[i],-FD,FD,1);return wO(As(V(s),Es)),s}function wO(s){if(!Number.isSafeInteger(s))throw RangeError(OS)}function V(s,i=6){return jD(s,i,y)}function zi(s,i=6){let[c,T]=s,f=iT(T,i,y);if(f[y[i]]+=c*(W/Ks[i]),!Number.isFinite(f[y[i]]))throw RangeError(QT);return f}function bT(s,i=5){return iT(s,i,y)}function jO(s){return Boolean(es(s,jC))}function Si(s){let i=9;for(;i>0&&!s[y[i]];i--);return i}function Y0(s,i){return[s,i]}function TD(s){let i=Math.floor(s/pc)*pc;return[i,i+pc]}function xO(s){let i=si(s=hc(s));if(!i)throw RangeError(Fs(s));let c;if(i.m)c=0;else{if(!i.offset)throw RangeError(Fs(s));c=Ni(i.offset)}return i.timeZone&&ma(i.timeZone,1),h(Kf(DT(i),c))}function EO(s){let i=si(X(s));if(!i)throw RangeError(Fs(s));if(i.timeZone)return KO(i,i.offset?Ni(i.offset):void 0);if(i.m)throw RangeError(Fs(s));return QO(i)}function bO(s,i){let c=si(X(s));if(!c||!c.timeZone)throw RangeError(Fs(s));let{offset:T}=c,f=T?Ni(T):void 0,[,a,P]=wc(i);return KO(c,f,a,P)}function Ni(s){let i=ma(s);if(i===void 0)throw RangeError(Fs(s));return i}function gO(s){let i=si(X(s));if(!i||i.m)throw RangeError(Fs(s));return _($O(i))}function gT(s){let i=si(X(s));if(!i||i.m)throw RangeError(Fs(s));return B(i.p?$O(i):QO(i))}function yO(s,i){let c=Ma(X(i));if(c)return Sa(c),Ci(Jf(di(c)));let T=gT(i);return Ci(Fc(s(T.calendar),T))}function Sa(s){if(s.calendar!==b)throw RangeError(Bs(s.calendar))}function WO(s,i){let c=da(X(i));if(c)return Sa(c),vc(di(c));let T=gT(i),{calendar:f}=T,a=s(f),[P,D,O]=a.h(T),[F,C]=a.I(P,D),[S,M]=a.N(F,C,O);return vc(vs(a.P(S,M,O)),f)}function qO(s){let i,c=((T)=>{let f=vS.exec(T);return f?(yT(f[10]),YO(f)):void 0})(X(s));if(!c){if(c=si(s),!c)throw RangeError(Fs(s));if(!c.p)throw RangeError(Fs(s));if(c.m)throw RangeError(Bs("Z"));Sa(c)}if((i=Ma(s))&&sD(i))throw RangeError(Fs(s));if((i=da(s))&&sD(i))throw RangeError(Fs(s));return qs(OT(c,1))}function GO(s){let i=((c)=>{let T=rS.exec(c);return T?((f)=>{function a(C,S,M){let d=0,m=0;if(M&&([d,O]=_s(O,Ks[M])),C!==void 0){if(D)throw RangeError(Bs(C));m=((Z)=>{let A=parseInt(Z);if(!Number.isFinite(A))throw RangeError(Bs(Z));return A})(C),P=1,S&&(O=Za(S)*(Ks[M]/Es),D=1)}return d+m}let P=0,D=0,O=0,F={...Yi(y,[a(f[2]),a(f[3]),a(f[4]),a(f[5]),a(f[6],f[7],5),a(f[8],f[9],4),a(f[10],f[11],3)]),...iT(O,2,y)};if(!P)throw RangeError(uF(y));return Aa(f[1])<0&&(F=fs(F)),F})(T):void 0})(X(s));if(!i)throw RangeError(Fs(s));return K(Bi(i))}function LO(s){let i=si(s)||Ma(s)||da(s);return i?i.calendar:s}function JO(s){let i=si(s);return i&&(i.timeZone||i.m&&Wi||i.offset)||s}function KO(s,i,c=0,T=0){let f=WT(s.timeZone),a=HT(f);return t(Ai(a,DT(s),i,c,T,!a.v,s.m),f,xc(s.calendar))}function $O(s){return XO(Ns(DT(s)))}function QO(s){return XO(vs(di(s)))}function XO(s){return{...s,calendar:xc(s.calendar)}}function si(s){let i=kS.exec(s);return i?((c)=>{let T=c[10],f=(T||"").toUpperCase()==="Z";return{isoYear:UO(c),isoMonth:parseInt(c[4]),isoDay:parseInt(c[5]),...YO(c.slice(5)),...yT(c[16]),p:Boolean(c[6]),m:f,offset:f?void 0:T}})(i):void 0}function Ma(s){let i=lS.exec(s);return i?((c)=>({isoYear:UO(c),isoMonth:parseInt(c[4]),isoDay:1,...yT(c[5])}))(i):void 0}function da(s){let i=hS.exec(s);return i?((c)=>({isoYear:Ui,isoMonth:parseInt(c[1]),isoDay:parseInt(c[2]),...yT(c[3])}))(i):void 0}function ma(s,i){let c=oS.exec(s);return c?((T,f)=>{let a=T[4]||T[5];if(f&&a)throw RangeError(Bs(a));return nf((Ji(T[2])*YT+Ji(T[3])*UT+Ji(T[4])*Es+Za(T[5]||""))*Aa(T[1]))})(c,i):void 0}function UO(s){let i=Aa(s[1]),c=parseInt(s[2]||s[3]);if(i<0&&!c)throw RangeError(Bs(-0));return i*c}function YO(s){let i=Ji(s[3]);return{...aT(Za(s[4]||""))[0],isoHour:Ji(s[1]),isoMinute:Ji(s[2]),isoSecond:i===60?59:i}}function yT(s){let i,c,T=[];if(s.replace(tS,(f,a,P)=>{let D=Boolean(a),[O,F]=P.split("=").reverse();if(F){if(F==="u-ca")T.push(O),i||(i=D);else if(D||/[A-Z]/.test(F))throw RangeError(Bs(f))}else{if(c)throw RangeError(Bs(f));c=O}return""}),T.length>1&&i)throw RangeError(Bs(s));return{timeZone:c,calendar:T[0]||b}}function Za(s){return parseInt(s.padEnd(9,"0"))}function Hi(s){return new RegExp(`^${s}$`,"i")}function Aa(s){return s&&s!=="+"?-1:1}function Ji(s){return s===void 0?0:parseInt(s)}function IO(s){return WT(X(s))}function WT(s){let i=wa(s);return typeof i=="number"?Zi(i):i?((c)=>{if(nS.test(c))throw RangeError(TS);return c.toLowerCase().split("/").map((T,f)=>(T.length<=3||/\d/.test(T))&&!/etc|yap/.test(T)?T.toUpperCase():T.replace(/baja|dumont|[a-z]+/g,(a,P)=>a.length<=2&&!f||a==="in"||a==="chat"?a.toUpperCase():a.length>2||!P?nP(a).replace(/island|noronha|murdo|rivadavia|urville/,nP):a)).join("/")})(s):Wi}function fD(s){let i=wa(s);return typeof i=="number"?i:i?i.resolvedOptions().timeZone:Wi}function wa(s){let i=ma(s=s.toUpperCase(),1);return i!==void 0?i:s!==Wi?uS(s):void 0}function ja(s,i){return is(s.epochNanoseconds,i.epochNanoseconds)}function xa(s,i){return is(s.epochNanoseconds,i.epochNanoseconds)}function RO(s,i,c,T,f,a){let P=s(Ws(a).relativeTo),D=Math.max(Si(T),Si(f));if(AD(y,T,f))return 0;if(Cc(D,P))return is(V(T),V(f));if(!P)throw RangeError(XT);let[O,F,C]=wT(i,c,P),S=Oa(C),M=jT(C);return is(S(M(F,O,T)),S(M(F,O,f)))}function Ea(s,i){return ji(s,i)||qT(s,i)}function ji(s,i){return ks(cs(s),cs(i))}function qT(s,i){return ks(rs(s),rs(i))}function _O(s,i){return!ja(s,i)}function BO(s,i){return!xa(s,i)&&!!GT(s.timeZone,i.timeZone)&&_i(s.calendar,i.calendar)}function zO(s,i){return!Ea(s,i)&&_i(s.calendar,i.calendar)}function NO(s,i){return!ji(s,i)&&_i(s.calendar,i.calendar)}function HO(s,i){return!ji(s,i)&&_i(s.calendar,i.calendar)}function pO(s,i){return!ji(s,i)&&_i(s.calendar,i.calendar)}function VO(s,i){return!qT(s,i)}function GT(s,i){if(s===i)return 1;let c=v(s),T=v(i);if(c===T)return 1;try{return fD(c)===fD(T)}catch(f){}}function ba(s,i,c,T){let f=Ri(s,R(T),3,5),a=LT(i.epochNanoseconds,c.epochNanoseconds,...f);return K(s?fs(a):a)}function ga(s,i,c,T,f,a){let P=KT(T.calendar,f.calendar),D=R(a),[O,F,C,S]=Ri(c,D,5),M=T.epochNanoseconds,d=f.epochNanoseconds,m=is(d,M),Z;if(m)if(O<6)Z=LT(M,d,O,F,C,S);else{let A=i(((w,x)=>{if(!GT(w,x))throw RangeError(TC);return w})(T.timeZone,f.timeZone)),j=s(P);Z=hO(j,A,T,f,m,O,D),Z=MT(Z,d,O,F,C,S,j,T,oD,E(Pa,A))}else Z=o;return K(c?fs(Z):Z)}function ya(s,i,c,T,f){let a=KT(c.calendar,T.calendar),P=R(f),[D,O,F,C]=Ri(i,P,6),S=ss(c),M=ss(T),d=is(M,S),m;if(d)if(D<=6)m=LT(S,M,D,O,F,C);else{let Z=s(a);m=kO(Z,c,T,d,D,P),m=MT(m,M,D,O,F,C,Z,c,ss,Da)}else m=o;return K(i?fs(m):m)}function Wa(s,i,c,T,f){let a=KT(c.calendar,T.calendar),P=R(f);return lO(i,()=>s(a),c,T,...Ri(i,P,6,9,6),P)}function qa(s,i,c,T,f){let a=KT(c.calendar,T.calendar),P=R(f),D=Ri(i,P,9,9,8),O=s(a);return lO(i,()=>O,Fc(O,c),Fc(O,T),...D,P)}function lO(s,i,c,T,f,a,P,D,O){let F=ss(c),C=ss(T),S;if(is(C,F))if(f===6)S=LT(F,C,f,a,P,D);else{let M=i();S=M.dateUntil(c,T,f,O),a===6&&P===1||(S=MT(S,C,f,a,P,D,M,c,ss,AT))}else S=o;return K(s?fs(S):S)}function Ga(s,i,c,T){let f=R(T),[a,P,D,O]=Ri(s,f,5,5),F=us(La(i,c),jc(P,D),O),C={...o,...bT(F,a)};return K(s?fs(C):C)}function I0(s,i,c,T,f,a){let P=is(T.epochNanoseconds,c.epochNanoseconds);return P?f<6?vO(c.epochNanoseconds,T.epochNanoseconds,f):hO(i,s,c,T,P,f,a):o}function R0(s,i,c,T,f){let a=ss(i),P=ss(c),D=is(P,a);return D?T<=6?vO(a,P,T):kO(s,i,c,D,T,f):o}function hO(s,i,c,T,f,a,P){let[D,O,F]=((M,d,m,Z)=>{function A(){return Q={...wi(x,$++*-Z),...w},k=Ms(M,Q),is(I,k)===-Z}let j=Ts(d,M),w=ds(Ls,j),x=Ts(m,M),I=m.epochNanoseconds,$=0,J=La(j,x),Q,k;if(Math.sign(J)===-Z&&$++,A()&&(Z===-1||A()))throw RangeError(yc);let H=As(Zs(k,I));return[j,Q,H]})(i,c,T,f);var C,S;return{...a===6?(C=D,S=O,{...o,days:oO(C,S)}):s.dateUntil(D,O,a,P),...bT(F)}}function kO(s,i,c,T,f,a){let[P,D,O]=((F,C,S)=>{let M=C,d=La(F,C);return Math.sign(d)===-S&&(M=wi(C,-S),d+=W*S),[F,M,d]})(i,c,T);return{...s.dateUntil(P,D,f,a),...bT(O)}}function LT(s,i,c,T,f,a){return{...o,...zi(dT(Zs(s,i),T,f,a),c)}}function vO(s,i,c){return{...o,...zi(Zs(s,i),c)}}function oO(s,i){return JT(cs(s),cs(i))}function JT(s,i){return Math.trunc((i-s)/Cs)}function La(s,i){return rs(i)-rs(s)}function KT(s,i){if(!_i(s,i))throw RangeError(pa);return s}function _0(s){function i(f){return((a,P)=>({...tO(a,P),F:a.month,day:parseInt(a.day)}))(Lf(c,f),T)}let c=TP(s),T=rc(s);return{id:s,O:B0(i),B:z0(i)}}function B0(s){return Ss((i)=>{let c=cs(i);return s(c)},WeakMap)}function z0(s){let i=s(0).year-qS;return Ss((c)=>{let T,f=Ii(c-i),a=[],P=[];do f+=400*Cs;while((T=s(f)).year<=c);do f+=(1-T.day)*Cs,T.year===c&&(a.push(f),P.push(T.F)),f-=Cs;while((T=s(f)).year>=c);return{k:a.reverse(),C:PC(P.reverse())}})}function tO(s,i){let c,T,f=rO(s);if(s.era){let a=ZC[i];a!==void 0&&(c=i==="islamic"?"ah":s.era.normalize("NFD").toLowerCase().replace(/[^a-z0-9]/g,""),c==="bc"||c==="b"?c="bce":c!=="ad"&&c!=="a"||(c="ce"),T=f,f=iF(T,a[c]||0))}return{era:c,eraYear:T,year:f}}function rO(s){return parseInt(s.relatedYear||s.year)}function Sf(s){let{year:i,F:c,day:T}=this.O(s),{C:f}=this.B(i);return[i,f[c]+1,T]}function Sc(s,i=1,c=1){return this.B(s).k[i-1]+(c-1)*Cs}function zc(s){let i=PD(this,s),c=PD(this,s-1),T=i.length;if(T>c.length){let f=cF(this);if(f<0)return-f;for(let a=0;a<T;a++)if(i[a]!==c[a])return a+1}}function Nc(s){return JT(Sc.call(this,s),Sc.call(this,s+1))}function aD(s,i){let{k:c}=this.B(s),T=i+1,f=c;return T>c.length&&(T=1,f=this.B(s+1).k),JT(c[i-1],f[T-1])}function Hc(s){return this.B(s).k.length}function PD(s,i){return Object.keys(s.B(i).C)}function uO(s){return xc(X(s))}function xc(s){if((s=s.toLowerCase())!==b&&s!==RT&&rc(s)!==rc(TP(s).resolvedOptions().calendar))throw RangeError(cS(s));return s}function rc(s){return s==="islamicc"&&(s="islamic"),s.split("-")[0]}function nO(s){return this.R(s)[0]}function eO(s){return this.R(s)[1]}function Ja(s){let[i]=this.h(s);return JT(this.q(i),cs(s))+1}function sF(s){let i=sM.exec(s);if(!i)throw RangeError(sS(s));return[parseInt(i[1]),Boolean(i[2])]}function uc(s,i,c){return s+(i||c&&s>=c?1:0)}function Mf(s,i){return s-(i&&s>=i?1:0)}function iF(s,i){return(i+s)*(Math.sign(i)||1)||0}function df(s){return ZC[TF(s)]}function cF(s){return AS[TF(s)]}function TF(s){return rc(s.id||b)}function fF(s,i,c,T){let f=ii(c,T,Gs,[],SC);if(f.timeZone!==void 0){let a=c.dateFromFields(f),P=xi(f),D=s(f.timeZone);return{epochNanoseconds:Ai(i(D),{...a,...P},f.offset!==void 0?Ni(f.offset):void 0),timeZone:D}}return{...c.dateFromFields(f),...bs}}function aF(s,i,c,T,f,a){let P=ii(c,f,Gs,FC,SC),D=s(P.timeZone),[O,F,C]=wc(a),S=c.dateFromFields(P,CT(a,O)),M=xi(P,O);return t(Ai(i(D),{...S,...M},P.offset!==void 0?Ni(P.offset):void 0,F,C),D,T)}function PF(s,i,c){let T=ii(s,i,Gs,[],Vs),f=g(c);return _(Ns({...s.dateFromFields(T,CT(c,f)),...xi(T,f)}))}function Ka(s,i,c,T=[]){let f=ii(s,i,Gs,T);return s.dateFromFields(f,c)}function $a(s,i,c,T){let f=ii(s,i,ha,T);return s.yearMonthFromFields(f,c)}function Qa(s,i,c,T,f=[]){let a=ii(s,c,Gs,f);return i&&a.month!==void 0&&a.monthCode===void 0&&a.year===void 0&&(a.year=Ui),s.monthDayFromFields(a,T)}function DF(s,i){let c=g(i);return qs(xi(Js(s,Zf,[],1),c))}function OF(s){let i=Js(s,ka);return K(Bi({...o,...i}))}function ii(s,i,c,T=[],f=[]){return Js(i,[...s.fields(c),...f].sort(),T)}function Js(s,i,c,T=!c){let f={},a,P=0;for(let D of i){if(D===a)throw RangeError(o0(D));if(D==="constructor"||D==="__proto__")throw RangeError(Na(D));let O=s[D];if(O!==void 0)P=1,CD[D]&&(O=CD[D](O,D)),f[D]=O;else if(c){if(c.includes(D))throw TypeError(za(D));f[D]=mC[D]}a=D}if(T&&!P)throw TypeError(uF(i));return f}function xi(s,i){return OT(fM({...mC,...s}),i)}function FF(s,i,c,T,f,a){let P=R(a),{calendar:D,timeZone:O}=c;return t(((F,C,S,M,d)=>{let m=Ec(F,S,M,Gs,CC,OC),[Z,A,j]=wc(d,2);return Ai(C,{...F.dateFromFields(m,CT(d,Z)),...xi(m,Z)},Ni(m.offset),A,j)})(s(D),i(O),T,f,P),O,D)}function CF(s,i,c,T,f){let a=R(f);return _(((P,D,O,F)=>{let C=Ec(P,D,O,Gs,Vs),S=g(F);return Ns({...P.dateFromFields(C,CT(F,S)),...xi(C,S)})})(s(i.calendar),c,T,a))}function SF(s,i,c,T,f){let a=R(f);return((P,D,O,F)=>{let C=Ec(P,D,O,Gs);return P.dateFromFields(C,F)})(s(i.calendar),c,T,a)}function MF(s,i,c,T,f){let a=R(f);return Ci(((P,D,O,F)=>{let C=Ec(P,D,O,ha);return P.yearMonthFromFields(C,F)})(s(i.calendar),c,T,a))}function dF(s,i,c,T,f){let a=R(f);return((P,D,O,F)=>{let C=Ec(P,D,O,Gs);return P.monthDayFromFields(C,F)})(s(i.calendar),c,T,a)}function mF(s,i,c){return qs(((T,f,a)=>{let P=g(a);return xi({...ds(Zf,T),...Js(f,Zf)},P)})(s,i,c))}function ZF(s,i){return K((c=s,T=i,Bi({...c,...Js(T,ka)})));var c,T}function Ec(s,i,c,T,f=[],a=[]){let P=[...s.fields(T),...f].sort(),D=Js(i,P,a),O=Js(c,P);return D=s.mergeFields(D,O),Js(D,P,[])}function Xa(s,i){let c=ii(s,i,dC);return s.monthDayFromFields(c)}function Ua(s,i,c){let T=ii(s,i,MC);return s.yearMonthFromFields(T,c)}function AF(s,i,c,T,f){i=ds(c=s.fields(c),i),T=Js(T,f=s.fields(f),[]);let a=s.mergeFields(i,T);return a=Js(a,[...c,...f].sort(),[]),s.dateFromFields(a)}function Pf(s,i){let{era:c,eraYear:T,year:f}=i,a=df(s);if(c!==void 0||T!==void 0){if(c===void 0||T===void 0)throw TypeError(r0);if(!a)throw RangeError(t0);let P=a[c];if(P===void 0)throw RangeError(n0(c));let D=iF(T,P);if(f!==void 0&&f!==D)throw RangeError(u0);f=D}else if(f===void 0)throw TypeError(e0(a));return f}function Df(s,i,c,T){let{month:f,monthCode:a}=i;if(a!==void 0){let P=((D,O,F,C)=>{let S=D.U(F),[M,d]=sF(O),m=uc(M,d,S);if(d){let Z=cF(D);if(Z===void 0)throw RangeError(Pc);if(Z>0){if(m>Z)throw RangeError(Pc);if(S===void 0){if(C===1)throw RangeError(Pc);m--}}else{if(m!==-Z)throw RangeError(Pc);if(S===void 0&&C===1)throw RangeError(Pc)}}return m})(s,a,c,T);if(f!==void 0&&f!==P)throw RangeError(iC);f=P,T=1}else if(f===void 0)throw TypeError(iS);return js("month",f,1,s.L(c),T)}function DD(s,i,c,T,f){return Os(i,"day",1,s.j(T,c),f)}function Of(s,i,c,T){let f=0,a=[];for(let P of c)i[P]!==void 0?f=1:a.push(P);if(Object.assign(s,i),f)for(let P of T||a)delete s[P]}function wF(s){return h(ws(fT(TT(s))))}function jF(s,i,c,T,f=b){return t(ws(fT(TT(c))),i(T),s(f))}function xF(s,i,c,T,f=0,a=0,P=0,D=0,O=0,F=0,C=b){return _(Ns(DT(gs(e,Yi(_T,[i,c,T,f,a,P,D,O,F])))),s(C))}function EF(s,i,c,T,f=b){return B(vs(di(gs(e,{isoYear:i,isoMonth:c,isoDay:T}))),s(f))}function bF(s,i,c,T=b,f=1){let a=e(i),P=e(c),D=s(T);return Ci(Jf(di({isoYear:a,isoMonth:P,isoDay:e(f)})),D)}function gF(s,i,c,T=b,f=Ui){let a=e(i),P=e(c),D=s(T);return vc(vs(di({isoYear:e(f),isoMonth:a,isoDay:P})),D)}function yF(s=0,i=0,c=0,T=0,f=0,a=0){return qs(OT(gs(e,Yi(Ls,[s,i,c,T,f,a])),1))}function WF(s=0,i=0,c=0,T=0,f=0,a=0,P=0,D=0,O=0,F=0){return K(Bi(gs(JD,Yi(y,[s,i,c,T,f,a,P,D,O,F]))))}function Ya(s,i,c=b){return t(s.epochNanoseconds,i,c)}function qF(s){return h(s.epochNanoseconds)}function Ia(s,i){return _(Ts(i,s))}function Ra(s,i){return B(Ts(i,s))}function GF(s,i,c){return Ua(s(i.calendar),c)}function LF(s,i,c){return Xa(s(i.calendar),c)}function _a(s,i){return qs(Ts(i,s))}function JF(s,i,c,T){let f=((a,P,D,O)=>{let F=Xf(O);return Ms(a(P),D,F)})(s,c,i,T);return t(ws(f),c,i.calendar)}function KF(s,i,c){let T=s(i.calendar);return Ci({...i,...Ua(T,c)})}function $F(s,i,c){return Xa(s(i.calendar),c)}function QF(s,i,c,T,f){let a=s(f.timeZone),P=f.plainTime,D=P!==void 0?i(P):bs;return t(Ms(c(a),{...T,...D}),a,T.calendar)}function XF(s,i=bs){return _(Ns({...s,...i}))}function UF(s,i,c){return Ua(s(i.calendar),c)}function YF(s,i,c){return Xa(s(i.calendar),c)}function IF(s,i,c,T){return((f,a,P)=>AF(f,a,MC,zs(P),qc))(s(i.calendar),c,T)}function RF(s,i,c,T){return((f,a,P)=>AF(f,a,dC,zs(P),IT))(s(i.calendar),c,T)}function _F(s,i,c,T,f){let a=zs(f),P=i(a.plainDate),D=s(a.timeZone);return t(Ms(c(D),{...P,...T}),D,P.calendar)}function BF(s,i){return _(Ns({...s,...i}))}function zF(s){return h(ws(Qi(s,Es)))}function NF(s){return h(ws(Qi(s,$s)))}function HF(s){return h(ws(fT(TT(s),bi)))}function pF(s){return h(ws(fT(TT(s))))}function VF(s,i,c=bs){let T=i.timeZone,f=s(T),a={...Ts(i,f),...c};return t(Ai(f,a,a.offsetNanoseconds,2),T,i.calendar)}function lF(s,i,c){let T=i.timeZone,f=s(T),a={...Ts(i,f),...c},P=oF(i.calendar,c.calendar);return t(Ai(f,a,a.offsetNanoseconds,2),T,P)}function hF(s,i=bs){return _({...s,...i})}function kF(s,i){return _({...s,...i},oF(s.calendar,i.calendar))}function $T(s,i){return{...s,calendar:i}}function vF(s,i){return{...s,timeZone:i}}function oF(s,i){if(s===i)return s;let c=v(s),T=v(i);if(c===T||c===b)return i;if(T===b)return s;throw RangeError(pa)}function N0(s,i){return(c)=>c===b?s:c===RT||c===Xi?Object.assign(Object.create(s),{id:c}):Object.assign(Object.create(i),eS(c))}function Ei(s,i,c){let T=new Set(c);return(f)=>(((a,P)=>{for(let D of P)if(D in a)return 1;return 0})(f=xf(T,f),s)||Object.assign(f,i),c&&(f.timeZone=Wi,["full","long"].includes(f.timeStyle)&&(f.timeStyle="medium")),f)}function Hs(s,i=Ba){let[c,,,T]=s;return(f,a=EM,...P)=>{let D=i(T&&T(...P),f,a,c),O=D.resolvedOptions();return[D,...H0(s,O,P)]}}function Ba(s,i,c,T){if(c=T(c),s){if(c.timeZone!==void 0)throw TypeError(dS);c.timeZone=s}return new ci(i,c)}function H0(s,i,c){let[,T,f]=s;return c.map((a)=>(a.calendar&&((P,D,O)=>{if((O||P!==b)&&P!==D)throw RangeError(pa)})(v(a.calendar),i.calendar,f),T(a,i)))}function pi(s){let i=bc();return ns(i,s.getOffsetNanosecondsFor(i))}function bc(){return Qi(Date.now(),$s)}function ps(){return MD||(MD=new ci().resolvedOptions().timeZone)}var p0=(s,i)=>`Non-integer ${s}: ${i}`,V0=(s,i)=>`Non-positive ${s}: ${i}`,l0=(s,i)=>`Non-finite ${s}: ${i}`,h0=(s)=>`Cannot convert bigint to ${s}`,k0=(s)=>`Invalid bigint: ${s}`,v0="Cannot convert Symbol to string",tF="Invalid object",rF=(s,i,c,T,f)=>f?rF(s,f[i],f[c],f[T]):gc(s,i)+`; must be between ${c}-${T}`,gc=(s,i)=>`Invalid ${s}: ${i}`,za=(s)=>`Missing ${s}`,Na=(s)=>`Invalid field ${s}`,o0=(s)=>`Duplicate field ${s}`,uF=(s)=>"No valid fields: "+s.join(),nF="Invalid bag",eF=(s,i,c)=>gc(s,i)+"; must be "+Object.keys(c).join(),sC="Cannot use valueOf",Ha="Invalid calling context",t0="Forbidden era/eraYear",r0="Mismatching era/eraYear",u0="Mismatching year/eraYear",n0=(s)=>`Invalid era: ${s}`,e0=(s)=>"Missing year"+(s?"/era/eraYear":""),sS=(s)=>`Invalid monthCode: ${s}`,iC="Mismatching month/monthCode",iS="Missing month/monthCode",OD="Cannot guess year",Pc="Invalid leap month",cC="Invalid protocol",yc="Invalid protocol results",pa="Mismatching Calendars",cS=(s)=>`Invalid Calendar: ${s}`,TC="Mismatching TimeZones",TS="Forbidden ICU TimeZone",fS="Out-of-bounds offset",aS="Out-of-bounds TimeZone gap",PS="Invalid TimeZone offset",DS="Ambiguous offset",QT="Out-of-bounds date",OS="Out-of-bounds duration",FS="Cannot mix duration signs",XT="Missing relativeTo",CS="Cannot use large units",SS="Required smallestUnit or largestUnit",MS="smallestUnit > largestUnit",Fs=(s)=>`Cannot parse: ${s}`,Bs=(s)=>`Invalid substring: ${s}`,fC=(s)=>`Cannot format ${s}`,aC="Mismatching types for formatting",dS="Cannot specify TimeZone",PC=E(mc,(s,i)=>i),Vi=E(mc,(s,i,c)=>c),xs=E(lc,2),mf={nanosecond:0,microsecond:1,millisecond:2,second:3,minute:4,hour:5,day:6,week:7,month:8,year:9},Wc=Object.keys(mf),Cs=86400000,DC=1000,bi=1000,$s=1e6,Es=1e9,UT=60000000000,YT=3600000000000,W=86400000000000,Ks=[1,bi,$s,Es,UT,YT,W],Vs=Wc.slice(0,6),Zf=Zc(Vs),OC=["offset"],FC=["timeZone"],CC=Vs.concat(OC),SC=CC.concat(FC),Af=["era","eraYear"],mS=Af.concat(["year"]),IT=["year"],Va=["monthCode"],la=["month"].concat(Va),qc=["day"],ha=la.concat(IT),MC=Va.concat(IT),Gs=qc.concat(ha),ZS=qc.concat(la),dC=qc.concat(Va),mC=Vi(Vs,0),b="iso8601",RT="gregory",Xi="japanese",ZC={[RT]:{bce:-1,ce:0},[Xi]:{bce:-1,ce:0,meiji:1867,taisho:1911,showa:1925,heisei:1988,reiwa:2018},ethioaa:{era0:0},ethiopic:{era0:0,era1:5500},coptic:{era0:-1,era1:0},roc:{beforeroc:-1,minguo:0},buddhist:{be:0},islamic:{ah:0},indian:{saka:0},persian:{ap:0}},AS={chinese:13,dangi:13,hebrew:-6},X=E(cT,"string"),AC=E(cT,"boolean"),wS=E(cT,"number"),wC=E(cT,"function"),y=Wc.map((s)=>s+"s"),ka=Zc(y),jS=y.slice(0,6),jC=y.slice(6),xS=jC.slice(1),ES=PC(y),o=Vi(y,0),va=Vi(jS,0),oa=E(wD,y),Ls=["isoNanosecond","isoMicrosecond","isoMillisecond","isoSecond","isoMinute","isoHour"],ta=["isoDay","isoMonth","isoYear"],_T=Ls.concat(ta),ra=Zc(ta),xC=Zc(Ls),EC=Zc(_T),bs=Vi(xC,0),bS=E(wD,_T),ci=Intl.DateTimeFormat,bC="en-GB",ua=1e8,gS=ua*Cs,yS=[ua,0],WS=[-ua,0],Mc=275760,dc=-271821,qS=1970,Ui=1972,Rs=12,GS=Ii(1868,9,8),LS=Ss(L0,WeakMap),nc="smallestUnit",wf="unit",Oc="roundingIncrement",Ff="fractionalSecondDigits",gC="relativeTo",yC={constrain:0,reject:1},JS=Object.keys(yC),KS={compatible:0,reject:1,earlier:2,later:3},$S={reject:0,use:1,prefer:2,ignore:3},QS={auto:0,never:1,critical:2,always:3},XS={auto:0,never:1,critical:2},US={auto:0,never:1},YS={floor:0,halfFloor:1,ceil:2,halfCeil:3,trunc:4,halfTrunc:5,expand:6,halfExpand:7,halfEven:8},Gc=E(Bf,nc),na=E(Bf,"largestUnit"),IS=E(Bf,wf),WC=E(mi,"overflow",yC),qC=E(mi,"disambiguation",KS),RS=E(mi,"offset",$S),ea=E(mi,"calendarName",QS),_S=E(mi,"timeZoneName",XS),BS=E(mi,"offset",US),Lc=E(mi,"roundingMode",YS),li="PlainYearMonth",hi="PlainMonthDay",gi="PlainDate",yi="PlainDateTime",BT="PlainTime",ls="ZonedDateTime",zT="Instant",NT="Duration",zS=[Math.floor,(s)=>Bc(s)?Math.floor(s):Math.round(s),Math.ceil,(s)=>Bc(s)?Math.ceil(s):Math.round(s),Math.trunc,(s)=>Bc(s)?Math.trunc(s)||0:Math.round(s),(s)=>s<0?Math.floor(s):Math.ceil(s),(s)=>Math.sign(s)*Math.round(Math.abs(s))||0,(s)=>Bc(s)?(s=Math.trunc(s)||0)+s%2:Math.round(s)],Wi="UTC",pc=5184000,NS=kc(1847),HS=kc(new Date().getUTCFullYear()+10),pS=/0+$/,Ts=Ss(U0,WeakMap),FD=4294967295,HT=Ss((s)=>{let i=wa(s);return typeof i=="object"?new LC(i):new GC(i||0)});class GC{constructor(s){this.v=s}getOffsetNanosecondsFor(){return this.v}getPossibleInstantsFor(s){return[Kf(s,this.v)]}l(){}}class LC{constructor(s){this.$=((i)=>{function c(O){let F=Cf(O,P,D),[C,S]=TD(F),M=f(C),d=f(S);return M===d?M:T(a(C,S),M,d,O)}function T(O,F,C,S){let M,d;for(;(S===void 0||(M=S<O[0]?F:S>=O[1]?C:void 0)===void 0)&&(d=O[1]-O[0]);){let m=O[0]+Math.floor(d/2);i(m)===C?O[1]=m:O[0]=m+1}return M}let f=Ss(i),a=Ss(Y0),P=NS,D=HS;return{G(O){let F=c(O-86400),C=c(O+86400),S=O-F,M=O-C;if(F===C)return[S];let d=c(S);return d===c(M)?[O-d]:F>C?[S,M]:[]},V:c,l(O,F){let C=Cf(O,P,D),[S,M]=TD(C),d=pc*F,m=F<0?()=>M>P||(P=C,0):()=>S<D||(D=C,0);for(;m();){let Z=f(S),A=f(M);if(Z!==A){let j=a(S,M);T(j,Z,A);let w=j[0];if((ks(w,O)||1)===F)return w}S+=d,M+=d}}}})(((i)=>(c)=>{let T=Lf(i,c*DC);return kc(rO(T),parseInt(T.month),parseInt(T.day),parseInt(T.hour),parseInt(T.minute),parseInt(T.second))-c})(s))}getOffsetNanosecondsFor(s){return this.$.V(QD(s))*Es}getPossibleInstantsFor(s){let[i,c]=[kc((T=s).isoYear,T.isoMonth,T.isoDay,T.isoHour,T.isoMinute,T.isoSecond),T.isoMillisecond*$s+T.isoMicrosecond*bi+T.isoNanosecond];var T;return this.$.G(i).map((f)=>ws($i(Qi(f,Es),c)))}l(s,i){let[c,T]=XD(s),f=this.$.l(c+(i>0||T?1:0),i);if(f!==void 0)return Qi(f,Es)}}var sP="([+\u2212-])",Vc="(?:[.,](\\d{1,9}))?",JC=`(?:(?:${sP}(\\d{6}))|(\\d{4}))-?(\\d{2})`,iP="(\\d{2})(?::?(\\d{2})(?::?(\\d{2})"+Vc+")?)?",cP=sP+iP,VS=JC+"-?(\\d{2})(?:[T ]"+iP+"(Z|"+cP+")?)?",KC="\\[(!?)([^\\]]*)\\]",pT=`((?:${KC}){0,9})`,lS=Hi(JC+pT),hS=Hi("(?:--)?(\\d{2})-?(\\d{2})"+pT),kS=Hi(VS+pT),vS=Hi("T?"+iP+"(?:"+cP+")?"+pT),oS=Hi(cP),tS=new RegExp(KC,"g"),rS=Hi(`${sP}?P(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(?:T(?:(\\d+)${Vc}H)?(?:(\\d+)${Vc}M)?(?:(\\d+)${Vc}S)?)?`),uS=Ss((s)=>new ci(bC,{timeZone:s,era:"short",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"})),nS=/^(AC|AE|AG|AR|AS|BE|BS|CA|CN|CS|CT|EA|EC|IE|IS|JS|MI|NE|NS|PL|PN|PR|PS|SS|VS)T$/,eS=Ss(_0),TP=Ss((s)=>new ci(bC,{calendar:s,timeZone:Wi,era:"short",year:"numeric",month:"short",day:"numeric"})),sM=/^M(\d{2})(L?)$/,iM={era:hc,eraYear:e,year:e,month:eP,monthCode:hc,day:eP},cM=Vi(Vs,e),TM=Vi(y,JD),CD=Object.assign({},iM,cM,TM,{offset:hc}),fM=E(G0,Vs,Ls),SD={dateAdd(s,i,c){let T=g(c),f,{years:a,months:P,weeks:D,days:O}=i;if(O+=V(i,5)[0],a||P)f=((F,C,S,M,d)=>{let[m,Z,A]=F.h(C);if(S){let[j,w]=F.I(m,Z);m+=S,Z=uc(j,w,F.U(m)),Z=js("month",Z,1,F.L(m),d)}return M&&([m,Z]=F._(m,Z,M)),A=js("day",A,1,F.j(m,Z),d),F.q(m,Z,A)})(this,s,a,P,T);else{if(!D&&!O)return s;f=cs(s)}return f+=(7*D+O)*Cs,vs(PT(f))},dateUntil(s,i,c){if(c<=7){let O=0,F=oO({...s,...bs},{...i,...bs});return c===7&&([O,F]=ts(F,7)),{...o,weeks:O,days:F}}let T=this.h(s),f=this.h(i),[a,P,D]=((O,F,C,S,M,d,m)=>{let Z=M-F,A=d-C,j=m-S;if(Z||A){let w=Math.sign(Z||A),x=O.j(M,d),I=0;if(Math.sign(j)===-w){let $=x;[M,d]=O._(M,d,-w),Z=M-F,A=d-C,x=O.j(M,d),I=w<0?-$:x}if(j=m-Math.min(S,x)+I,Z){let[$,J]=O.I(F,C),[Q,k]=O.I(M,d);if(A=Q-$||Number(k)-Number(J),Math.sign(A)===-w){let H=w<0&&-O.L(M);Z=(M-=w)-F,A=d-uc($,J,O.U(M))+(H||O.L(M))}}}return[Z,A,j]})(this,...T,...f);return c===8&&(P+=this.J(a,T[0]),a=0),{...o,years:a,months:P,days:D}},dateFromFields(s,i){let c=g(i),T=Pf(this,s),f=Df(this,s,T,c),a=DD(this,s,f,T,c);return B(vs(this.P(T,f,a)),this.id||b)},yearMonthFromFields(s,i){let c=g(i),T=Pf(this,s),f=Df(this,s,T,c);return Ci(Jf(this.P(T,f,1)),this.id||b)},monthDayFromFields(s,i){let c=g(i),T=!this.id,{monthCode:f,year:a,month:P}=s,D,O,F,C,S;if(f!==void 0){[D,O]=sF(f),S=dD(s,"day");let M=this.N(D,O,S);if(!M)throw RangeError(OD);if([F,C]=M,P!==void 0&&P!==C)throw RangeError(iC);T&&(C=js("month",C,1,Rs,1),S=js("day",S,1,$f(a!==void 0?a:F,C),c))}else{F=a===void 0&&T?Ui:Pf(this,s),C=Df(this,s,F,c),S=DD(this,s,C,F,c);let M=this.U(F);O=C===M,D=Mf(C,M);let d=this.N(D,O,S);if(!d)throw RangeError(OD);[F,C]=d}return vc(vs(this.P(F,C,S)),this.id||b)},fields(s){return df(this)&&s.includes("year")?[...s,...Af]:s},mergeFields(s,i){let c=Object.assign(Object.create(null),s);return Of(c,i,la),df(this)&&(Of(c,i,mS),this.id===Xi&&Of(c,i,ZS,Af)),c},inLeapYear(s){let[i]=this.h(s);return this.K(i)},monthsInYear(s){let[i]=this.h(s);return this.L(i)},daysInMonth(s){let[i,c]=this.h(s);return this.j(i,c)},daysInYear(s){let[i]=this.h(s);return this.X(i)},dayOfYear:Ja,era(s){return this.ee(s)[0]},eraYear(s){return this.ee(s)[1]},monthCode(s){let[i,c]=this.h(s),[T,f]=this.I(i,c);return((a,P)=>"M"+xs(a)+(P?"L":""))(T,f)},dayOfWeek:_D,daysInWeek(){return 7}},aM={dayOfYear:Ja,h:YD,q:Ii},PM=Object.assign({},aM,{weekOfYear:nO,yearOfWeek:eO,R(s){function i(d){return(7-d<T?7:0)-d}function c(d){let m=RD(M+d),Z=d||1,A=i(Dc(O+m*Z,7));return C=(m+(A-F)*Z)/7}let T=this.id?1:4,f=_D(s),a=this.dayOfYear(s),P=Dc(f-1,7),D=a-1,O=Dc(P-D,7),F=i(O),C,S=Math.floor((D-F)/7)+1,M=s.isoYear;return S?S>c(0)&&(S=1,M++):(S=c(-1),M--),[S,M,C]}}),DM={dayOfYear:Ja,h:Sf,q:Sc,weekOfYear:nO,yearOfWeek:eO,R(){return[]}},ki=N0(Object.assign({},SD,PM,{h:YD,ee(s){return this.id===RT?BD(s):this.id===Xi?LS(s):[]},I:(s,i)=>[i,0],N(s,i){if(!i)return[Ui,s]},K:Qf,U(){},L:ID,J:(s)=>s*Rs,j:$f,X:RD,P:(s,i,c)=>({isoYear:s,isoMonth:i,isoDay:c}),q:Ii,_:(s,i,c)=>(s+=sT(c,Rs),(i+=bf(c,Rs))<1?(s--,i+=Rs):i>Rs&&(s++,i-=Rs),[s,i]),year(s){return s.isoYear},month(s){return s.isoMonth},day:(s)=>s.isoDay}),Object.assign({},SD,DM,{h:Sf,ee(s){let i=this.O(s);return[i.era,i.eraYear]},I(s,i){let c=zc.call(this,s);return[Mf(i,c),c===i]},N(s,i,c){let[T,f,a]=Sf.call(this,{isoYear:Ui,isoMonth:Rs,isoDay:31}),P=zc.call(this,T),D=f===P;(ks(s,Mf(f,P))||ks(Number(i),Number(D))||ks(c,a))===1&&T--;for(let O=0;O<100;O++){let F=T-O,C=zc.call(this,F),S=uc(s,i,C);if(i===(S===C)&&c<=aD.call(this,F,S))return[F,S]}},K(s){let i=Nc.call(this,s);return i>Nc.call(this,s-1)&&i>Nc.call(this,s+1)},U:zc,L:Hc,J(s,i){let c=i+s,T=Math.sign(s),f=T<0?-1:0,a=0;for(let P=i;P!==c;P+=T)a+=Hc.call(this,P+f);return a},j:aD,X:Nc,P(s,i,c){return PT(Sc.call(this,s,i,c))},q:Sc,_(s,i,c){if(c){if(i+=c,!Number.isSafeInteger(i))throw RangeError(QT);if(c<0)for(;i<1;)i+=Hc.call(this,--s);else{let T;for(;i>(T=Hc.call(this,s));)i-=T,s++}}return[s,i]},year(s){return this.O(s).year},month(s){let{year:i,F:c}=this.O(s),{C:T}=this.B(i);return T[c]+1},day(s){return this.O(s).day}})),os="numeric",vi=["timeZoneName"],$C={month:os,day:os},fP={year:os,month:os},aP=Object.assign({},fP,{day:os}),PP={hour:os,minute:os,second:os},DP=Object.assign({},aP,PP),OM=Object.assign({},DP,{timeZoneName:"short"}),FM=Object.keys(fP),CM=Object.keys($C),SM=Object.keys(aP),MM=Object.keys(PP),OP=["dateStyle"],dM=FM.concat(OP),mM=CM.concat(OP),FP=SM.concat(OP,["weekday"]),Jc=MM.concat(["dayPeriod","timeStyle"]),CP=FP.concat(Jc),ZM=CP.concat(vi),AM=vi.concat(Jc),wM=vi.concat(FP),jM=vi.concat(["day","weekday"],Jc),xM=vi.concat(["year","weekday"],Jc),EM={},SP=[Ei(CP,DP),ST],QC=[Ei(ZM,OM),ST,0,(s,i)=>{let c=v(s.timeZone);if(i&&v(i.timeZone)!==c)throw RangeError(TC);return c}],MP=[Ei(CP,DP,vi),cs],dP=[Ei(FP,aP,AM),cs],mP=[Ei(Jc,PP,wM),(s)=>rs(s)/$s],ZP=[Ei(dM,fP,jM),cs,1],AP=[Ei(mM,$C,xM),cs,1],MD;function Us(s,i,c,T,f){function a(...O){if(!(this instanceof a))throw TypeError(Ha);IC(this,i(...O))}function P(O,F){return Object.defineProperties(function(...C){return O.call(this,D(this),...C)},jf(F))}function D(O){let F=n(O);if(!F||F.branding!==s)throw TypeError(Ha);return F}return Object.defineProperties(a.prototype,{...mD(gs(P,c)),...Mi(gs(P,T)),...ec("Temporal."+s)}),Object.defineProperties(a,{...Mi(f),...jf(s)}),[a,(O)=>{let F=Object.create(a.prototype);return IC(F,O),F},D]}function BC(s){return s=s.concat("id").sort(),(i)=>{if(!ZD(i,s))throw TypeError(cC);return i}}function ui(s){if(n(s)||s.calendar!==void 0||s.timeZone!==void 0)throw TypeError(nF);return s}function VT(s,i){let c={};for(let T in s)c[T]=({o:f},a)=>{let P=n(a)||{},{branding:D}=P,O=D===gi||i.includes(D)?P:Ps(a);return f[T](O)};return c}function xP(s){let i={};for(let c in s)i[c]=(T)=>{let{calendar:f}=T;return(a=f,typeof a=="string"?ki(a):(P=a,Object.assign(Object.create(RM),{i:P})))[c](T);var a,P};return i}function Di(){throw TypeError(sC)}function $c({calendar:s}){return typeof s=="string"?new JP(s):s}function XC(s,i){if(i=R(i),l(s)){let T=n(s);if(T&&T.branding===hi)return g(i),T;let f=HC(s);return Qa(rT(f||b),!f,s,i)}let c=WO(ki,s);return g(i),c}function zC(s,i,c){return T=i.call(s,as(h(c))),nf(Ac(T));var T}function lT(s,i=hC){let c=Object.keys(i).sort(),T={};for(let f of c)T[f]=E(i[f],s,wC(s[f]));return T}function q(s,i){return typeof s=="string"?HT(s):lT(s,i)}function N(s){return q(s,jP)}function Qs(s){if(l(s)){let i=n(s);if(i)switch(i.branding){case zT:return i;case ls:return h(i.epochNanoseconds)}}return xO(s)}function UC(s,i,c){let T=i.l(Qs(c).epochNanoseconds,s);return T?as(h(T)):null}function L(s){return l(s)?(n(s)||{}).timeZone||pM(s):((i)=>WT(JO(X(i))))(s)}function Ti(s,i){if(l(s)){let c=n(s)||{};switch(c.branding){case BT:return g(i),c;case yi:return g(i),qs(c);case ls:return g(i),_a(N,c)}return DF(s,i)}return g(i),qO(s)}function EP(s){return s===void 0?void 0:Ti(s)}function oi(s,i){if(i=R(i),l(s)){let T=n(s);return T&&T.branding===li?(g(i),T):$a(oT(Qc(s)),s,i)}let c=yO(ki,s);return g(i),c}function fi(s,i){if(i=R(i),l(s)){let T=n(s)||{};switch(T.branding){case yi:return g(i),T;case gi:return g(i),_({...T,...bs});case ls:return g(i),Ia(N,T)}return PF(tT(Qc(s)),s,i)}let c=gO(s);return g(i),c}function Ps(s,i){if(i=R(i),l(s)){let T=n(s)||{};switch(T.branding){case gi:return g(i),T;case yi:return g(i),B(T);case ls:return g(i),Ra(N,T)}return Ka(tT(Qc(s)),s,i)}let c=gT(s);return g(i),c}function NC(s,i,c){return ys(i.call(s,Y(B(c,s))))}function Ys(s){return(i)=>typeof i=="string"?ki(i):((c,T)=>{let f=Object.keys(T).sort(),a={};for(let P of f)a[P]=E(T[P],c,c[P]);return a})(i,s)}function U(s){if(l(s)){let i=n(s);return i&&i.branding===NT?i:OF(s)}return GO(s)}function Kc(s){if(s!==void 0){if(l(s)){let i=n(s)||{};switch(i.branding){case ls:case gi:return i;case yi:return B(i)}let c=Qc(s);return{...fF(L,q,tT(c),s),calendar:c}}return EO(s)}}function Qc(s){return HC(s)||b}function HC(s){let{calendar:i}=s;if(i!==void 0)return u(i)}function u(s){return l(s)?(n(s)||{}).calendar||Td(s):((i)=>xc(LO(X(i))))(s)}function ti(s,i){if(i=R(i),l(s)){let c=n(s);if(c&&c.branding===ls)return wc(i),c;let T=Qc(s);return aF(L,q,tT(T),T,s,i)}return bO(s,i)}function YC(s){return gs((i)=>(c)=>i(wP(c)),s)}function wP(s){return Ts(s,N)}function bM(){let s=ci.prototype,i=Object.getOwnPropertyDescriptors(s),c=Object.getOwnPropertyDescriptors(ci),T=function(f,a={}){if(!(this instanceof T))return new T(f,a);KP.set(this,((P,D={})=>{let O=new ci(P,D),F=O.resolvedOptions(),C=F.locale,S=ds(Object.keys(D),F),M=Ss(WM),d=(...m)=>{let Z,A=m.map((j,w)=>{let x=n(j),I=(x||{}).branding;if(w&&Z&&Z!==I)throw TypeError(aC);return Z=I,x});return Z?M(Z)(C,S,...A):[O,...m]};return d.u=O,d})(f,a))};for(let f in i){let a=i[f],P=f.startsWith("format")&&gM(f);typeof a.value=="function"?a.value=f==="constructor"?T:P||yM(f):P&&(a.get=function(){return P.bind(this)})}return c.prototype.value=Object.create(s,i),Object.defineProperties(T,c),T}function gM(s){return function(...i){let c=KP.get(this),[T,...f]=c(...i);return T[s](...f)}}function yM(s){return function(...i){return KP.get(this).u[s](...i)}}function WM(s){let i=qM[s];if(!i)throw TypeError(fC(s));return Hs(i,Ss(Ba))}var qM={Instant:SP,PlainDateTime:MP,PlainDate:dP,PlainTime:mP,PlainYearMonth:ZP,PlainMonthDay:AP},GM=Hs(SP),LM=Hs(QC),JM=Hs(MP),KM=Hs(dP),$M=Hs(mP),QM=Hs(ZP),XM=Hs(AP),bP={era:gD,eraYear:gf,year:Ac,month:ys,daysInMonth:ys,daysInYear:ys,inLeapYear:AC,monthsInYear:ys},kT={monthCode:X},gP={day:ys},pC={dayOfWeek:ys,dayOfYear:ys,weekOfYear:yD,yearOfWeek:gf,daysInWeek:ys},VC=Object.assign({},bP,kT,gP,pC),hT=new WeakMap,n=hT.get.bind(hT),IC=hT.set.bind(hT),UM={...VT(bP,[li]),...VT(pC,[]),...VT(kT,[li,hi]),...VT(gP,[hi])},yP=xP(VC),YM=xP({...bP,...kT}),IM=xP({...kT,...gP}),Xc={calendarId:(s)=>v(s.calendar)},RM=gs((s,i)=>function(c){let{i:T}=this;return s(T[i](Y(B(c,T))))},VC),_M=mc((s)=>(i)=>i[s],y.concat("sign")),WP=mc((s,i)=>(c)=>c[Ls[i]],Vs),lC={epochSeconds:hD,epochMilliseconds:ST,epochMicroseconds:kD,epochNanoseconds:vD},Uc=E(xf,new Set(["branding"])),[BM,ri,zM]=Us(hi,E(gF,u),{...Xc,...IM},{getISOFields:Uc,getCalendar:$c,with(s,i,c){return ri(dF(sd,s,this,ui(i),c))},equals:(s,i)=>pO(s,XC(i)),toPlainDate(s,i){return Y(RF(Yc,s,this,i))},toLocaleString(s,i,c){let[T,f]=XM(i,c,s);return T.format(f)},toString:vf,toJSON:(s)=>vf(s),valueOf:Di},{from:(s,i)=>ri(XC(s,i))}),hC={getOffsetNanosecondsFor:zC,getPossibleInstantsFor(s,i,c){let T=[...i.call(s,r(_(c,b)))].map((a)=>HM(a).epochNanoseconds),f=T.length;return f>1&&(T.sort(is),ef(As(Zs(T[0],T[f-1])))),T}},jP={getOffsetNanosecondsFor:zC},[NM,as,HM]=Us(zT,wF,lC,{add:(s,i)=>as(sa(0,s,U(i))),subtract:(s,i)=>as(sa(1,s,U(i))),until:(s,i,c)=>G(ba(0,s,Qs(i),c)),since:(s,i,c)=>G(ba(1,s,Qs(i),c)),round:(s,i)=>as(rD(s,i)),equals:(s,i)=>_O(s,Qs(i)),toZonedDateTime(s,i){let c=zs(i);return z(Ya(s,L(c.timeZone),u(c.calendar)))},toZonedDateTimeISO:(s,i)=>z(Ya(s,L(i))),toLocaleString(s,i,c){let[T,f]=GM(i,c,s);return T.format(f)},toString:(s,i)=>pf(L,N,s,i),toJSON:(s)=>pf(L,N,s),valueOf:Di},{from:(s)=>as(Qs(s)),fromEpochSeconds:(s)=>as(zF(s)),fromEpochMilliseconds:(s)=>as(NF(s)),fromEpochMicroseconds:(s)=>as(HF(s)),fromEpochNanoseconds:(s)=>as(pF(s)),compare:(s,i)=>ja(Qs(s),Qs(i))}),[vT,ed]=Us("TimeZone",(s)=>{let i=IO(s);return{branding:"TimeZone",id:i,o:HT(i)}},{id:(s)=>s.id},{getPossibleInstantsFor:({o:s},i)=>s.getPossibleInstantsFor(fi(i)).map((c)=>as(h(c))),getOffsetNanosecondsFor:({o:s},i)=>s.getOffsetNanosecondsFor(Qs(i).epochNanoseconds),getOffsetStringFor(s,i){let c=Qs(i).epochNanoseconds,T=lT(this,jP).getOffsetNanosecondsFor(c);return Zi(T)},getPlainDateTimeFor(s,i,c=b){let T=Qs(i).epochNanoseconds,f=lT(this,jP).getOffsetNanosecondsFor(T);return r(_(ns(T,f),u(c)))},getInstantFor(s,i,c){let T=fi(i),f=Xf(c),a=lT(this);return as(h(Ms(a,T,f)))},getNextTransition:({o:s},i)=>UC(1,s,i),getPreviousTransition:({o:s},i)=>UC(-1,s,i),equals(s,i){return!!GT(this,L(i))},toString:(s)=>s.id,toJSON:(s)=>s.id},{from(s){let i=L(s);return typeof i=="string"?new vT(i):i}}),pM=BC(Object.keys(hC)),[VM,ai]=Us(BT,yF,WP,{getISOFields:Uc,with(s,i,c){return ai(mF(this,ui(i),c))},add:(s,i)=>ai(aa(0,s,U(i))),subtract:(s,i)=>ai(aa(1,s,U(i))),until:(s,i,c)=>G(Ga(0,s,Ti(i),c)),since:(s,i,c)=>G(Ga(1,s,Ti(i),c)),round:(s,i)=>ai(eD(s,i)),equals:(s,i)=>VO(s,Ti(i)),toZonedDateTime:(s,i)=>z(_F(L,Ps,q,s,i)),toPlainDateTime:(s,i)=>r(BF(s,Ps(i))),toLocaleString(s,i,c){let[T,f]=$M(i,c,s);return T.format(f)},toString:of,toJSON:(s)=>of(s),valueOf:Di},{from:(s,i)=>ai(Ti(s,i)),compare:(s,i)=>qT(Ti(s),Ti(i))}),[lM,Pi,hM]=Us(li,E(bF,u),{...Xc,...YM},{getISOFields:Uc,getCalendar:$c,with(s,i,c){return Pi(MF(eM,s,this,ui(i),c))},add:(s,i,c)=>Pi(fa(RC,0,s,U(i),c)),subtract:(s,i,c)=>Pi(fa(RC,1,s,U(i),c)),until:(s,i,c)=>G(qa(_C,0,s,oi(i),c)),since:(s,i,c)=>G(qa(_C,1,s,oi(i),c)),equals:(s,i)=>HO(s,oi(i)),toPlainDate(s,i){return Y(IF(Yc,s,this,i))},toLocaleString(s,i,c){let[T,f]=QM(i,c,s);return T.format(f)},toString:kf,toJSON:(s)=>kf(s),valueOf:Di},{from:(s,i)=>Pi(oi(s,i)),compare:(s,i)=>ji(oi(s),oi(i))}),[kM,r]=Us(yi,E(xF,u),{...Xc,...yP,...WP},{getISOFields:Uc,getCalendar:$c,with(s,i,c){return r(CF(Yc,s,this,ui(i),c))},withCalendar:(s,i)=>r($T(s,u(i))),withPlainDate:(s,i)=>r(kF(s,Ps(i))),withPlainTime:(s,i)=>r(hF(s,EP(i))),add:(s,i,c)=>r(ca(qi,0,s,U(i),c)),subtract:(s,i,c)=>r(ca(qi,1,s,U(i),c)),until:(s,i,c)=>G(ya(Xs,0,s,fi(i),c)),since:(s,i,c)=>G(ya(Xs,1,s,fi(i),c)),round:(s,i)=>r(nD(s,i)),equals:(s,i)=>zO(s,fi(i)),toZonedDateTime:(s,i,c)=>z(JF(q,s,L(i),c)),toPlainDate:(s)=>Y(B(s)),toPlainTime:(s)=>ai(qs(s)),toPlainYearMonth(s){return Pi(KF(oT,s,this))},toPlainMonthDay(s){return ri($F(rT,s,this))},toLocaleString(s,i,c){let[T,f]=JM(i,c,s);return T.format(f)},toString:lf,toJSON:(s)=>lf(s),valueOf:Di},{from:(s,i)=>r(fi(s,i)),compare:(s,i)=>Ea(fi(s),fi(i))}),[vM,Y,kC]=Us(gi,E(EF,u),{...Xc,...yP},{getISOFields:Uc,getCalendar:$c,with(s,i,c){return Y(SF(Yc,s,this,ui(i),c))},withCalendar:(s,i)=>Y($T(s,u(i))),add:(s,i,c)=>Y(Ta(qi,0,s,U(i),c)),subtract:(s,i,c)=>Y(Ta(qi,1,s,U(i),c)),until:(s,i,c)=>G(Wa(Xs,0,s,Ps(i),c)),since:(s,i,c)=>G(Wa(Xs,1,s,Ps(i),c)),equals:(s,i)=>NO(s,Ps(i)),toZonedDateTime(s,i){let c=!l(i)||i instanceof vT?{timeZone:i}:i;return z(QF(L,Ti,q,s,c))},toPlainDateTime:(s,i)=>r(XF(s,EP(i))),toPlainYearMonth(s){return Pi(UF(oT,s,this))},toPlainMonthDay(s){return ri(YF(rT,s,this))},toLocaleString(s,i,c){let[T,f]=KM(i,c,s);return T.format(f)},toString:hf,toJSON:(s)=>hf(s),valueOf:Di},{from:(s,i)=>Y(Ps(s,i)),compare:(s,i)=>ji(Ps(s),Ps(i))}),qP={fields(s,i,c){return[...i.call(s,c)]}},vC=Object.assign({dateFromFields(s,i,c,T){return kC(i.call(s,Object.assign(Object.create(null),c),T))}},qP),oC=Object.assign({yearMonthFromFields(s,i,c,T){return hM(i.call(s,Object.assign(Object.create(null),c),T))}},qP),tC=Object.assign({monthDayFromFields(s,i,c,T){return zM(i.call(s,Object.assign(Object.create(null),c),T))}},qP),GP={mergeFields(s,i,c,T){return zs(i.call(s,Object.assign(Object.create(null),c),Object.assign(Object.create(null),T)))}},oM=Object.assign({},vC,GP),tM=Object.assign({},oC,GP),rM=Object.assign({},tC,GP),LP={dateAdd(s,i,c,T,f){return kC(i.call(s,Y(B(c,s)),G(K(T)),f))}},rC=Object.assign({},LP,{dateUntil(s,i,c,T,f,a){return cd(i.call(s,Y(B(c,s)),Y(B(T,s)),Object.assign(Object.create(null),a,{largestUnit:Wc[f]})))}}),uM=Object.assign({},LP,{day:NC}),nM=Object.assign({},rC,{day:NC}),oT=Ys(oC),tT=Ys(vC),rT=Ys(tC),eM=Ys(tM),Yc=Ys(oM),sd=Ys(rM),qi=Ys(LP),Xs=Ys(rC),RC=Ys(uM),_C=Ys(nM),[id,G,cd]=Us(NT,WF,{..._M,blank:AO},{with:(s,i)=>G(ZF(s,i)),negated:(s)=>G(ET(s)),abs:(s)=>G(ZO(s)),add:(s,i,c)=>G(Ca(Kc,Xs,q,0,s,U(i),c)),subtract:(s,i,c)=>G(Ca(Kc,Xs,q,1,s,U(i),c)),round:(s,i)=>G(mO(Kc,Xs,q,s,i)),total:(s,i)=>tD(Kc,Xs,q,s,i),toLocaleString(s,i,c){return Intl.DurationFormat?new Intl.DurationFormat(i,c).format(this):ZT(s)},toString:ZT,toJSON:(s)=>ZT(s),valueOf:Di},{from:(s)=>G(U(s)),compare:(s,i,c)=>RO(Kc,qi,q,U(s),U(i),c)}),uC={toString:(s)=>s.id,toJSON:(s)=>s.id,...UM,dateAdd:({id:s,o:i},c,T,f)=>Y(B(i.dateAdd(Ps(c),U(T),f),s)),dateUntil:({o:s},i,c,T)=>G(K(s.dateUntil(Ps(i),Ps(c),ND(T)))),dateFromFields:({id:s,o:i},c,T)=>Y(Ka(i,c,T,bD(s))),yearMonthFromFields:({id:s,o:i},c,T)=>Pi($a(i,c,T,xD(s))),monthDayFromFields:({id:s,o:i},c,T)=>ri(Qa(i,0,c,T,ED(s))),fields({o:s},i){let c=new Set(Gs),T=[];for(let f of i){if(X(f),!c.has(f))throw RangeError(Na(f));c.delete(f),T.push(f)}return s.fields(T)},mergeFields:({o:s},i,c)=>s.mergeFields(Ef(yf(i)),Ef(yf(c)))},[JP]=Us("Calendar",(s)=>{let i=uO(s);return{branding:"Calendar",id:i,o:ki(i)}},{id:(s)=>s.id},uC,{from(s){let i=u(s);return typeof i=="string"?new JP(i):i}}),Td=BC(Object.keys(uC).slice(4)),[fd,z]=Us(ls,E(jF,u,L),{...lC,...Xc,...YC(yP),...YC(WP),offset:(s)=>Zi(wP(s).offsetNanoseconds),offsetNanoseconds:(s)=>wP(s).offsetNanoseconds,timeZoneId:(s)=>v(s.timeZone),hoursInDay:(s)=>sO(q,s)},{getISOFields:(s)=>MO(N,s),getCalendar:$c,getTimeZone:({timeZone:s})=>typeof s=="string"?new vT(s):s,with(s,i,c){return z(FF(Yc,q,s,this,ui(i),c))},withCalendar:(s,i)=>z($T(s,u(i))),withTimeZone:(s,i)=>z(vF(s,L(i))),withPlainDate:(s,i)=>z(lF(q,s,Ps(i))),withPlainTime:(s,i)=>z(VF(q,s,EP(i))),add:(s,i,c)=>z(ia(qi,q,0,s,U(i),c)),subtract:(s,i,c)=>z(ia(qi,q,1,s,U(i),c)),until:(s,i,c)=>G(K(ga(Xs,q,0,s,ti(i),c))),since:(s,i,c)=>G(K(ga(Xs,q,1,s,ti(i),c))),round:(s,i)=>z(uD(q,s,i)),startOfDay:(s)=>z(iO(q,s)),equals:(s,i)=>BO(s,ti(i)),toInstant:(s)=>as(qF(s)),toPlainDateTime:(s)=>r(Ia(N,s)),toPlainDate:(s)=>Y(Ra(N,s)),toPlainTime:(s)=>ai(_a(N,s)),toPlainYearMonth(s){return Pi(GF(oT,s,this))},toPlainMonthDay(s){return ri(LF(rT,s,this))},toLocaleString(s,i,c={}){let[T,f]=LM(i,c,s);return T.format(f)},toString:(s,i)=>Vf(N,s,i),toJSON:(s)=>Vf(N,s),valueOf:Di},{from:(s,i)=>z(ti(s,i)),compare:(s,i)=>xa(ti(s),ti(i))}),ad=Object.defineProperties({},{...ec("Temporal.Now"),...Mi({timeZoneId:()=>ps(),instant:()=>as(h(bc())),zonedDateTime:(s,i=ps())=>z(t(bc(),L(i),u(s))),zonedDateTimeISO:(s=ps())=>z(t(bc(),L(s),b)),plainDateTime:(s,i=ps())=>r(_(pi(N(L(i))),u(s))),plainDateTimeISO:(s=ps())=>r(_(pi(N(L(s))),b)),plainDate:(s,i=ps())=>Y(B(pi(N(L(i))),u(s))),plainDateISO:(s=ps())=>Y(B(pi(N(L(s))),b)),plainTimeISO:(s=ps())=>ai(qs(pi(N(L(s)))))})}),Ic=Object.defineProperties({},{...ec("Temporal"),...Mi({PlainYearMonth:lM,PlainMonthDay:BM,PlainDate:vM,PlainTime:VM,PlainDateTime:kM,ZonedDateTime:fd,Instant:NM,Calendar:JP,TimeZone:vT,Duration:id,Now:ad})}),Pd=bM(),KP=new WeakMap,Dd=Object.defineProperties(Object.create(Intl),Mi({DateTimeFormat:Pd}));class $P extends Is{schema={name:{string:"Invalid name",required:"Name is required","min:2":"Name must be at least 3 characters"},email:{string:"Invalid email",required:"Email is required",email:"Invalid email"},password:{"min:8":"Password must be at least 9 characters"}}}function Dm(s){return s}function nC(s={}){return{basePath:"/auth",verifyEmail:!0,redirectPath:"/dashboard",sessionExpiresInHours:24,sessionAbsoluteExpiresInHours:672,signUpRequest:$P,oauthProviders:{},verifyPassword:async(i,c)=>await Bun.password.verify(i,c),hashPassword:async(i)=>await Bun.password.hash(i),generateForgotPasswordToken:async(i)=>{let c=new Bun.CryptoHasher("sha256");return c.update(`${i.email}${Date.now()}`),c.digest("hex")},generateEmailVerificationToken:(i)=>{if(!(s.verifyEmail??!0))return"";let c=new Bun.CryptoHasher("sha256");return c.update(`${i}${Date.now()}`),c.digest("hex")},generateMagicLinkToken:(i)=>{let c=new Bun.CryptoHasher("sha256");return c.update(`${i}${Date.now()}`),c.digest("hex")},extendSession:()=>({}),onUserCreated:async()=>{},onSignUp:()=>{},onSignIn:()=>{},onSignOut:()=>{},onForgotPassword:()=>{},onResetPassword:()=>{},onMagicLinkCreated:()=>{}}}function eC(s){if(s&&typeof s==="object")delete s.password;return s}function Od(){return new Proxy({},{get:(s,i)=>s0(i)})}var QP={select:{id:!0,publicId:!0,email:!0,name:!0,locale:!0,globalRole:!0,accounts:{select:{id:!0,publicId:!0,organizationRole:!0,organization:!0}}}};class XP{models;constructor(s=Od()){this.models=s}run(s){return this.models.User.asSystem(s)}transaction(s){return this.models.User.transaction(s)}async createUser(s){let i=await this.run(()=>this.models.User.create({data:s}));return eC(i)}async updateUserPassword(s){let i=await this.run(()=>this.models.User.update({where:{id:s.id},data:{password:s.password}}));return eC(i)}async findUserByEmailAddress(s,i){return await this.run(()=>this.models.User.findUnique({where:i?{email:s,emailVerifiedAt:{not:null}}:{email:s}}))}async findUserByVerificationToken(s){return await this.run(()=>this.models.User.findFirst({where:{verificationToken:s}}))}async verifyUser(s){return await this.run(()=>this.models.User.update({where:{email:s},data:{emailVerifiedAt:new Date}}))}async createSession(s){return await this.run(()=>this.models.Session.create({data:s,include:{user:!0}}))}async createSessionV2(s){return await this.run(()=>this.models.Session.create({data:s,select:{token:!0,expiresAt:!0,absoluteExpiresAt:!0,updatedAt:!0,location:!0,userAgent:!0,user:QP}}))}async findSession(s){if(!s.token)return null;try{return await this.run(()=>this.models.Session.findUnique({where:{token:s.token},select:{token:!0,expiresAt:!0,absoluteExpiresAt:!0,updatedAt:!0,location:!0,userAgent:!0,user:QP}}))}catch(i){return console.error("findSession failed:",i),null}}async updateSession(s){return await this.run(()=>this.models.Session.update({where:{token:s.token},data:{expiresAt:s.expiresAt},select:{token:!0,expiresAt:!0,absoluteExpiresAt:!0,updatedAt:!0,location:!0,userAgent:!0,user:QP}}))}async deleteSession(s){await this.run(()=>this.models.Session.deleteMany({where:{token:s.token}}))}async deleteAllUserSessions(s){await this.run(()=>this.models.Session.deleteMany({where:{userId:s}}))}async createPasswordResetToken(s){return await this.run(()=>this.models.PasswordResetToken.create({data:{token:s.token,user:{connect:{id:s.user.id}}}}))}async findPasswordResetToken(s){return await this.run(()=>this.models.PasswordResetToken.findUnique({where:{token:s.token},include:{user:!0}}))}async deletePasswordResetToken(s){return await this.run(()=>this.models.PasswordResetToken.delete({where:{token:s.token}}))}async findInvitation(s,i){return await this.run(()=>this.models.OrganizationInvitation.findFirst({where:{publicId:s,email:i}}))}async deleteInvitationById(s){await this.run(()=>this.models.OrganizationInvitation.delete({where:{publicId:s}}))}async createAccount(s){return await this.run(()=>this.models.Account.create({data:{userId:s.userId,organizationId:s.organizationId,organizationRole:s.organizationRole}}))}async createMagicLinkToken(s){return await this.run(()=>this.models.MagicLinkToken.create({data:{email:s.email,token:s.token,pin:s.pin}}))}async findUserMagicLinkToken(s){return await this.run(()=>s.token?this.models.MagicLinkToken.findUnique({where:{token_email:{token:s.token,email:s.email}}}):this.models.MagicLinkToken.findUnique({where:{pin_email:{pin:s.pin,email:s.email}}}))}async deleteMagicLinkToken(s){await this.run(()=>this.models.MagicLinkToken.deleteMany({where:{email:s}}))}async createSocialAccount(s){return await this.run(()=>this.models.SocialAccount.create({data:s}))}}class UP{static token="auth";config;provider;constructor(s={},i=new XP){this.config=i0(nC(s),s),this.provider=i}get userProvider(){return this.provider}async getSession(s,i){let c=await this.userProvider.findSession({token:s,userAgent:i}),T=null;if(c?.user)T=await this.config.extendSession(c.user),c.user.extension=T;return c}async generateMagicLink(s){}async upsertSession(s){await this.userProvider.findSession({token:"",userAgent:""})}async authenticate(s){try{let i=await this.userProvider.findUserByEmailAddress(s,!1);if(!i)throw Error(`User not found with email: ${s}`);let c=await this.createOrUpdateSession({email:s,id:i.id}),T=new Is,f=new URL(T.rawRequest.url);if(T.ctx().setCookie("access_token",c.token,{expires:c.expiresAt,secure:!f.origin.includes("localhost"),httpOnly:!0}),c?.user)c.user.extension=await this.config.extendSession(c.user);return c}catch(i){console.log(i)}}async createOrUpdateSessionV2(s){let i=await this.createOrUpdateSession(s),c=null;if(i?.user)c=await this.config.extendSession(i.user),i.user.extension=c;return i}async createOrUpdateSession(s){let i=new Is,c=i.headers.get("User-Agent"),T=new Bun.CryptoHasher("sha256");T.update(`${s.email}${c}`);let f=T.digest("hex"),a=await this.userProvider.findSession({token:f,userAgent:Bun.env.NODE_ENV==="development"?"local":i.headers.get("User-Agent")});if(!a){let P=s.id;if(!P){let{id:D}=await this.userProvider.findUserByEmailAddress(s.email,!1);P=D}a=await this.userProvider.createSessionV2({token:f,userId:P,userAgent:Bun.env.NODE_ENV==="development"?"local":i.headers.get("User-Agent"),expiresAt:new Date(Ic.Now.instant().add({hours:this.config.sessionExpiresInHours}).toString()),absoluteExpiresAt:new Date(Ic.Now.instant().add({hours:this.config.sessionAbsoluteExpiresInHours}).toString())})}else a=await this.userProvider.updateSession({token:f,expiresAt:new Date(Ic.Now.instant().add({hours:this.config.sessionExpiresInHours}).toString())});return a}async createMagicLinkToken(s){let i=await this.userProvider.findUserByEmailAddress(s,!1);if(i){await this.userProvider.deleteMagicLinkToken(s);let c=await this.config.generateMagicLinkToken(s),T=(Number.parseInt(Fd(4).toString("hex"),16)%1e6).toString().padStart(6,"0");return await this.userProvider.createMagicLinkToken({email:s,token:c,pin:T}),{user:i,email:s,pin:T,token:c}}return{}}}class c0 extends ms{async run(s){let i=hs.getStore(),c=i.req.cookies.get("access_token"),T=i.req.headers.get("access_token"),f=c||T;if(!f)throw new fc;let a=i.user;if(!a){let P=await uT(UP).getSession(f,i.req.headers.get("User-Agent"));if(!P)throw new fc;a=P?.user,i.setUser(a)}return{}}}class T0 extends ms{async run(...s){let[i="public",c="864000",...T]=s,f=`${i}, max-age=${c}${T.length>0?", ":""}${T.join(", ")}`;if(s.length===0)f="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(s.length===1&&s[0]==="public")f="public, max-age=864000, stale-while-revalidate=300, stale-if-error=600";if(s.length===1&&s[0]==="private")f="private, max-age=0, stale-while-revalidate=300, stale-if-error=600";if(this.req.rawRequest.method==="GET")this.req.ctx().setHeaders("Cache-Control",f);return{}}}var Cd={"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With","Access-Control-Allow-Credentials":"true"};class f0 extends ms{config={origins:{"":{"Access-Control-Allow-Methods":"GET, HEAD, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With","Access-Control-Allow-Credentials":"true"}}};run(){let s=this.req,i=s.rawRequest.headers.get("Origin");if(this.config.origins[i]){s.ctx().setHeaders("Access-Control-Allow-Origin",i);let c={...Cd,...this.config.origins[i]};for(let[T,f]of Object.entries(c))s.ctx().setHeaders(T,f)}return{}}}class nT{config;static token="ratelimiter";constructor(s){this.config=s}get driver(){return this.config.driver}async consume(s,i={}){let c=i.limit??this.config.limit,T=i.window??this.config.window,f=i.cost??1;if(a0("window",T),a0("limit",c),!Number.isFinite(f)||f<0)throw Error(`Rate limiter cost must be zero or greater, got ${f}`);return await this.config.driver.consume({key:s,limit:c,window:T*1000,cost:f})}}function a0(s,i){if(!Number.isFinite(i)||i<=0)throw Error(`Rate limiter ${s} must be greater than zero, got ${i}`)}class YP extends p{constructor(s){super("Rate limit exceeded");let i={"Content-Type":"application/json",...s?F0(s):{}};this.payload={api:{status:429,data:{error:{message:"Rate limit exceeded"}},headers:i},view:{error:{message:"Rate limit exceeded"},status:429,headers:i}}}}class D0 extends ms{async run(s,i){let c=Sd();if(!c)return{};let T=await c.consume(this.key(),{limit:P0(s)??this.config.limit,window:P0(i)??this.config.window});if(this.config.headers!==!1){let f=this.req.ctx?.();if(f)for(let[a,P]of Object.entries(F0(T)))f.setHeaders(a,P)}if(!T.allowed)throw new YP(T);return{}}key(){if(this.config.key)return this.config.key(this.req);return`${O0(this.req)}:${this.req.routePath??"*"}`}}function Sd(){try{let s=uT();return s.bound(nT)?s.make(nT):null}catch{return null}}function O0(s){let i=s.headers.get("x-forwarded-for");if(i){let[c]=i.split(",");if(c?.trim())return c.trim()}return s.headers.get("x-real-ip")?.trim()||"unknown"}function F0(s){let i={"X-RateLimit-Limit":String(s.limit),"X-RateLimit-Remaining":String(s.remaining),"X-RateLimit-Reset":String(Math.ceil(s.resetAt/1000))};if(!s.allowed)i["Retry-After"]=String(Math.max(1,Math.ceil(s.retryAfter/1000)));return i}function P0(s){if(s===void 0||s===null||s==="")return;let i=Number(s);if(!Number.isFinite(i)||i<=0)return;return i}class C0 extends ms{async run(){let s=this.req.cookies.get("csrf_token");if(!s)throw new IP;if(!["POST","PUT","PATCH","DELETE"].includes(this.req.rawRequest.method))return{};if(!Bun.CSRF.verify(s,{secret:process.env.SECRET}))throw new IP;return{}}}class IP extends p{constructor(){super("Invalid CSRF token");this.name="InvalidCSRFTokenError"}payload={api:{status:403,data:{error:"Invalid CSRF token"}},view:{}}}class S0{policiesList={};constructor(){let s=this.register();for(let i of s){let c=new i;this.policiesList[i.name]=c}}register(){return[]}}class M0{all(s,i){return!0}}export{eT as cd,RP as dd,_P as ed,sc as fd,sf as gd,m0 as hd,Z0 as id,cf as jd,ic as kd,Zd as ld,p as md,cc as nd,Is as od,Tc as pd,Tf as qd,BP as rd,zP as sd,_c as td,NP as ud,fc as vd,kP as wd,vP as xd,af as yd,g0 as zd,ac as Ad,ms as Bd,y0 as Cd,W0 as Dd,q0 as Ed,Ic as Fd,Dm as Gd,nC as Hd,XP as Id,UP as Jd,c0 as Kd,T0 as Ld,f0 as Md,nT as Nd,YP as Od,D0 as Pd,O0 as Qd,C0 as Rd,S0 as Sd,M0 as Td};
|
|
3
|
-
|
|
4
|
-
//# debugId=DFCEF507BB7800B764756E2164756E21
|
package/dist/chunk-8gb1w19q.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{sb as o}from"./chunk-hnw1jy86.js";import{xb as i}from"./chunk-k4mjcvsm.js";import{ue as t}from"./chunk-8vnbvfmd.js";import{Ae as r}from"./chunk-asgfqcwd.js";class n extends i{register(){this.app.singleton(r,()=>new r(t(o(),this.app.config.get("translation",{}))))}}
|
|
3
|
-
export{n as M};
|
|
4
|
-
|
|
5
|
-
//# debugId=C1FBC8C479D27B9064756E2164756E21
|
package/dist/chunk-98sj7tkf.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{se as O}from"./chunk-nbx9mgmr.js";import{Je as M}from"./chunk-zwpx6z5f.js";var x={};M(x,{registeredNames:()=>S,register:()=>R,has:()=>_,get:()=>C,clearRegistry:()=>b});var D=new Map;function R(j,B){D.set(j,B)}function _(j){return D.has(j)}function C(j){let B=D.get(j);if(B===void 0)throw new O(j,[...D.keys()]);return B}function S(){return[...D.keys()]}function b(){D.clear()}import{AsyncLocalStorage as H}from"async_hooks";class K{content={title:"Gemi App",description:null,openGraph:null};touched=!1;render(){return{title:this.content.title,description:this.content.description,openGraph:this.content.openGraph}}title(j){this.touched=!0,this.content.title=j}description(j){this.touched=!0,this.content.description=j}openGraph({title:j,description:B,type:z,url:J,image:F,imageAlt:Q,imageWidth:V,imageHeight:X,twitterImage:Y=F,twitterImageAlt:N=Q,twitterImageWidth:P=V,twitterImageHeight:U=X}){this.touched=!0;let Z=F,$=Y;if(F&&!F.startsWith("http"))Z=`${process.env.HOST_NAME}${F}`,$=`${process.env.HOST_NAME}${Y}`;this.content.openGraph=Object.fromEntries(Object.entries({title:j,description:B,type:z,url:J,image:Z,imageAlt:Q,imageWidth:V,imageHeight:X,twitterImage:$,twitterImageAlt:N,twitterImageWidth:P,twitterImageHeight:U}).filter(([A,T])=>T!==void 0))}}function E(j,B,z={}){return[`${j}=${B}`,z.maxAge?`Max-Age=${z.maxAge}`:"",z.httpOnly?"HttpOnly":"",z.secure?"Secure":"",z.sameSite?`SameSite=${z.sameSite}`:"SameSite=Strict",z.path?`Path=${z.path}`:"Path=/",z.domain?`Domain=${z.domain}`:"",z.expires?`Expires=${z.expires.toUTCString()}`:"",z.partitioned?"Partitioned":""].filter((J)=>J!=="").join("; ")}var G=new H;class L{req;cookies=new Set;headers=new Headers;serverQueries=null;user=null;csrfHmac=null;locale=null;metadata=new K;rangeRequest=null;constructor(j){this.req=j}setLocale(j){this.locale=j}renderMeta(){return this.metadata.render()}setCSRFHmac(j){this.csrfHmac=j}setCookie(j,B,z={}){this.cookies.add(E(j,B,z))}deleteCookie(j){this.cookies.add(E(j,"",{maxAge:-1}))}setHeaders(j,B){this.headers.set(j,B)}setUser(j){this.user=j}setRequest(j){this.req=j}destroy(){delete this.cookies,delete this.headers,this.serverQueries=null,delete this.user}}class W{static getStore(){return G.getStore()}static setRequest(j){G.getStore().req=j}static run(j,B){return G.run(new L(j),B)}static runWith(j,B){return G.run(j,B)}}
|
|
3
|
-
export{W as Ud,R as Vd,_ as Wd,C as Xd,S as Yd,x as Zd};
|
|
4
|
-
|
|
5
|
-
//# debugId=954ADC32E72B685364756E2164756E21
|
package/dist/chunk-bm6q0q1q.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{existsSync as $,readdirSync as B}from"fs";import{join as Y,relative as G}from"path";function J(H,Q=[]){let U=[],X=(K)=>{let q=G(H,K).split("\\").join("/");return Q.some((z)=>q===z||q.startsWith(`${z}/`))},V=(K)=>{for(let q of B(K,{withFileTypes:!0}).sort((z,Z)=>z.name<Z.name?-1:z.name>Z.name?1:0)){let z=Y(K,q.name);if(X(z))continue;if(q.isDirectory()){if(q.name.startsWith(".")||q.name==="node_modules")continue;if($(Y(z,"package.json")))continue;V(z);continue}if(!q.name.endsWith(".ts")&&!q.name.endsWith(".tsx"))continue;if(q.name.endsWith(".d.ts"))continue;if(/\.(test|test-d|spec|bench)\.tsx?$/.test(q.name))continue;U.push(z)}};if(!$(H))return U;return V(H),U}class A extends Error{constructor(H,Q){super(H,Q);this.name="DiscoveryError"}}async function W(H,Q,U=[]){let X=new Set;for(let V of J(H,U)){let K;try{K=await import(V)}catch(q){throw new A(`${V} could not be imported, so the classes in it could not be discovered:
|
|
3
|
-
${q.message}
|
|
4
|
-
List the classes explicitly in the config slice for this directory to skip the walk.`,{cause:q})}for(let q of Object.values(K)){if(typeof q!=="function"||q===Q)continue;if(!Object.prototype.isPrototypeOf.call(Q,q))continue;X.add(q)}}return[...X]}function F(){return Y(process.cwd(),process.env.GEMI_PROJECT_DIR??"")}
|
|
5
|
-
export{J as tb,A as ub,W as vb,F as wb};
|
|
6
|
-
|
|
7
|
-
//# debugId=54261F7B9D99FE6764756E2164756E21
|
package/dist/chunk-g0w87jtw.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{Fe as V}from"./chunk-w7fpm2pw.js";import{Ge as Q}from"./chunk-j4rkk01q.js";var U=Symbol.for("gemi.foundation.Application");class J extends V{[U]=!0;static isApplication(z){return typeof z==="object"&&z!==null&&U in z}config;providers=[];booted=!1;constructor(z=new Q){super();this.config=z,this.instance(Q,z)}static currentInstance;static getInstance(){return J.currentInstance}static setInstance(z){return J.currentInstance=z,z}register(z){let G=this.providers.find((Y)=>Y instanceof z);if(G)return G;let H=new z(this);return H.register(),this.providers.push(H),H}registerMany(z){for(let G of z)this.register(G)}getProviders(){return[...this.providers]}isBooted(){return this.booted}async boot(){if(this.booted)return;for(let z of this.providers)await z.boot();this.booted=!0}flush(){super.flush(),this.instance(Q,this.config),this.providers=[],this.booted=!1}}import{AsyncLocalStorage as Z}from"async_hooks";var X=new Z;function _(z){let G=X.getStore(),H=J.isApplication(G)?G:J.getInstance();if(!H)throw Error("No Application instance is available. Boot a Kernel before resolving services.");return z?H.make(z):H}
|
|
3
|
-
export{X as Be,J as Ce,_ as De};
|
|
4
|
-
|
|
5
|
-
//# debugId=27226444D53E731464756E2164756E21
|
package/dist/chunk-j4rkk01q.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
function C(j){return j.split(".")}class G{static token="config";items;constructor(j={}){this.items=j}has(j){let q=this.items;for(let b of C(j)){if(q===null||typeof q!=="object"||!(b in q))return!1;q=q[b]}return!0}get(j,q){let b=this.items;for(let w of C(j)){if(b===null||typeof b!=="object"||!(w in b))return q;b=b[w]}return b===void 0?q:b}getMany(j){let q=Array.isArray(j)?j.map((w)=>[w,void 0]):Object.entries(j),b={};for(let[w,A]of q)b[w]=this.get(w,A);return b}set(j,q){let b=typeof j==="string"?[[j,q]]:Object.entries(j);for(let[w,A]of b){let D=C(w),F=D.pop(),z=this.items;for(let B of D){let E=z[B];if(E===null||typeof E!=="object")z[B]={};z=z[B]}z[F]=A}}prepend(j,q){let b=this.get(j,[]);b.unshift(q),this.set(j,b)}push(j,q){let b=this.get(j,[]);b.push(q),this.set(j,b)}merge(j){for(let[q,b]of Object.entries(j)){let w=this.items[q];if(w!==null&&typeof w==="object"&&!Array.isArray(w)&&b!==null&&typeof b==="object"&&!Array.isArray(b))this.items[q]={...w,...b};else this.items[q]=b}}all(){return this.items}}
|
|
3
|
-
export{G as Ge};
|
|
4
|
-
|
|
5
|
-
//# debugId=A4D50D09E249AD2664756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../support/Repository.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"// Runtime configuration store, modeled on `Illuminate\\Config\\Repository`.\n// Keys are dot paths (\"mail.driver\", \"route.view.rootRouter\") resolved against\n// a plain nested object. This is the RUNTIME config; `gemi/config` is the\n// BUILD config (gemi.config.ts) and is unrelated.\n\nexport type ConfigItems = Record<string, any>;\n\nfunction segments(key: string): string[] {\n return key.split(\".\");\n}\n\nexport class Repository {\n // Container token. The Kernel binds its Repository under `config`, so any\n // provider can `app.make(Repository)` — though `this.app.config` is shorter.\n static token = \"config\";\n\n private items: ConfigItems;\n\n constructor(items: ConfigItems = {}) {\n this.items = items;\n }\n\n has(key: string): boolean {\n let target: any = this.items;\n for (const segment of segments(key)) {\n if (target === null || typeof target !== \"object\" || !(segment in target)) {\n return false;\n }\n target = target[segment];\n }\n return true;\n }\n\n get<T = any>(key: string, defaultValue?: T): T {\n let target: any = this.items;\n for (const segment of segments(key)) {\n if (target === null || typeof target !== \"object\" || !(segment in target)) {\n return defaultValue as T;\n }\n target = target[segment];\n }\n return target === undefined ? (defaultValue as T) : (target as T);\n }\n\n // Reads many keys at once. Accepts either a list of keys or a\n // `{ key: defaultValue }` map, mirroring `Repository::getMany`.\n getMany(keys: string[] | Record<string, any>): Record<string, any> {\n const entries: Array<[string, any]> = Array.isArray(keys)\n ? keys.map((key): [string, any] => [key, undefined])\n : Object.entries(keys);\n\n const result: Record<string, any> = {};\n for (const [key, defaultValue] of entries) {\n result[key] = this.get(key, defaultValue);\n }\n return result;\n }\n\n set(key: string | Record<string, any>, value?: any): void {\n const entries: Array<[string, any]> =\n typeof key === \"string\" ? [[key, value]] : Object.entries(key);\n\n for (const [path, item] of entries) {\n const parts = segments(path);\n const last = parts.pop() as string;\n\n let target: any = this.items;\n for (const segment of parts) {\n const next = target[segment];\n if (next === null || typeof next !== \"object\") {\n target[segment] = {};\n }\n target = target[segment];\n }\n\n target[last] = item;\n }\n }\n\n // Adds `value` to the front of the array stored at `key`.\n prepend(key: string, value: any): void {\n const array = this.get<any[]>(key, []);\n array.unshift(value);\n this.set(key, array);\n }\n\n // Adds `value` to the end of the array stored at `key`.\n push(key: string, value: any): void {\n const array = this.get<any[]>(key, []);\n array.push(value);\n this.set(key, array);\n }\n\n // Shallow-merges a `{ topLevelKey: config }` map into the store. Existing\n // top-level keys are merged one level deep so partial overrides compose.\n merge(items: ConfigItems): void {\n for (const [key, value] of Object.entries(items)) {\n const current = this.items[key];\n if (\n current !== null &&\n typeof current === \"object\" &&\n !Array.isArray(current) &&\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value)\n ) {\n this.items[key] = { ...current, ...value };\n } else {\n this.items[key] = value;\n }\n }\n }\n\n all(): ConfigItems {\n return this.items;\n }\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";AAOA,SAAS,CAAQ,CAAC,EAAuB,CACvC,OAAO,EAAI,MAAM,GAAG,EAGf,MAAM,CAAW,OAGf,OAAQ,SAEP,MAER,WAAW,CAAC,EAAqB,CAAC,EAAG,CACnC,KAAK,MAAQ,EAGf,GAAG,CAAC,EAAsB,CACxB,IAAI,EAAc,KAAK,MACvB,QAAW,KAAW,EAAS,CAAG,EAAG,CACnC,GAAI,IAAW,MAAQ,OAAO,IAAW,UAAY,EAAE,KAAW,GAChE,MAAO,GAET,EAAS,EAAO,GAElB,MAAO,GAGT,GAAY,CAAC,EAAa,EAAqB,CAC7C,IAAI,EAAc,KAAK,MACvB,QAAW,KAAW,EAAS,CAAG,EAAG,CACnC,GAAI,IAAW,MAAQ,OAAO,IAAW,UAAY,EAAE,KAAW,GAChE,OAAO,EAET,EAAS,EAAO,GAElB,OAAO,IAAW,OAAa,EAAsB,EAKvD,OAAO,CAAC,EAA2D,CACjE,IAAM,EAAgC,MAAM,QAAQ,CAAI,EACpD,EAAK,IAAI,CAAC,IAAuB,CAAC,EAAK,MAAS,CAAC,EACjD,OAAO,QAAQ,CAAI,EAEjB,EAA8B,CAAC,EACrC,QAAY,EAAK,KAAiB,EAChC,EAAO,GAAO,KAAK,IAAI,EAAK,CAAY,EAE1C,OAAO,EAGT,GAAG,CAAC,EAAmC,EAAmB,CACxD,IAAM,EACJ,OAAO,IAAQ,SAAW,CAAC,CAAC,EAAK,CAAK,CAAC,EAAI,OAAO,QAAQ,CAAG,EAE/D,QAAY,EAAM,KAAS,EAAS,CAClC,IAAM,EAAQ,EAAS,CAAI,EACrB,EAAO,EAAM,IAAI,EAEnB,EAAc,KAAK,MACvB,QAAW,KAAW,EAAO,CAC3B,IAAM,EAAO,EAAO,GACpB,GAAI,IAAS,MAAQ,OAAO,IAAS,SACnC,EAAO,GAAW,CAAC,EAErB,EAAS,EAAO,GAGlB,EAAO,GAAQ,GAKnB,OAAO,CAAC,EAAa,EAAkB,CACrC,IAAM,EAAQ,KAAK,IAAW,EAAK,CAAC,CAAC,EACrC,EAAM,QAAQ,CAAK,EACnB,KAAK,IAAI,EAAK,CAAK,EAIrB,IAAI,CAAC,EAAa,EAAkB,CAClC,IAAM,EAAQ,KAAK,IAAW,EAAK,CAAC,CAAC,EACrC,EAAM,KAAK,CAAK,EAChB,KAAK,IAAI,EAAK,CAAK,EAKrB,KAAK,CAAC,EAA0B,CAC9B,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAK,EAAG,CAChD,IAAM,EAAU,KAAK,MAAM,GAC3B,GACE,IAAY,MACZ,OAAO,IAAY,UACnB,CAAC,MAAM,QAAQ,CAAO,GACtB,IAAU,MACV,OAAO,IAAU,UACjB,CAAC,MAAM,QAAQ,CAAK,EAEpB,KAAK,MAAM,GAAO,IAAK,KAAY,CAAM,EAEzC,UAAK,MAAM,GAAO,GAKxB,GAAG,EAAgB,CACjB,OAAO,KAAK,MAEhB",
|
|
8
|
-
"debugId": "A4D50D09E249AD2664756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-tqbp8550.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{c as D,d as v}from"./chunk-y0wg8aq9.js";import"./chunk-ppt296ye.js";import{wb as q}from"./chunk-bm6q0q1q.js";import{Tb as P,Wb as V}from"./chunk-c4r1zh9q.js";import"./chunk-3z4nwzvp.js";import"./chunk-eby61053.js";import"./chunk-6x6gb7zg.js";import"./chunk-98sj7tkf.js";import"./chunk-nbx9mgmr.js";import"./chunk-8vnbvfmd.js";import"./chunk-asgfqcwd.js";import"./chunk-g0w87jtw.js";import"./chunk-w7fpm2pw.js";import"./chunk-j4rkk01q.js";import"./chunk-zwpx6z5f.js";import{join as E}from"path";import{Duplex as o}from"stream";import{constants as T,createBrotliCompress as l,createGzip as n}from"zlib";var i=["br","gzip"],t=1024,a=5,s=19,r=6;function e($){if($===void 0)return 1;if(!/^\d+(\.\d{0,3})?$/.test($.trim()))return 1;let J=Number($.trim());return Number.isFinite(J)?Math.min(J,1):1}function JJ($){if($===null||$===void 0)return null;let J=new Map;for(let H of $.split(",")){let[Z,...X]=H.split(";"),j=Z.trim().toLowerCase();if(j==="")continue;let x=1;for(let K of X){let O=K.indexOf("=");if(O===-1)continue;if(K.slice(0,O).trim().toLowerCase()==="q"){x=e(K.slice(O+1));break}}J.set(j,x)}return J}function $J($,J=i){let H=JJ($);if(!H)return null;let Z=H.get("*"),X=null,j=0;for(let x of J){let K=H.get(x)??Z??0;if(K>j)X=x,j=K}return X}function HJ($,J){if(!$)return!1;return $.split(",").some((H)=>H.trim().toLowerCase().split("=")[0].trim()===J)}function UJ($,J){if($==="HEAD")return!1;if(!J.body)return!1;if(J.status<200||J.status===204||J.status===206||J.status===304)return!1;if(J.headers.has("Content-Range"))return!1;let H=J.headers.get("Content-Type");if(!H||!/^\s*text\/html\s*(;|$)/i.test(H))return!1;let Z=J.headers.get("Content-Encoding");if(Z&&Z.trim().toLowerCase()!=="identity")return!1;if(HJ(J.headers.get("Cache-Control"),"no-transform"))return!1;let X=J.headers.get("Content-Length");if(X!==null&&Number(X)<t)return!1;return!0}function ZJ($){let J=$==="br"?l({params:{[T.BROTLI_PARAM_QUALITY]:a,[T.BROTLI_PARAM_LGWIN]:s},flush:T.BROTLI_OPERATION_FLUSH}):n({level:r,flush:T.Z_SYNC_FLUSH});return o.toWeb(J)}function zJ($){let J=$.get("Vary");if(!J){$.set("Vary","Accept-Encoding");return}let H=J.split(",").map((Z)=>Z.trim().toLowerCase());if(H.includes("*")||H.includes("accept-encoding"))return;$.append("Vary","Accept-Encoding")}function F($,J){if(!UJ($.method,J))return J;let H=new Headers(J.headers);zJ(H);let Z=$J($.headers.get("Accept-Encoding"));if(!Z)return new Response(J.body,{status:J.status,statusText:J.statusText,headers:H});let X;try{X=ZJ(Z)}catch{return new Response(J.body,{status:J.status,statusText:J.statusText,headers:H})}return H.set("Content-Encoding",Z),H.delete("Content-Length"),new Response(J.body.pipeThrough(X),{status:J.status,statusText:J.statusText,headers:H})}function y($){let J=$.toString(),H=new Bun.CryptoHasher("sha1");return H.update(J),H.digest("hex")}if(!globalThis.URLPattern)globalThis.URLPattern=P;import{exists as GJ}from"fs/promises";var g="app/client.tsx";function w($){let J=$["app/client.tsx"]?.file;if(!J)return;return{module:`/${J}`,preload:S($,"app/client.tsx")}}function S($,J){let H=[],Z=new Set,X=(j)=>{if(Z.has(j))return;Z.add(j);let x=$[j];if(!x?.file)return;H.push(`/${x.file}`);for(let K of x.imports??[])X(K)};return X(J),H}var I=q(),XJ=E(I,"app"),L=E(I,"dist");async function VJ($,J){let H=await import(`${L}/client/.vite/manifest.json`),Z=await import(`${L}/server/.vite/manifest.json`);process.env.ROOT_DIR=I,process.env.APP_DIR=XJ,process.env.DIST_DIR=L;let X={},j={},x={},K={},O={},f=(U,G)=>`"${U}": () => import("${G}")`,k=[];for(let U of["404",...$.getFlatComponentTree.call($)]){let G=Z[`app/views/${U}.tsx`];if(!G?.file){console.log(`Server file not found for ${U}`),console.log(G);let W=Object.keys(Z),A=`app/views/${U}.tsx`;console.log(`${A} not found in server manifest`),console.log(W)}let Q=await import(`${process.env.DIST_DIR}/server/${G?.file}`);X[U]=Q.default,j[U]=Q.OpenGraph,x[U]=Q;let z=H[`app/views/${U}.tsx`];if(z?.css&&z?.css.length>0)K[U]=z?.css;if(z)k.push(f(U,`/${z?.file}`)),O[U]=S(H,`app/views/${U}.tsx`)}let u=`{${k.join(",")}}`,N=w(H);if(!N)console.error(`Client manifest has no "${g}" entry \u2014 dist/client is incomplete, so documents will render but never hydrate.`);let m=H["app/client.tsx"]?.css??[],h=(await Promise.all(m.map((U)=>Bun.file(`${L}/client/${U}`).text()))).join(`
|
|
3
|
-
`),c=new P({pathname:"/*.:filetype(png|txt|js|css|jpg|svg|jpeg|avif|webp|ico|ttf|map)"});async function p(U){let{pathname:G}=new URL(U.url),Q=G.startsWith("/.well-known"),z=c.test({pathname:G})||Q,W=G.startsWith("/api");if(z&&!W){let A=new URL(U.url),b=U.url.replace(A.origin,"").split("?")[0],B=`${L}/client${b.replace("/assets/assets","/assets")}`,C=await GJ(B);if(!C&&A.pathname.includes(".js"))return new Response(`if(caches){caches?.delete("${B}")}window.location.reload();export {}`,{headers:{"Content-Type":"application/javascript"}});if(!C){if(G===V||G.startsWith(`${V}/`))return new Response("Not found",{status:404});return await R(U,G)}try{let Y=Bun.file(B),_=y(Y.lastModified);return new Response(Y.stream(),{headers:{"Content-Type":Y.type,"Cache-Control":"public, max-age=31536000, must-revalidate","Content-Length":String(Y.size),ETag:_}})}catch(Y){return $.onException?.(Y),new Response("Not found",{status:404})}}return await R(U,G)}async function R(U,G){let Q=$.fetch.bind($);try{let z=await Q(U);if(z instanceof Response)return z;else{let W=[];return W.push({content:h}),await z({getStyles:async(b)=>{if(!b)return D([]);for(let B of b){let C=H[`app/views/${B}.tsx`];for(let Y of C?.css??[]){let _=Bun.file(`${process.env.DIST_DIR}/client/${Y}`);W.push({id:Y,content:await _.text()})}}return D(W)},clientEntry:N,modulePreloadManifest:O,loaders:u,viewImportMap:X,viewModules:x,ogMap:j,cssManifest:K})}}catch(z){if(console.error(z),G.startsWith("/api"))return new Response(JSON.stringify({error:z.message}),{status:500,headers:{"Content-Type":"application/json"}});return $.onException?.(z),new Response(z.stack,{status:500})}}let d=(process.env.GEMI_COMPRESSION??"auto").toLowerCase()!=="off",M=Bun.serve({maxRequestBodySize:10737418240,fetch:async(U,G)=>{if(!U.headers.get("x-forwarded-for")){let z=G.requestIP(U);if(z)U.headers.set("x-forwarded-for",z.address)}let Q=await J(U,p);return d?F(U,Q):Q},idleTimeout:Number(process.env.SERVER_IDLE_TIMEOUT??10),port:process.env.PORT||5173});return v({port:M.port,rootDir:I}),M}export{VJ as httpProd};
|
|
4
|
-
|
|
5
|
-
//# debugId=C441E552AF44C0A164756E2164756E21
|
package/dist/chunk-y0wg8aq9.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{m as j}from"./chunk-ppt296ye.js";import{createElement as o}from"react";function y(i,n){let b=Object.keys(n).sort((u,s)=>s.length-u.length).map((u)=>u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),r=new RegExp(b.join("|"),"g");return i.replace(r,(u)=>n[u])}async function L(i,n,b=[]){let r=[...b.map((t)=>`${i}/views/${t}.tsx`),`${i}/views/RootLayout.tsx`],u=new Set;for(let t of r){let e=n.moduleGraph.getModulesByFile(t);if(e)for(let g of e)u.add(g)}let s=[],p=[],c={};for(let t of u)if(t)for(let e of t.importedModules){if(e.file.includes("module.css"))c[e.file]=e.ssrTransformResult.map.sourcesContent.join("");if(e.file.includes(".css"))p.push(e.file)}for(let t of p){let e=await n.transformRequest(t+"?direct"),g=t.includes("module.css"),a="";if(g)a=y(c[t],e.default);s.push({isDev:!0,id:t,content:g?a:e.code})}return s.map((t,e)=>{return o("style",{key:e,type:"text/css","data-vite-dev-id":t.id,dangerouslySetInnerHTML:{__html:t.content}})})}async function N(i=[]){return i.map((n,b)=>{return o("style",{key:b,id:n?.id,type:"text/css",dangerouslySetInnerHTML:{__html:n.content}})})}import{existsSync as z}from"fs";import{basename as f}from"path";import{networkInterfaces as m}from"os";var h={name:"gemi",version:"0.51.1",private:!1,license:"MIT",author:"Enes Tufekci <enes@gemijs.dev>",repository:{type:"git",url:"git+https://github.com/nstfkc/gemi.git",directory:"packages/gemi"},bin:{gemi:"./dist/bin/gemi.js","gemi-orm-generator":"./dist/bin/orm-generator.js"},files:["dist/**/*"],module:!0,exports:{"./http":"./http/index.ts","./client":"./client/index.ts","./app":"./app/index.ts","./facades":"./facades/index.ts","./email":"./email/index.ts","./vite":"./dist/vite/index.mjs","./kernel":"./kernel/index.ts","./services":"./services/index.ts","./broadcasting":"./broadcasting/index.ts","./i18n":"./i18n/index.ts","./server":"./server/index.ts","./config":"./config/index.ts","./container":"./container/index.ts","./foundation":"./foundation/index.ts","./database":"./database/index.ts","./orm":"./orm/index.ts","./support":"./support/index.ts","./bun/preload":"./bun/preload.ts","./bun/plugin":"./bun/plugin.ts"},scripts:{lint:"oxlint",typecheck:"tsc --noEmit -p tsconfig.json",build:"NODE_ENV=production bun run build:core && bun run build:bin && bun run build:types && bun run build:client && bun run build:plugin && bun run build:client-types","build:core":"bun ./scripts/build.ts","build:bin":"bun build --outdir=./dist/bin --target=bun --external=vite --external=react-dom --external=react/jsx-runtime --external=bun --external=sharp --external=@azure/storage-blob --sourcemap ./bin/gemi.ts ./bin/orm-generator.ts && bun ./scripts/prepare-bin.ts","build:client":"vite build -c vite.client.config.mts","build:plugin":"vite build -c vite.plugin.config.mts","build:types":"tsc","build:client-types":"tsc -p tsconfig.browser.json",test:"bun --bun vitest","test:types":"vitest run --typecheck.only","build:publish":"bun scripts/build-publish.ts",prepublishOnly:"echo 'Do not publish from this directory \u2014 its exports point at TS source. Run: bun run build:publish, then publish from .publish/' && exit 1"},dependencies:{"@aws-sdk/client-s3":"^3.629.0","@aws-sdk/s3-request-presigner":"^3.629.0","ast-types":"^0.14.2",commander:"^12.1.0",history:"^5.3.0","jsx-email":"2.0.0-rc2.1",open:"^10.1.0","react-error-boundary":"^6.0.0",recast:"^0.23.9",resend:"^6.12.3",satori:"^0.12.2","temporal-polyfill":"^0.2.5","twitter-api-v2":"^1.20.2","urlpattern-polyfill":"^10.0.0",uuid:"^9.0.1"},devDependencies:{"@babel/parser":"^7.25.4","@prisma/generator-helper":"^6.5.0","@repo/typescript-config":"*","@testing-library/react":"^16.3.2","@types/bun":"^1.3.14","@types/eslint":"^8.56.5","@types/node":"^20.11.24","@types/react":"^19.0.2","@types/react-dom":"^19.0.2",eslint:"^8.57.0",jsdom:"^30.0.1",oxlint:"^1.39.0",react:"19.2.3","react-dom":"19.2.3",typescript:"^5.7.3",vitest:"^4.0.0"},peerDependencies:{"@azure/storage-blob":"^12.28.0",react:">=19","react-dom":">=19",sharp:"^0.34.2",vite:"^8.0.0"},peerDependenciesMeta:{"@azure/storage-blob":{optional:!0}}};var O=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557\u2588\u2588\u2557","\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551","\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2551","\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551","\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551"," \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D"],T=Boolean(process.stdout.isTTY)&&!process.env.NO_COLOR,d=(i,n)=>T?`\x1B[${i}m${n}\x1B[0m`:n,k=(i)=>d("1",i),l=(i)=>d("2",i),x=(i)=>d("36",i),q=(i)=>d("32",i),_=(i)=>d("35",i);function E(){return h.version??"?"}function G(i){for(let n of Object.values(m()))for(let b of n??[])if((b.family==="IPv4"||b.family===4)&&!b.internal)return`http://${b.address}:${i}`;return null}function H(i){return j(i).filter((n)=>z(n)).map((n)=>f(n))}function A(i){let{port:n,rootDir:b}=i,r=`http://localhost:${n}`,u=G(n),s=H(b),p=(t,e)=>` ${q("\u279C")} ${k(t.padEnd(9))}${e}`,c=["",...O.map((t)=>_(t)),"",` ${l("gemi")} ${x(`v${E()}`)}`,"",p("Local:",x(r)),p("Network:",u?x(u):l("unavailable")),p("Env:",s.length?s.join(", "):l("none")),""];console.log(c.join(`
|
|
3
|
-
`))}
|
|
4
|
-
export{L as b,N as c,A as d};
|
|
5
|
-
|
|
6
|
-
//# debugId=B195199581A816C664756E2164756E21
|
|
File without changes
|
|
File without changes
|
|
File without changes
|