diff --git a/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js b/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js deleted file mode 100644 index f254059..0000000 --- a/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - import * as __MIDDLEWARE_0__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; - - export * from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/.wrangler/tmp/bundle-Gs6nOV/middleware-loader.entry.ts b/.wrangler/tmp/bundle-Gs6nOV/middleware-loader.entry.ts deleted file mode 100644 index 4a8dcbb..0000000 --- a/.wrangler/tmp/bundle-Gs6nOV/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts"; -import type { WorkerEntrypointConstructor } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-Gs6nOV/middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/.wrangler/tmp/bundle-Gs6nOV/strip-cf-connecting-ip-header.js b/.wrangler/tmp/bundle-Gs6nOV/strip-cf-connecting-ip-header.js deleted file mode 100644 index a011710..0000000 --- a/.wrangler/tmp/bundle-Gs6nOV/strip-cf-connecting-ip-header.js +++ /dev/null @@ -1,13 +0,0 @@ -function stripCfConnectingIPHeader(input, init) { - const request = new Request(input, init); - request.headers.delete("CF-Connecting-IP"); - return request; -} - -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - return Reflect.apply(target, thisArg, [ - stripCfConnectingIPHeader.apply(null, argArray), - ]); - }, -}); diff --git a/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js b/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js deleted file mode 100644 index f254059..0000000 --- a/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - import * as __MIDDLEWARE_0__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; - - export * from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/.wrangler/tmp/bundle-MJIuJQ/middleware-loader.entry.ts b/.wrangler/tmp/bundle-MJIuJQ/middleware-loader.entry.ts deleted file mode 100644 index 289123b..0000000 --- a/.wrangler/tmp/bundle-MJIuJQ/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts"; -import type { WorkerEntrypointConstructor } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-MJIuJQ/middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/.wrangler/tmp/bundle-MJIuJQ/strip-cf-connecting-ip-header.js b/.wrangler/tmp/bundle-MJIuJQ/strip-cf-connecting-ip-header.js deleted file mode 100644 index a011710..0000000 --- a/.wrangler/tmp/bundle-MJIuJQ/strip-cf-connecting-ip-header.js +++ /dev/null @@ -1,13 +0,0 @@ -function stripCfConnectingIPHeader(input, init) { - const request = new Request(input, init); - request.headers.delete("CF-Connecting-IP"); - return request; -} - -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - return Reflect.apply(target, thisArg, [ - stripCfConnectingIPHeader.apply(null, argArray), - ]); - }, -}); diff --git a/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js b/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js deleted file mode 100644 index f254059..0000000 --- a/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - import * as __MIDDLEWARE_0__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; - - export * from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/.wrangler/tmp/bundle-SY4zl5/middleware-loader.entry.ts b/.wrangler/tmp/bundle-SY4zl5/middleware-loader.entry.ts deleted file mode 100644 index fa97c88..0000000 --- a/.wrangler/tmp/bundle-SY4zl5/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts"; -import type { WorkerEntrypointConstructor } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-SY4zl5/middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/.wrangler/tmp/bundle-SY4zl5/strip-cf-connecting-ip-header.js b/.wrangler/tmp/bundle-SY4zl5/strip-cf-connecting-ip-header.js deleted file mode 100644 index a011710..0000000 --- a/.wrangler/tmp/bundle-SY4zl5/strip-cf-connecting-ip-header.js +++ /dev/null @@ -1,13 +0,0 @@ -function stripCfConnectingIPHeader(input, init) { - const request = new Request(input, init); - request.headers.delete("CF-Connecting-IP"); - return request; -} - -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - return Reflect.apply(target, thisArg, [ - stripCfConnectingIPHeader.apply(null, argArray), - ]); - }, -}); diff --git a/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js b/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js deleted file mode 100644 index f254059..0000000 --- a/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - import * as __MIDDLEWARE_0__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; - - export * from "/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts"; - - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/.wrangler/tmp/bundle-nk20cv/middleware-loader.entry.ts b/.wrangler/tmp/bundle-nk20cv/middleware-loader.entry.ts deleted file mode 100644 index fbb0a6f..0000000 --- a/.wrangler/tmp/bundle-nk20cv/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts"; -import type { WorkerEntrypointConstructor } from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/.wrangler/tmp/bundle-nk20cv/strip-cf-connecting-ip-header.js b/.wrangler/tmp/bundle-nk20cv/strip-cf-connecting-ip-header.js deleted file mode 100644 index a011710..0000000 --- a/.wrangler/tmp/bundle-nk20cv/strip-cf-connecting-ip-header.js +++ /dev/null @@ -1,13 +0,0 @@ -function stripCfConnectingIPHeader(input, init) { - const request = new Request(input, init); - request.headers.delete("CF-Connecting-IP"); - return request; -} - -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - return Reflect.apply(target, thisArg, [ - stripCfConnectingIPHeader.apply(null, argArray), - ]); - }, -}); diff --git a/.wrangler/tmp/dev-PnrrLK/index.js b/.wrangler/tmp/dev-PnrrLK/index.js deleted file mode 100644 index a9efe28..0000000 --- a/.wrangler/tmp/dev-PnrrLK/index.js +++ /dev/null @@ -1,41 +0,0 @@ -var qn=Object.defineProperty;var uu=(r,e,t)=>e in r?qn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var o=(r,e)=>qn(r,"name",{value:e,configurable:!0});var lu=(r,e)=>{for(var t in e)qn(r,t,{get:e[t],enumerable:!0})};var h=(r,e,t)=>(uu(r,typeof e!="symbol"?e+"":e,t),t);function cu(r,e){let t=new Request(r,e);return t.headers.delete("CF-Connecting-IP"),t}o(cu,"stripCfConnectingIPHeader");globalThis.fetch=new Proxy(globalThis.fetch,{apply(r,e,t){return Reflect.apply(r,e,[cu.apply(null,t)])}});function L(r){return new Error(`[unenv] ${r} is not implemented yet!`)}o(L,"createNotImplementedError");function Ue(r){return Object.assign(o(()=>{throw L(r)},"fn"),{__unenv__:!0})}o(Ue,"notImplemented");function $i(r){return class{__unenv__=!0;constructor(){throw new Error(`[unenv] ${r} is not implemented yet!`)}}}o($i,"notImplementedClass");var Fn=globalThis.performance?.timeOrigin??Date.now(),jn=globalThis.performance?.now?globalThis.performance.now.bind(globalThis.performance):()=>Date.now()-Fn,du={name:"node",entryType:"node",startTime:0,duration:0,nodeStart:0,v8Start:0,bootstrapComplete:0,environment:0,loopStart:0,loopExit:0,idleTime:0,uvMetricsInfo:{loopCount:0,events:0,eventsWaiting:0},detail:void 0,toJSON(){return this}},st=class{__unenv__=!0;detail;entryType="event";name;startTime;constructor(e,t){this.name=e,this.startTime=t?.startTime||jn(),this.detail=t?.detail}get duration(){return jn()-this.startTime}toJSON(){return{name:this.name,entryType:this.entryType,startTime:this.startTime,duration:this.duration,detail:this.detail}}};o(st,"PerformanceEntry");var In=o(class extends st{entryType="mark";constructor(){super(...arguments)}get duration(){return 0}},"PerformanceMark"),ur=class extends st{entryType="measure"};o(ur,"PerformanceMeasure");var lr=class extends st{entryType="resource";serverTiming=[];connectEnd=0;connectStart=0;decodedBodySize=0;domainLookupEnd=0;domainLookupStart=0;encodedBodySize=0;fetchStart=0;initiatorType="";name="";nextHopProtocol="";redirectEnd=0;redirectStart=0;requestStart=0;responseEnd=0;responseStart=0;secureConnectionStart=0;startTime=0;transferSize=0;workerStart=0;responseStatus=0};o(lr,"PerformanceResourceTiming");var Qr=class{__unenv__=!0;getEntries(){return[]}getEntriesByName(e,t){return[]}getEntriesByType(e){return[]}};o(Qr,"PerformanceObserverEntryList");var cr=class{__unenv__=!0;timeOrigin=Fn;eventCounts=new Map;_entries=[];_resourceTimingBufferSize=0;navigation=void 0;timing=void 0;timerify(e,t){throw L("Performance.timerify")}get nodeTiming(){return du}eventLoopUtilization(){return{}}markResourceTiming(){return new lr("")}onresourcetimingbufferfull=null;now(){return this.timeOrigin===Fn?jn():Date.now()-this.timeOrigin}clearMarks(e){this._entries=e?this._entries.filter(t=>t.name!==e):this._entries.filter(t=>t.entryType!=="mark")}clearMeasures(e){this._entries=e?this._entries.filter(t=>t.name!==e):this._entries.filter(t=>t.entryType!=="measure")}clearResourceTimings(){this._entries=this._entries.filter(e=>e.entryType!=="resource"||e.entryType!=="navigation")}getEntries(){return this._entries}getEntriesByName(e,t){return this._entries.filter(s=>s.name===e&&(!t||s.entryType===t))}getEntriesByType(e){return this._entries.filter(t=>t.entryType===e)}mark(e,t){let s=new In(e,t);return this._entries.push(s),s}measure(e,t,s){let n,i;typeof t=="string"?(n=this.getEntriesByName(t,"mark")[0]?.startTime,i=this.getEntriesByName(s,"mark")[0]?.startTime):(n=Number.parseFloat(t?.start)||this.now(),i=Number.parseFloat(t?.end)||this.now());let a=new ur(e,{startTime:n,detail:{start:n,end:i}});return this._entries.push(a),a}setResourceTimingBufferSize(e){this._resourceTimingBufferSize=e}addEventListener(e,t,s){throw L("Performance.addEventListener")}removeEventListener(e,t,s){throw L("Performance.removeEventListener")}dispatchEvent(e){throw L("Performance.dispatchEvent")}toJSON(){return this}};o(cr,"Performance");var or=class{__unenv__=!0;_callback=null;constructor(e){this._callback=e}takeRecords(){return[]}disconnect(){throw L("PerformanceObserver.disconnect")}observe(e){throw L("PerformanceObserver.observe")}bind(e){return e}runInAsyncScope(e,t,...s){return e.call(t,...s)}asyncId(){return 0}triggerAsyncId(){return 0}emitDestroy(){return this}};o(or,"PerformanceObserver"),h(or,"supportedEntryTypes",[]);var Mi=globalThis.performance&&"addEventListener"in globalThis.performance?globalThis.performance:new cr;globalThis.performance=Mi;globalThis.Performance=cr;globalThis.PerformanceEntry=st;globalThis.PerformanceMark=In;globalThis.PerformanceMeasure=ur;globalThis.PerformanceObserver=or;globalThis.PerformanceObserverEntryList=Qr;globalThis.PerformanceResourceTiming=lr;import{Writable as Li}from"node:stream";var re=Object.assign(()=>{},{__unenv__:!0});var Q=globalThis.console,Pi=!0,zi=new Li,Ki=new Li,zs=Q?.log??re,fu=Q?.info??zs,Xp=Q?.trace??fu,Zp=Q?.debug??zs,em=Q?.table??zs,hu=Q?.error??zs,tm=Q?.warn??hu,rm=Q?.createTask??Ue("console.createTask");var sm=Q?.clear??re,nm=Q?.count??re,im=Q?.countReset??re,am=Q?.dir??re,om=Q?.dirxml??re,um=Q?.group??re,lm=Q?.groupEnd??re,cm=Q?.groupCollapsed??re,dm=Q?.profile??re,fm=Q?.profileEnd??re,hm=Q?.time??re,pm=Q?.timeEnd??re,mm=Q?.timeLog??re,gm=Q?.timeStamp??re,Ui=Q?.Console??$i("console.Console"),Vi=new Map;var Hi=re,Qi=re;var $n=globalThis.console,{assert:_m,clear:Em,context:Cm,count:Sm,countReset:Tm,createTask:Nm,debug:km,dir:Rm,dirxml:Om,error:Bm,group:qm,groupCollapsed:Fm,groupEnd:jm,info:Im,log:$m,profile:Mm,profileEnd:Lm,table:Pm,time:zm,timeEnd:Km,timeLog:Um,timeStamp:Vm,trace:Hm,warn:Qm}=$n;Object.assign($n,{Console:Ui,_ignoreErrors:Pi,_stderr:zi,_stderrErrorHandler:Qi,_stdout:Ki,_stdoutErrorHandler:Hi,_times:Vi});var Gi=$n;globalThis.console=Gi;var Wi=Object.assign(o(function(e){let t=Date.now(),s=Math.trunc(t/1e3),n=t%1e3*1e6;if(e){let i=s-e[0],a=n-e[0];return a<0&&(i=i-1,a=1e9+a),[i,a]}return[s,n]},"hrtime"),{bigint:o(function(){return BigInt(Date.now()*1e6)},"bigint")});import{EventEmitter as Ji}from"node:events";import{Socket as pu}from"node:net";var dr=class extends pu{fd;constructor(e){super(),this.fd=e}isRaw=!1;setRawMode(e){return this.isRaw=e,this}isTTY=!1};o(dr,"ReadStream");import{Socket as mu}from"node:net";var Et=class extends mu{fd;constructor(e){super(),this.fd=e}clearLine(e,t){return t&&t(),!1}clearScreenDown(e){return e&&e(),!1}cursorTo(e,t,s){return s&&typeof s=="function"&&s(),!1}moveCursor(e,t,s){return s&&s(),!1}getColorDepth(e){return 1}hasColors(e,t){return!1}getWindowSize(){return[this.columns,this.rows]}columns=80;rows=24;isTTY=!1};o(Et,"WriteStream");var Ct=class extends Ji{env;hrtime;nextTick;constructor(e){super(),this.env=e.env,this.hrtime=e.hrtime,this.nextTick=e.nextTick;for(let t of[...Object.getOwnPropertyNames(Ct.prototype),...Object.getOwnPropertyNames(Ji.prototype)]){let s=this[t];typeof s=="function"&&(this[t]=s.bind(this))}}emitWarning(e,t,s){console.warn(`${s?`[${s}] `:""}${t?`${t}: `:""}${e}`)}emit(...e){return super.emit(...e)}listeners(e){return super.listeners(e)}#e;#t;#r;get stdin(){return this.#e??=new dr(0)}get stdout(){return this.#t??=new Et(1)}get stderr(){return this.#r??=new Et(2)}#i="/";chdir(e){this.#i=e}cwd(){return this.#i}arch="";platform="";argv=[];argv0="";execArgv=[];execPath="";title="";pid=200;ppid=100;get version(){return""}get versions(){return{}}get allowedNodeEnvironmentFlags(){return new Set}get sourceMapsEnabled(){return!1}get debugPort(){return 0}get throwDeprecation(){return!1}get traceDeprecation(){return!1}get features(){return{}}get release(){return{}}get connected(){return!1}get config(){return{}}get moduleLoadList(){return[]}constrainedMemory(){return 0}availableMemory(){return 0}uptime(){return 0}resourceUsage(){return{}}ref(){}unref(){}umask(){throw L("process.umask")}getBuiltinModule(){}getActiveResourcesInfo(){throw L("process.getActiveResourcesInfo")}exit(){throw L("process.exit")}reallyExit(){throw L("process.reallyExit")}kill(){throw L("process.kill")}abort(){throw L("process.abort")}dlopen(){throw L("process.dlopen")}setSourceMapsEnabled(){throw L("process.setSourceMapsEnabled")}loadEnvFile(){throw L("process.loadEnvFile")}disconnect(){throw L("process.disconnect")}cpuUsage(){throw L("process.cpuUsage")}setUncaughtExceptionCaptureCallback(){throw L("process.setUncaughtExceptionCaptureCallback")}hasUncaughtExceptionCaptureCallback(){throw L("process.hasUncaughtExceptionCaptureCallback")}initgroups(){throw L("process.initgroups")}openStdin(){throw L("process.openStdin")}assert(){throw L("process.assert")}binding(){throw L("process.binding")}permission={has:Ue("process.permission.has")};report={directory:"",filename:"",signal:"SIGUSR2",compact:!1,reportOnFatalError:!1,reportOnSignal:!1,reportOnUncaughtException:!1,getReport:Ue("process.report.getReport"),writeReport:Ue("process.report.writeReport")};finalization={register:Ue("process.finalization.register"),unregister:Ue("process.finalization.unregister"),registerBeforeExit:Ue("process.finalization.registerBeforeExit")};memoryUsage=Object.assign(()=>({arrayBuffers:0,rss:0,external:0,heapTotal:0,heapUsed:0}),{rss:()=>0});mainModule=void 0;domain=void 0;send=void 0;exitCode=void 0;channel=void 0;getegid=void 0;geteuid=void 0;getgid=void 0;getgroups=void 0;getuid=void 0;setegid=void 0;seteuid=void 0;setgid=void 0;setgroups=void 0;setuid=void 0;_events=void 0;_eventsCount=void 0;_exiting=void 0;_maxListeners=void 0;_debugEnd=void 0;_debugProcess=void 0;_fatalException=void 0;_getActiveHandles=void 0;_getActiveRequests=void 0;_kill=void 0;_preload_modules=void 0;_rawDebug=void 0;_startProfilerIdleNotifier=void 0;_stopProfilerIdleNotifier=void 0;_tickCallback=void 0;_disconnect=void 0;_handleQueue=void 0;_pendingMessage=void 0;_channel=void 0;_send=void 0;_linkedBinding=void 0};o(Ct,"Process");var Yi=globalThis.process,Xi=Yi.getBuiltinModule,{exit:gu,platform:yu,nextTick:Zi}=Xi("node:process"),bu=new Ct({env:Yi.env,hrtime:Wi,nextTick:Zi}),{abort:xu,addListener:vu,allowedNodeEnvironmentFlags:wu,hasUncaughtExceptionCaptureCallback:Au,setUncaughtExceptionCaptureCallback:Du,loadEnvFile:_u,sourceMapsEnabled:Eu,arch:Cu,argv:Su,argv0:Tu,chdir:Nu,config:ku,connected:Ru,constrainedMemory:Ou,availableMemory:Bu,cpuUsage:qu,cwd:Fu,debugPort:ju,dlopen:Iu,disconnect:$u,emit:Mu,emitWarning:Lu,env:Pu,eventNames:zu,execArgv:Ku,execPath:Uu,finalization:Vu,features:Hu,getActiveResourcesInfo:Qu,getMaxListeners:Gu,hrtime:Wu,kill:Ju,listeners:Yu,listenerCount:Xu,memoryUsage:Zu,on:el,off:tl,once:rl,pid:sl,ppid:nl,prependListener:il,prependOnceListener:al,rawListeners:ol,release:ul,removeAllListeners:ll,removeListener:cl,report:dl,resourceUsage:fl,setMaxListeners:hl,setSourceMapsEnabled:pl,stderr:ml,stdin:gl,stdout:yl,title:bl,throwDeprecation:xl,traceDeprecation:vl,umask:wl,uptime:Al,version:Dl,versions:_l,domain:El,initgroups:Cl,moduleLoadList:Sl,reallyExit:Tl,openStdin:Nl,assert:kl,binding:Rl,send:Ol,exitCode:Bl,channel:ql,getegid:Fl,geteuid:jl,getgid:Il,getgroups:$l,getuid:Ml,setegid:Ll,seteuid:Pl,setgid:zl,setgroups:Kl,setuid:Ul,permission:Vl,mainModule:Hl,_events:Ql,_eventsCount:Gl,_exiting:Wl,_maxListeners:Jl,_debugEnd:Yl,_debugProcess:Xl,_fatalException:Zl,_getActiveHandles:ec,_getActiveRequests:tc,_kill:rc,_preload_modules:sc,_rawDebug:nc,_startProfilerIdleNotifier:ic,_stopProfilerIdleNotifier:ac,_tickCallback:oc,_disconnect:uc,_handleQueue:lc,_pendingMessage:cc,_channel:dc,_send:fc,_linkedBinding:hc}=bu,pc={abort:xu,addListener:vu,allowedNodeEnvironmentFlags:wu,hasUncaughtExceptionCaptureCallback:Au,setUncaughtExceptionCaptureCallback:Du,loadEnvFile:_u,sourceMapsEnabled:Eu,arch:Cu,argv:Su,argv0:Tu,chdir:Nu,config:ku,connected:Ru,constrainedMemory:Ou,availableMemory:Bu,cpuUsage:qu,cwd:Fu,debugPort:ju,dlopen:Iu,disconnect:$u,emit:Mu,emitWarning:Lu,env:Pu,eventNames:zu,execArgv:Ku,execPath:Uu,exit:gu,finalization:Vu,features:Hu,getBuiltinModule:Xi,getActiveResourcesInfo:Qu,getMaxListeners:Gu,hrtime:Wu,kill:Ju,listeners:Yu,listenerCount:Xu,memoryUsage:Zu,nextTick:Zi,on:el,off:tl,once:rl,pid:sl,platform:yu,ppid:nl,prependListener:il,prependOnceListener:al,rawListeners:ol,release:ul,removeAllListeners:ll,removeListener:cl,report:dl,resourceUsage:fl,setMaxListeners:hl,setSourceMapsEnabled:pl,stderr:ml,stdin:gl,stdout:yl,title:bl,throwDeprecation:xl,traceDeprecation:vl,umask:wl,uptime:Al,version:Dl,versions:_l,domain:El,initgroups:Cl,moduleLoadList:Sl,reallyExit:Tl,openStdin:Nl,assert:kl,binding:Rl,send:Ol,exitCode:Bl,channel:ql,getegid:Fl,geteuid:jl,getgid:Il,getgroups:$l,getuid:Ml,setegid:Ll,seteuid:Pl,setgid:zl,setgroups:Kl,setuid:Ul,permission:Vl,mainModule:Hl,_events:Ql,_eventsCount:Gl,_exiting:Wl,_maxListeners:Jl,_debugEnd:Yl,_debugProcess:Xl,_fatalException:Zl,_getActiveHandles:ec,_getActiveRequests:tc,_kill:rc,_preload_modules:sc,_rawDebug:nc,_startProfilerIdleNotifier:ic,_stopProfilerIdleNotifier:ac,_tickCallback:oc,_disconnect:uc,_handleQueue:lc,_pendingMessage:cc,_channel:dc,_send:fc,_linkedBinding:hc},ea=pc;globalThis.process=ea;var Mn=o((r,e,t)=>(s,n)=>{let i=-1;return a(0);async function a(u){if(u<=i)throw new Error("next() called multiple times");i=u;let l,c=!1,d;if(r[u]?(d=r[u][0][0],s.req.routeIndex=u):d=u===r.length&&n||void 0,d)try{l=await d(s,()=>a(u+1))}catch(m){if(m instanceof Error&&e)s.error=m,l=await e(m,s),c=!0;else throw m}else s.finalized===!1&&t&&(l=await t(s));return l&&(s.finalized===!1||c)&&(s.res=l),s}},"compose");var ta=Symbol();var ra=o(async(r,e=Object.create(null))=>{let{all:t=!1,dot:s=!1}=e,i=(r instanceof Ks?r.raw.headers:r.headers).get("Content-Type");return i?.startsWith("multipart/form-data")||i?.startsWith("application/x-www-form-urlencoded")?mc(r,{all:t,dot:s}):{}},"parseBody");async function mc(r,e){let t=await r.formData();return t?gc(t,e):{}}o(mc,"parseFormData");function gc(r,e){let t=Object.create(null);return r.forEach((s,n)=>{e.all||n.endsWith("[]")?yc(t,n,s):t[n]=s}),e.dot&&Object.entries(t).forEach(([s,n])=>{s.includes(".")&&(bc(t,s,n),delete t[s])}),t}o(gc,"convertFormDataToBodyData");var yc=o((r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t},"handleParsingAllValues"),bc=o((r,e,t)=>{let s=r,n=e.split(".");n.forEach((i,a)=>{a===n.length-1?s[i]=t:((!s[i]||typeof s[i]!="object"||Array.isArray(s[i])||s[i]instanceof File)&&(s[i]=Object.create(null)),s=s[i])})},"handleParsingNestedValues");var Pn=o(r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},"splitPath"),sa=o(r=>{let{groups:e,path:t}=xc(r),s=Pn(t);return vc(s,e)},"splitRoutingPath"),xc=o(r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,s)=>{let n=`@${s}`;return e.push([n,t]),n}),{groups:e,path:r}},"extractGroupsFromPath"),vc=o((r,e)=>{for(let t=e.length-1;t>=0;t--){let[s]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(s)){r[n]=r[n].replace(s,e[t][1]);break}}return r},"replaceGroupMarks"),Us={},na=o((r,e)=>{if(r==="*")return"*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let s=`${r}#${e}`;return Us[s]||(t[2]?Us[s]=e&&e[0]!==":"&&e[0]!=="*"?[s,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:Us[s]=[r,t[1],!0]),Us[s]}return null},"getPattern"),Vs=o((r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},"tryDecode"),wc=o(r=>Vs(r,decodeURI),"tryDecodeURI"),zn=o(r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),s=t;for(;s{let e=zn(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},"getPathNoStrict"),St=o((r,e,...t)=>(t.length&&(e=St(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),"mergePath"),Hs=o(r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],s="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))s+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&s===""?t.push("/"):t.push(s);let i=n.replace("?","");s+="/"+i,t.push(s)}else s+="/"+n}),t.filter((n,i,a)=>a.indexOf(n)===i)},"checkOptionalParameter"),Ln=o(r=>/[%+]/.test(r)?(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),r.indexOf("%")!==-1?Vs(r,Kn):r):r,"_decodeURI"),aa=o((r,e,t)=>{let s;if(!t&&e&&!/[%+]/.test(e)){let a=r.indexOf(`?${e}`,8);for(a===-1&&(a=r.indexOf(`&${e}`,8));a!==-1;){let u=r.charCodeAt(a+e.length+1);if(u===61){let l=a+e.length+2,c=r.indexOf("&",l);return Ln(r.slice(l,c===-1?void 0:c))}else if(u==38||isNaN(u))return"";a=r.indexOf(`&${e}`,a+1)}if(s=/[%+]/.test(r),!s)return}let n={};s??=/[%+]/.test(r);let i=r.indexOf("?",8);for(;i!==-1;){let a=r.indexOf("&",i+1),u=r.indexOf("=",i);u>a&&a!==-1&&(u=-1);let l=r.slice(i+1,u===-1?a===-1?void 0:a:u);if(s&&(l=Ln(l)),i=a,l==="")continue;let c;u===-1?c="":(c=r.slice(u+1,a===-1?void 0:a),s&&(c=Ln(c))),t?(n[l]&&Array.isArray(n[l])||(n[l]=[]),n[l].push(c)):n[l]??=c}return e?n[e]:n},"_getQueryParam"),oa=aa,ua=o((r,e)=>aa(r,e,!0),"getQueryParams"),Kn=decodeURIComponent;var la=o(r=>Vs(r,Kn),"tryDecodeURIComponent"),Ks=o(class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#t=t,this.#e={}}param(r){return r?this.#r(r):this.#i()}#r(r){let e=this.#t[0][this.routeIndex][1][r],t=this.#n(e);return t&&/\%/.test(t)?la(t):t}#i(){let r={},e=Object.keys(this.#t[0][this.routeIndex][1]);for(let t of e){let s=this.#n(this.#t[0][this.routeIndex][1][t]);s!==void 0&&(r[t]=/\%/.test(s)?la(s):s)}return r}#n(r){return this.#t[1]?this.#t[1][r]:r}query(r){return oa(this.url,r)}queries(r){return ua(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e={};return this.raw.headers.forEach((t,s)=>{e[s]=t}),e}async parseBody(r){return this.bodyCache.parsedBody??=await ra(this,r)}#s=r=>{let{bodyCache:e,raw:t}=this,s=e[r];if(s)return s;let n=Object.keys(e)[0];return n?e[n].then(i=>(n==="json"&&(i=JSON.stringify(i)),new Response(i)[r]())):e[r]=t[r]()};json(){return this.#s("text").then(r=>JSON.parse(r))}text(){return this.#s("text")}arrayBuffer(){return this.#s("arrayBuffer")}blob(){return this.#s("blob")}formData(){return this.#s("formData")}addValidatedData(r,e){this.#e[r]=e}valid(r){return this.#e[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[ta](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,r]])=>r)}get routePath(){return this.#t[0].map(([[,r]])=>r)[this.routeIndex].path}},"HonoRequest");var ca={Stringify:1,BeforeStream:2,Stream:3},Ac=o((r,e)=>{let t=new String(r);return t.isEscaped=!0,t.callbacks=e,t},"raw");var Un=o(async(r,e,t,s,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let i=r.callbacks;if(!i?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let a=Promise.all(i.map(u=>u({phase:e,buffer:n,context:s}))).then(u=>Promise.all(u.filter(Boolean).map(l=>Un(l,e,!1,s,n))).then(()=>n[0]));return t?Ac(await a,i):a},"resolveCallback");var Dc="text/plain; charset=UTF-8",Vn=o((r,e)=>({"Content-Type":r,...e}),"setDefaultContentType"),da=o(class{#e;#t;env={};#r;finalized=!1;error;#i;#n;#s;#c;#u;#l;#o;#d;#f;constructor(r,e){this.#e=r,e&&(this.#n=e.executionCtx,this.env=e.env,this.#l=e.notFoundHandler,this.#f=e.path,this.#d=e.matchResult)}get req(){return this.#t??=new Ks(this.#e,this.#f,this.#d),this.#t}get event(){if(this.#n&&"respondWith"in this.#n)return this.#n;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#n)return this.#n;throw Error("This context has no ExecutionContext")}get res(){return this.#s||=new Response(null,{headers:this.#o??=new Headers})}set res(r){if(this.#s&&r){r=new Response(r.body,r);for(let[e,t]of this.#s.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let s=this.#s.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of s)r.headers.append("set-cookie",n)}else r.headers.set(e,t)}this.#s=r,this.finalized=!0}render=(...r)=>(this.#u??=e=>this.html(e),this.#u(...r));setLayout=r=>this.#c=r;getLayout=()=>this.#c;setRenderer=r=>{this.#u=r};header=(r,e,t)=>{this.finalized&&(this.#s=new Response(this.#s.body,this.#s));let s=this.#s?this.#s.headers:this.#o??=new Headers;e===void 0?s.delete(r):t?.append?s.append(r,e):s.set(r,e)};status=r=>{this.#i=r};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e)};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#a(r,e,t){let s=this.#s?new Headers(this.#s.headers):this.#o??new Headers;if(typeof e=="object"&&"headers"in e){let i=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[a,u]of i)a.toLowerCase()==="set-cookie"?s.append(a,u):s.set(a,u)}if(t)for(let[i,a]of Object.entries(t))if(typeof a=="string")s.set(i,a);else{s.delete(i);for(let u of a)s.append(i,u)}let n=typeof e=="number"?e:e?.status??this.#i;return new Response(r,{status:n,headers:s})}newResponse=(...r)=>this.#a(...r);body=(r,e,t)=>this.#a(r,e,t);text=(r,e,t)=>!this.#o&&!this.#i&&!e&&!t&&!this.finalized?new Response(r):this.#a(r,e,Vn(Dc,t));json=(r,e,t)=>this.#a(JSON.stringify(r),e,Vn("application/json",t));html=(r,e,t)=>{let s=o(n=>this.#a(n,e,Vn("text/html; charset=UTF-8",t)),"res");return typeof r=="object"?Un(r,ca.Stringify,!1,{}).then(s):s(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#l??=()=>new Response,this.#l(this))},"Context");var U="ALL",fa="all",ha=["get","post","put","delete","options","patch"],Qs="Can not add a route since the matcher is already built.",Gs=o(class extends Error{},"UnsupportedPathError");var pa="__COMPOSED_HANDLER";var _c=o(r=>r.text("404 Not Found",404),"notFoundHandler"),ma=o((r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},"errorHandler"),Hn=o(class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(r={}){[...ha,fa].forEach(n=>{this[n]=(i,...a)=>(typeof i=="string"?this.#e=i:this.#i(n,this.#e,i),a.forEach(u=>{this.#i(n,this.#e,u)}),this)}),this.on=(n,i,...a)=>{for(let u of[i].flat()){this.#e=u;for(let l of[n].flat())a.map(c=>{this.#i(l.toUpperCase(),this.#e,c)})}return this},this.use=(n,...i)=>(typeof n=="string"?this.#e=n:(this.#e="*",i.unshift(n)),i.forEach(a=>{this.#i(U,this.#e,a)}),this);let{strict:t,...s}=r;Object.assign(this,s),this.getPath=t??!0?r.getPath??zn:ia}#t(){let r=new Hn({router:this.router,getPath:this.getPath});return r.errorHandler=this.errorHandler,r.#r=this.#r,r.routes=this.routes,r}#r=_c;errorHandler=ma;route(r,e){let t=this.basePath(r);return e.routes.map(s=>{let n;e.errorHandler===ma?n=s.handler:(n=o(async(i,a)=>(await Mn([],e.errorHandler)(i,()=>s.handler(i,a))).res,"handler"),n[pa]=s.handler),t.#i(s.method,s.path,n)}),this}basePath(r){let e=this.#t();return e._basePath=St(this._basePath,r),e}onError=r=>(this.errorHandler=r,this);notFound=r=>(this.#r=r,this);mount(r,e,t){let s,n;t&&(typeof t=="function"?n=t:(n=t.optionHandler,t.replaceRequest===!1?s=o(u=>u,"replaceRequest"):s=t.replaceRequest));let i=n?u=>{let l=n(u);return Array.isArray(l)?l:[l]}:u=>{let l;try{l=u.executionCtx}catch{}return[u.env,l]};s||=(()=>{let u=St(this._basePath,r),l=u==="/"?0:u.length;return c=>{let d=new URL(c.url);return d.pathname=d.pathname.slice(l)||"/",new Request(d,c)}})();let a=o(async(u,l)=>{let c=await e(s(u.req.raw),...i(u));if(c)return c;await l()},"handler");return this.#i(U,St(r,"*"),a),this}#i(r,e,t){r=r.toUpperCase(),e=St(this._basePath,e);let s={basePath:this._basePath,path:e,method:r,handler:t};this.router.add(r,e,[t,s]),this.routes.push(s)}#n(r,e){if(r instanceof Error)return this.errorHandler(r,e);throw r}#s(r,e,t,s){if(s==="HEAD")return(async()=>new Response(null,await this.#s(r,e,t,"GET")))();let n=this.getPath(r,{env:t}),i=this.router.match(s,n),a=new da(r,{path:n,matchResult:i,env:t,executionCtx:e,notFoundHandler:this.#r});if(i[0].length===1){let l;try{l=i[0][0][0][0](a,async()=>{a.res=await this.#r(a)})}catch(c){return this.#n(c,a)}return l instanceof Promise?l.then(c=>c||(a.finalized?a.res:this.#r(a))).catch(c=>this.#n(c,a)):l??this.#r(a)}let u=Mn(i[0],this.errorHandler,this.#r);return(async()=>{try{let l=await u(a);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#n(l,a)}})()}fetch=(r,...e)=>this.#s(r,e[1],e[0],r.method);request=(r,e,t,s)=>r instanceof Request?this.fetch(e?new Request(r,e):r,t,s):(r=r.toString(),this.fetch(new Request(/^https?:\/\//.test(r)?r:`http://localhost${St("/",r)}`,e),t,s));fire=()=>{addEventListener("fetch",r=>{r.respondWith(this.#s(r.request,r,void 0,r.request.method))})}},"Hono");var Ws=[];function Qn(r,e){let t=this.buildAllMatchers(),s=o((n,i)=>{let a=t[n]||t[U],u=a[2][i];if(u)return u;let l=i.match(a[0]);if(!l)return[[],Ws];let c=l.indexOf("",1);return[a[1][c],l]},"match2");return this.match=s,s(r,e)}o(Qn,"match");var Js="[^/]+",Gr=".*",Wr="(?:|/.*)",Tt=Symbol(),Ec=new Set(".\\+*[^]$()");function Cc(r,e){return r.length===1?e.length===1?rm!==Gr&&m!==Wr))throw Tt;if(n)return;l=this.#r[d]=new Ys,c!==""&&(l.#t=s.varIndex++)}!n&&c!==""&&t.push([c,l.#t])}else if(l=this.#r[i],!l){if(Object.keys(this.#r).some(c=>c.length>1&&c!==Gr&&c!==Wr))throw Tt;if(n)return;l=this.#r[i]=new Ys}l.insert(a,e,t,s,n)}buildRegExpStr(){let e=Object.keys(this.#r).sort(Cc).map(t=>{let s=this.#r[t];return(typeof s.#t=="number"?`(${t})@${s.#t}`:Ec.has(t)?`\\${t}`:t)+s.buildRegExpStr()});return typeof this.#e=="number"&&e.unshift(`#${this.#e}`),e.length===0?"":e.length===1?e[0]:"(?:"+e.join("|")+")"}},"Node");var ga=o(class{#e={varIndex:0};#t=new Ys;insert(r,e,t){let s=[],n=[];for(let a=0;;){let u=!1;if(r=r.replace(/\{[^}]+\}/g,l=>{let c=`@\\${a}`;return n[a]=[c,l],a++,u=!0,c}),!u)break}let i=r.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let a=n.length-1;a>=0;a--){let[u]=n[a];for(let l=i.length-1;l>=0;l--)if(i[l].indexOf(u)!==-1){i[l]=i[l].replace(u,n[a][1]);break}}return this.#t.insert(i,e,s,this.#e,t),s}buildRegExp(){let r=this.#t.buildRegExpStr();if(r==="")return[/^$/,[],[]];let e=0,t=[],s=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,i,a)=>i!==void 0?(t[++e]=Number(i),"$()"):(a!==void 0&&(s[Number(a)]=++e),"")),[new RegExp(`^${r}`),t,s]}},"Trie");var Sc=[/^$/,[],Object.create(null)],ya=Object.create(null);function ba(r){return ya[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}o(ba,"buildWildcardRegExp");function Tc(){ya=Object.create(null)}o(Tc,"clearWildcardRegExpCache");function Nc(r){let e=new ga,t=[];if(r.length===0)return Sc;let s=r.map(c=>[!/\*|\/:/.test(c[0]),...c]).sort(([c,d],[m,x])=>c?1:m?-1:d.length-x.length),n=Object.create(null);for(let c=0,d=-1,m=s.length;c[q,Object.create(null)]),Ws]:d++;let O;try{O=e.insert(N,d,x)}catch(q){throw q===Tt?new Gs(N):q}x||(t[d]=C.map(([q,M])=>{let z=Object.create(null);for(M-=1;M>=0;M--){let[j,$]=O[M];z[j]=$}return[q,z]}))}let[i,a,u]=e.buildRegExp();for(let c=0,d=t.length;cn.length-s.length))if(ba(t).test(e))return[...r[t]]}}o(fr,"findMiddleware");var Xs=o(class{name="RegExpRouter";#e;#t;constructor(){this.#e={[U]:Object.create(null)},this.#t={[U]:Object.create(null)}}add(r,e,t){let s=this.#e,n=this.#t;if(!s||!n)throw new Error(Qs);s[r]||[s,n].forEach(u=>{u[r]=Object.create(null),Object.keys(u[U]).forEach(l=>{u[r][l]=[...u[U][l]]})}),e==="/*"&&(e="*");let i=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let u=ba(e);r===U?Object.keys(s).forEach(l=>{s[l][e]||=fr(s[l],e)||fr(s[U],e)||[]}):s[r][e]||=fr(s[r],e)||fr(s[U],e)||[],Object.keys(s).forEach(l=>{(r===U||r===l)&&Object.keys(s[l]).forEach(c=>{u.test(c)&&s[l][c].push([t,i])})}),Object.keys(n).forEach(l=>{(r===U||r===l)&&Object.keys(n[l]).forEach(c=>u.test(c)&&n[l][c].push([t,i]))});return}let a=Hs(e)||[e];for(let u=0,l=a.length;u{(r===U||r===d)&&(n[d][c]||=[...fr(s[d],c)||fr(s[U],c)||[]],n[d][c].push([t,i-l+u+1]))})}}match=Qn;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#t).concat(Object.keys(this.#e)).forEach(e=>{r[e]||=this.#r(e)}),this.#e=this.#t=void 0,Tc(),r}#r(r){let e=[],t=r===U;return[this.#e,this.#t].forEach(s=>{let n=s[r]?Object.keys(s[r]).map(i=>[i,s[r][i]]):[];n.length!==0?(t||=!0,e.push(...n)):r!==U&&e.push(...Object.keys(s[U]).map(i=>[i,s[U][i]]))}),t?Nc(e):null}},"RegExpRouter");var Gn=o(class{name="SmartRouter";#e=[];#t=[];constructor(r){this.#e=r.routers}add(r,e,t){if(!this.#t)throw new Error(Qs);this.#t.push([r,e,t])}match(r,e){if(!this.#t)throw new Error("Fatal error");let t=this.#e,s=this.#t,n=t.length,i=0,a;for(;il.indexOf(a)===u),score:this.#i}}),s}#s(r,e,t,s){let n=[];for(let i=0,a=r.#e.length;i1&&t.sort((u,l)=>u.score-l.score),[t.map(({handler:u,params:l})=>[u,l])]}},"Node");var Jn=o(class{name="TrieRouter";#e;constructor(){this.#e=new Wn}add(r,e,t){let s=Hs(e);if(s){for(let n=0,i=s.length;n{let t=/\.([a-zA-Z0-9]+?)$/,s=r.match(t);if(!s)return;let n=e[s[1]];return n&&n.startsWith("text")&&(n+="; charset=utf-8"),n},"getMimeType");var kc={aac:"audio/aac",avi:"video/x-msvideo",avif:"image/avif",av1:"video/av1",bin:"application/octet-stream",bmp:"image/bmp",css:"text/css",csv:"text/csv",eot:"application/vnd.ms-fontobject",epub:"application/epub+zip",gif:"image/gif",gz:"application/gzip",htm:"text/html",html:"text/html",ico:"image/x-icon",ics:"text/calendar",jpeg:"image/jpeg",jpg:"image/jpeg",js:"text/javascript",json:"application/json",jsonld:"application/ld+json",map:"application/json",mid:"audio/x-midi",midi:"audio/x-midi",mjs:"text/javascript",mp3:"audio/mpeg",mp4:"video/mp4",mpeg:"video/mpeg",oga:"audio/ogg",ogv:"video/ogg",ogx:"application/ogg",opus:"audio/opus",otf:"font/otf",pdf:"application/pdf",png:"image/png",rtf:"application/rtf",svg:"image/svg+xml",tif:"image/tiff",tiff:"image/tiff",ts:"video/mp2t",ttf:"font/ttf",txt:"text/plain",wasm:"application/wasm",webm:"video/webm",weba:"audio/webm",webmanifest:"application/manifest+json",webp:"image/webp",woff:"font/woff",woff2:"font/woff2",xhtml:"application/xhtml+xml",xml:"application/xml",zip:"application/zip","3gp":"video/3gpp","3g2":"video/3gpp2",gltf:"model/gltf+json",glb:"model/gltf-binary"},Rc=kc;var va=o((...r)=>{let e=r.filter(n=>n!=="").join("/");e=e.replace(/(?<=\/)\/+/g,"");let t=e.split("/"),s=[];for(let n of t)n===".."&&s.length>0&&s.at(-1)!==".."?s.pop():n!=="."&&s.push(n);return s.join("/")||"."},"defaultJoin");var wa={br:".br",zstd:".zst",gzip:".gz"},Oc=Object.keys(wa),Bc="index.html",Aa=o(r=>{let e=r.root??"./",t=r.path,s=r.join??va;return async(n,i)=>{if(n.finalized)return i();let a;if(r.path)a=r.path;else try{if(a=decodeURIComponent(n.req.path),/(?:^|[\/\\])\.\.(?:$|[\/\\])/.test(a))throw new Error}catch{return await r.onNotFound?.(n.req.path,n),i()}let u=s(e,!t&&r.rewriteRequestPath?r.rewriteRequestPath(a):a);r.isDir&&await r.isDir(u)&&(u=s(u,Bc));let l=r.getContent,c=await l(u,n);if(c instanceof Response)return n.newResponse(c.body,c);if(c){let d=r.mimes&&Yn(u,r.mimes)||Yn(u);if(n.header("Content-Type",d||"application/octet-stream"),r.precompressed&&(!d||xa.test(d))){let m=new Set(n.req.header("Accept-Encoding")?.split(",").map(x=>x.trim()));for(let x of Oc){if(!m.has(x))continue;let N=await l(u+wa[x],n);if(N){c=N,n.header("Content-Encoding",x),n.header("Vary","Accept-Encoding",{append:!0});break}}}return await r.onFound?.(u,n),n.body(c)}await r.onNotFound?.(u,n),await i()}},"serveStatic");var Da=o(async(r,e)=>{let t;e&&e.manifest?typeof e.manifest=="string"?t=JSON.parse(e.manifest):t=e.manifest:typeof __STATIC_CONTENT_MANIFEST=="string"?t=JSON.parse(__STATIC_CONTENT_MANIFEST):t=__STATIC_CONTENT_MANIFEST;let s;e&&e.namespace?s=e.namespace:s=__STATIC_CONTENT;let n=t[r]||r;if(!n)return null;let i=await s.get(n,{type:"stream"});return i||null},"getContentFromKVAsset");var _a=o(r=>o(async function(t,s){return Aa({...r,getContent:o(async i=>Da(i,{manifest:r.manifest,namespace:r.namespace?r.namespace:t.env?t.env.__STATIC_CONTENT:void 0}),"getContent")})(t,s)},"serveStatic2"),"serveStatic");var Zs=o(r=>_a(r),"module");var Ea=o(class{#e;constructor(r){this.#e=r,this.raw=r.raw,this.url=r.url?new URL(r.url):null,this.protocol=r.protocol??null}send(r,e){this.#e.send(r,e??{})}raw;binaryType="arraybuffer";get readyState(){return this.#e.readyState}url;protocol;close(r,e){this.#e.close(r,e)}},"WSContext");var Ca=o(r=>(...e)=>{if(typeof e[0]=="function"){let[t,s]=e;return o(async function(i,a){let u=await t(i),l=await r(i,u,s);if(l)return l;await a()},"upgradeWebSocket")}else{let[t,s,n]=e;return(async()=>{let i=await r(t,s,n);if(!i)throw new Error("Failed to upgrade WebSocket");return i})()}},"defineWebSocketHelper");var qc=Ca(async(r,e)=>{if(r.req.header("Upgrade")!=="websocket")return;let s=new WebSocketPair,n=s[0],i=s[1],a=new Ea({close:(u,l)=>i.close(u,l),get protocol(){return i.protocol},raw:i,get readyState(){return i.readyState},url:i.url?new URL(i.url):null,send:u=>i.send(u)});return e.onClose&&i.addEventListener("close",u=>e.onClose?.(u,a)),e.onMessage&&i.addEventListener("message",u=>e.onMessage?.(u,a)),e.onError&&i.addEventListener("error",u=>e.onError?.(u,a)),i.accept?.(),new Response(null,{status:101,webSocket:n})});var en=o(r=>{let t={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...r},s=(i=>typeof i=="string"?i==="*"?()=>i:a=>i===a?a:null:typeof i=="function"?i:a=>i.includes(a)?a:null)(t.origin),n=(i=>typeof i=="function"?i:Array.isArray(i)?()=>i:()=>[])(t.allowMethods);return o(async function(a,u){function l(d,m){a.res.headers.set(d,m)}o(l,"set");let c=await s(a.req.header("origin")||"",a);if(c&&l("Access-Control-Allow-Origin",c),t.origin!=="*"){let d=a.req.header("Vary");d?l("Vary",d):l("Vary","Origin")}if(t.credentials&&l("Access-Control-Allow-Credentials","true"),t.exposeHeaders?.length&&l("Access-Control-Expose-Headers",t.exposeHeaders.join(",")),a.req.method==="OPTIONS"){t.maxAge!=null&&l("Access-Control-Max-Age",t.maxAge.toString());let d=await n(a.req.header("origin")||"",a);d.length&&l("Access-Control-Allow-Methods",d.join(","));let m=t.allowHeaders;if(!m?.length){let x=a.req.header("Access-Control-Request-Headers");x&&(m=x.split(/\s*,\s*/))}return m?.length&&(l("Access-Control-Allow-Headers",m.join(",")),a.res.headers.append("Vary","Access-Control-Request-Headers")),a.res.headers.delete("Content-Length"),a.res.headers.delete("Content-Type"),new Response(null,{headers:a.res.headers,status:204,statusText:"No Content"})}await u()},"cors2")},"cors");var p=Symbol.for("drizzle:entityKind"),Ix=Symbol.for("drizzle:hasOwnEntityKind");function g(r,e){if(!r||typeof r!="object")return!1;if(r instanceof e)return!0;if(!Object.prototype.hasOwnProperty.call(e,p))throw new Error(`Class "${e.name??""}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let t=r.constructor;if(t)for(;t;){if(p in t&&t[p]===e[p])return!0;t=Object.getPrototypeOf(t)}return!1}o(g,"is");var Fc,B=class{constructor(e,t){this.table=e,this.config=t,this.name=t.name,this.notNull=t.notNull,this.default=t.default,this.defaultFn=t.defaultFn,this.hasDefault=t.hasDefault,this.primary=t.primaryKey,this.isUnique=t.isUnique,this.uniqueName=t.uniqueName,this.uniqueType=t.uniqueType,this.dataType=t.dataType,this.columnType=t.columnType}name;primary;notNull;default;defaultFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;config;mapFromDriverValue(e){return e}mapToDriverValue(e){return e}};o(B,"Column"),Fc=p,h(B,Fc,"Column");var Y=Symbol.for("drizzle:SubqueryConfig"),jc,te=class{[(jc=p,Y)];constructor(e,t,s,n=!1){this[Y]={sql:e,selection:t,alias:s,isWith:n}}};o(te,"Subquery"),h(te,jc,"Subquery");var Ic,nt=class extends te{};o(nt,"WithSubquery"),Ic=p,h(nt,Ic,"WithSubquery");function tn(r,...e){return r(...e)}o(tn,"iife");var Sa="0.29.5";var Xn,Zn,Ta={startActiveSpan(r,e){return Xn?(Zn||(Zn=Xn.trace.getTracer("drizzle-orm",Sa)),tn((t,s)=>s.startActiveSpan(r,n=>{try{return e(n)}catch(i){throw n.setStatus({code:t.SpanStatusCode.ERROR,message:i instanceof Error?i.message:"Unknown error"}),i}finally{n.end()}}),Xn,Zn)):e()}};var X=Symbol.for("drizzle:ViewBaseConfig");var rn=Symbol.for("drizzle:Name"),ei=Symbol.for("drizzle:Schema"),Na=Symbol.for("drizzle:Columns"),ti=Symbol.for("drizzle:OriginalName"),ri=Symbol.for("drizzle:BaseName"),ka=Symbol.for("drizzle:IsAlias"),Ra=Symbol.for("drizzle:ExtraConfigBuilder"),Oa=Symbol.for("drizzle:IsDrizzleTable"),$c,v=class{[($c=p,rn)];[ti];[ei];[Na];[ri];[ka]=!1;[Ra]=void 0;[Oa]=!0;constructor(e,t,s){this[rn]=this[ti]=e,this[ei]=t,this[ri]=s}};o(v,"Table"),h(v,$c,"Table"),h(v,"Symbol",{Name:rn,Schema:ei,OriginalName:ti,Columns:Na,BaseName:ri,IsAlias:ka,ExtraConfigBuilder:Ra});function Ba(r){return typeof r=="object"&&r!==null&&Oa in r}o(Ba,"isTable");function it(r){return r[rn]}o(it,"getTableName");var Lc,sn=class{};o(sn,"FakePrimitiveParam"),Lc=p,h(sn,Lc,"FakePrimitiveParam");function si(r){return typeof r=="object"&&r!==null&&"getSQL"in r&&typeof r.getSQL=="function"}o(si,"isSQLWrapper");function Mc(r){let e={sql:"",params:[]};for(let t of r)e.sql+=t.sql,e.params.push(...t.params),t.typings?.length&&(e.typings||(e.typings=[]),e.typings.push(...t.typings));return e}o(Mc,"mergeQueries");var Pc,G=class{value;constructor(e){this.value=Array.isArray(e)?e:[e]}getSQL(){return new D([this])}};o(G,"StringChunk"),Pc=p,h(G,Pc,"StringChunk");var zc,hr=class{constructor(e){this.queryChunks=e}decoder=Fa;shouldInlineParams=!1;append(e){return this.queryChunks.push(...e.queryChunks),this}toQuery(e){return Ta.startActiveSpan("drizzle.buildSQL",t=>{let s=this.buildQueryFromSourceParams(this.queryChunks,e);return t?.setAttributes({"drizzle.query.text":s.sql,"drizzle.query.params":JSON.stringify(s.params)}),s})}buildQueryFromSourceParams(e,t){let s=Object.assign({},t,{inlineParams:t.inlineParams||this.shouldInlineParams,paramStartIndex:t.paramStartIndex||{value:0}}),{escapeName:n,escapeParam:i,prepareTyping:a,inlineParams:u,paramStartIndex:l}=s;return Mc(e.map(c=>{if(g(c,G))return{sql:c.value.join(""),params:[]};if(g(c,kt))return{sql:n(c.value),params:[]};if(c===void 0)return{sql:"",params:[]};if(Array.isArray(c)){let d=[new G("(")];for(let[m,x]of c.entries())d.push(x),mr},ja={mapToDriverValue:r=>r},Lv={...Fa,...ja},Uc,de=class{constructor(e,t=ja){this.value=e,this.encoder=t}brand;getSQL(){return new D([this])}};o(de,"Param"),Uc=p,h(de,Uc,"Param");function f(r,...e){let t=[];(e.length>0||r.length>0&&r[0]!=="")&&t.push(new G(r[0]));for(let[s,n]of e.entries())t.push(n,new G(r[s+1]));return new D(t)}o(f,"sql");(r=>{function e(){return new D([])}o(e,"empty"),r.empty=e;function t(l){return new D(l)}o(t,"fromList"),r.fromList=t;function s(l){return new D([new G(l)])}o(s,"raw"),r.raw=s;function n(l,c){let d=[];for(let[m,x]of l.entries())m>0&&c!==void 0&&d.push(c),d.push(x);return new D(d)}o(n,"join"),r.join=n;function i(l){return new kt(l)}o(i,"identifier"),r.identifier=i;function a(l){return new Ve(l)}o(a,"placeholder2"),r.placeholder=a;function u(l,c){return new de(l,c)}o(u,"param2"),r.param=u})(f||(f={}));(r=>{class e{constructor(s,n){this.sql=s,this.fieldAlias=n}static[p]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new e(this.sql,this.fieldAlias)}}o(e,"Aliased"),r.Aliased=e})(D||(D={}));var Vc,Ve=class{constructor(e){this.name=e}getSQL(){return new D([this])}};o(Ve,"Placeholder"),Vc=p,h(Ve,Vc,"Placeholder");function Yr(r,e){return r.map(t=>{if(g(t,Ve)){if(!(t.name in e))throw new Error(`No value for placeholder "${t.name}" was provided`);return e[t.name]}return t})}o(Yr,"fillPlaceholders");var Hc,fe=class{[(Hc=p,X)];constructor({name:e,schema:t,selectedFields:s,query:n}){this[X]={name:e,originalName:e,schema:t,selectedFields:s,query:n,isExisting:!n,isAlias:!1}}getSQL(){return new D([this])}};o(fe,"View"),h(fe,Hc,"View");B.prototype.getSQL=function(){return new D([this])};v.prototype.getSQL=function(){return new D([this])};te.prototype.getSQL=function(){return new D([this])};var Qc,He=class{constructor(e){this.table=e}get(e,t){return t==="table"?this.table:e[t]}};o(He,"ColumnAliasProxyHandler"),Qc=p,h(He,Qc,"ColumnAliasProxyHandler");var Gc,at=class{constructor(e,t){this.alias=e,this.replaceOriginalName=t}get(e,t){if(t===v.Symbol.IsAlias)return!0;if(t===v.Symbol.Name)return this.alias;if(this.replaceOriginalName&&t===v.Symbol.OriginalName)return this.alias;if(t===X)return{...e[X],name:this.alias,isAlias:!0};if(t===v.Symbol.Columns){let n=e[v.Symbol.Columns];if(!n)return n;let i={};return Object.keys(n).map(a=>{i[a]=new Proxy(n[a],new He(new Proxy(e,this)))}),i}let s=e[t];return g(s,B)?new Proxy(s,new He(new Proxy(e,this))):s}};o(at,"TableAliasProxyHandler"),Gc=p,h(at,Gc,"TableAliasProxyHandler");var Wc,nn=class{constructor(e){this.alias=e}get(e,t){return t==="sourceTable"?Xr(e.sourceTable,this.alias):e[t]}};o(nn,"RelationTableAliasProxyHandler"),Wc=p,h(nn,Wc,"RelationTableAliasProxyHandler");function Xr(r,e){return new Proxy(r,new at(e,!1))}o(Xr,"aliasedTable");function Fe(r,e){return new Proxy(r,new He(new Proxy(r.table,new at(e,!1))))}o(Fe,"aliasedTableColumn");function ni(r,e){return new D.Aliased(Zr(r.sql,e),r.fieldAlias)}o(ni,"mapColumnsInAliasedSQLToAlias");function Zr(r,e){return f.join(r.queryChunks.map(t=>g(t,B)?Fe(t,e):g(t,D)?Zr(t,e):g(t,D.Aliased)?ni(t,e):t))}o(Zr,"mapColumnsInSQLToAlias");var Jc,je=class{config;constructor(e,t,s){this.config={name:e,notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:t,columnType:s}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(e){return this.config.default=e,this.config.hasDefault=!0,this}$defaultFn(e){return this.config.defaultFn=e,this.config.hasDefault=!0,this}$default=this.$defaultFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}};o(je,"ColumnBuilder"),Jc=p,h(je,Jc,"ColumnBuilder");var Yc,Qe=class extends Error{constructor({message:e,cause:t}){super(e),this.name="DrizzleError",this.cause=t}};o(Qe,"DrizzleError"),Yc=p,h(Qe,Yc,"DrizzleError");var Xc,pr=class extends Qe{constructor(){super({message:"Rollback"})}};o(pr,"TransactionRollbackError"),Xc=p,h(pr,Xc,"TransactionRollbackError");function he(r,e){return qa(e)&&!si(r)&&!g(r,de)&&!g(r,Ve)&&!g(r,B)&&!g(r,v)&&!g(r,fe)?new de(r,e):r}o(he,"bindIfParam");var W=o((r,e)=>f`${r} = ${he(e,r)}`,"eq"),Ia=o((r,e)=>f`${r} <> ${he(e,r)}`,"ne");function Ge(...r){let e=r.filter(t=>t!==void 0);if(e.length!==0)return e.length===1?new D(e):new D([new G("("),f.join(e,new G(" and ")),new G(")")])}o(Ge,"and");function $a(...r){let e=r.filter(t=>t!==void 0);if(e.length!==0)return e.length===1?new D(e):new D([new G("("),f.join(e,new G(" or ")),new G(")")])}o($a,"or");function Ma(r){return f`not ${r}`}o(Ma,"not");var La=o((r,e)=>f`${r} > ${he(e,r)}`,"gt"),Pa=o((r,e)=>f`${r} >= ${he(e,r)}`,"gte"),an=o((r,e)=>f`${r} < ${he(e,r)}`,"lt"),za=o((r,e)=>f`${r} <= ${he(e,r)}`,"lte");function on(r,e){if(Array.isArray(e)){if(e.length===0)throw new Error("inArray requires at least one value");return f`${r} in ${e.map(t=>he(t,r))}`}return f`${r} in ${he(e,r)}`}o(on,"inArray");function Ka(r,e){if(Array.isArray(e)){if(e.length===0)throw new Error("notInArray requires at least one value");return f`${r} not in ${e.map(t=>he(t,r))}`}return f`${r} not in ${he(e,r)}`}o(Ka,"notInArray");function Ua(r){return f`${r} is null`}o(Ua,"isNull");function Va(r){return f`${r} is not null`}o(Va,"isNotNull");function Ha(r){return f`exists ${r}`}o(Ha,"exists");function Qa(r){return f`not exists ${r}`}o(Qa,"notExists");function Ga(r,e,t){return f`${r} between ${he(e,r)} and ${he(t,r)}`}o(Ga,"between");function Wa(r,e,t){return f`${r} not between ${he(e,r)} and ${he(t,r)}`}o(Wa,"notBetween");function Ja(r,e){return f`${r} like ${e}`}o(Ja,"like");function Ya(r,e){return f`${r} not like ${e}`}o(Ya,"notLike");function Xa(r,e){return f`${r} ilike ${e}`}o(Xa,"ilike");function Za(r,e){return f`${r} not ilike ${e}`}o(Za,"notIlike");function un(r){return f`${r} asc`}o(un,"asc");function es(r){return f`${r} desc`}o(es,"desc");var Zc,ts=class{write(e){console.log(e)}};o(ts,"ConsoleLogWriter"),Zc=p,h(ts,Zc,"ConsoleLogWriter");var ed,mr=class{writer;constructor(e){this.writer=e?.writer??new ts}logQuery(e,t){let s=t.map(i=>{try{return JSON.stringify(i)}catch{return String(i)}}),n=s.length?` -- params: [${s.join(", ")}]`:"";this.writer.write(`Query: ${e}${n}`)}};o(mr,"DefaultLogger"),ed=p,h(mr,ed,"DefaultLogger");var td,gr=class{logQuery(){}};o(gr,"NoopLogger"),td=p,h(gr,td,"NoopLogger");var rd,se=class{[(rd=p,Symbol.toStringTag)]="QueryPromise";catch(e){return this.then(void 0,e)}finally(e){return this.then(t=>(e?.(),t),t=>{throw e?.(),t})}then(e,t){return this.execute().then(e,t)}};o(se,"QueryPromise"),h(se,rd,"QueryPromise");var eo=Symbol.for("drizzle:PgInlineForeignKeys"),sd,De=class extends v{[(sd=p,eo)]=[];[v.Symbol.ExtraConfigBuilder]=void 0};o(De,"PgTable"),h(De,sd,"PgTable"),h(De,"Symbol",Object.assign({},v.Symbol,{InlineForeignKeys:eo}));var nd,yr=class{columns;name;constructor(e,t){this.columns=e,this.name=t}build(e){return new rs(e,this.columns,this.name)}};o(yr,"PrimaryKeyBuilder"),nd=p,h(yr,nd,"PgPrimaryKeyBuilder");var id,rs=class{constructor(e,t,s){this.table=e,this.columns=t,this.name=s}columns;name;getName(){return this.name??`${this.table[De.Symbol.Name]}_${this.columns.map(e=>e.name).join("_")}_pk`}};o(rs,"PrimaryKey"),id=p,h(rs,id,"PgPrimaryKey");var ud,br=class{constructor(e,t,s){this.sourceTable=e,this.referencedTable=t,this.relationName=s,this.referencedTableName=t[v.Symbol.Name]}referencedTableName;fieldName};o(br,"Relation"),ud=p,h(br,ud,"Relation");var ld,ss=class{constructor(e,t){this.table=e,this.config=t}};o(ss,"Relations"),ld=p,h(ss,ld,"Relations");var cd,ii=class extends br{constructor(e,t,s,n){super(e,t,s?.relationName),this.config=s,this.isNullable=n}withFieldName(e){let t=new ii(this.sourceTable,this.referencedTable,this.config,this.isNullable);return t.fieldName=e,t}},Ie=ii;o(Ie,"One"),cd=p,h(Ie,cd,"One");var dd,ai=class extends br{constructor(e,t,s){super(e,t,s?.relationName),this.config=s}withFieldName(e){let t=new ai(this.sourceTable,this.referencedTable,this.config);return t.fieldName=e,t}},Rt=ai;o(Rt,"Many"),dd=p,h(Rt,dd,"Many");function to(){return{and:Ge,between:Ga,eq:W,exists:Ha,gt:La,gte:Pa,ilike:Xa,inArray:on,isNull:Ua,isNotNull:Va,like:Ja,lt:an,lte:za,ne:Ia,not:Ma,notBetween:Wa,notExists:Qa,notLike:Ya,notIlike:Za,notInArray:Ka,or:$a,sql:f}}o(to,"getOperators");function ro(){return{sql:f,asc:un,desc:es}}o(ro,"getOrderByOperators");function so(r,e){Object.keys(r).length===1&&"default"in r&&!g(r.default,v)&&(r=r.default);let t={},s={},n={};for(let[i,a]of Object.entries(r))if(Ba(a)){let u=a[v.Symbol.Name],l=s[u];t[u]=i,n[i]={tsName:i,dbName:a[v.Symbol.Name],schema:a[v.Symbol.Schema],columns:a[v.Symbol.Columns],relations:l?.relations??{},primaryKey:l?.primaryKey??[]};for(let d of Object.values(a[v.Symbol.Columns]))d.primary&&n[i].primaryKey.push(d);let c=a[v.Symbol.ExtraConfigBuilder]?.(a);if(c)for(let d of Object.values(c))g(d,yr)&&n[i].primaryKey.push(...d.columns)}else if(g(a,ss)){let u=a.table[v.Symbol.Name],l=t[u],c=a.config(e(a.table)),d;for(let[m,x]of Object.entries(c))if(l){let N=n[l];N.relations[m]=x,d&&N.primaryKey.push(...d)}else u in s||(s[u]={relations:{},primaryKey:d}),s[u].relations[m]=x}return{tables:n,tableNamesMap:t}}o(so,"extractTablesRelationalConfig");function ad(r){return o(function(t,s){return new Ie(r,t,s,s?.fields.reduce((n,i)=>n&&i.notNull,!0)??!1)},"one")}o(ad,"createOne");function od(r){return o(function(t,s){return new Rt(r,t,s)},"many")}o(od,"createMany");function no(r,e,t){if(g(t,Ie)&&t.config)return{fields:t.config.fields,references:t.config.references};let s=e[t.referencedTable[v.Symbol.Name]];if(!s)throw new Error(`Table "${t.referencedTable[v.Symbol.Name]}" not found in schema`);let n=r[s];if(!n)throw new Error(`Table "${s}" not found in schema`);let i=t.sourceTable,a=e[i[v.Symbol.Name]];if(!a)throw new Error(`Table "${i[v.Symbol.Name]}" not found in schema`);let u=[];for(let l of Object.values(n.relations))(t.relationName&&t!==l&&l.relationName===t.relationName||!t.relationName&&l.referencedTable===t.sourceTable)&&u.push(l);if(u.length>1)throw t.relationName?new Error(`There are multiple relations with name "${t.relationName}" in table "${s}"`):new Error(`There are multiple relations between "${s}" and "${t.sourceTable[v.Symbol.Name]}". Please specify relation name`);if(u[0]&&g(u[0],Ie)&&u[0].config)return{fields:u[0].config.references,references:u[0].config.fields};throw new Error(`There is not enough information to infer relation "${a}.${t.fieldName}"`)}o(no,"normalizeRelation");function io(r){return{one:ad(r),many:od(r)}}o(io,"createTableRelationsHelpers");function ln(r,e,t,s,n=i=>i){let i={};for(let[a,u]of s.entries())if(u.isJson){let l=e.relations[u.tsKey],c=t[a],d=typeof c=="string"?JSON.parse(c):c;i[u.tsKey]=g(l,Ie)?d&&ln(r,r[u.relationTableTsKey],d,u.selection,n):d.map(m=>ln(r,r[u.relationTableTsKey],m,u.selection,n))}else{let l=n(t[a]),c=u.field,d;g(c,B)?d=c:g(c,D)?d=c.decoder:d=c.sql.decoder,i[u.tsKey]=l===null?null:d.mapFromDriverValue(l)}return i}o(ln,"mapRelationalRow");function oi(r){return f`count(${r||f.raw("*")})`.mapWith(Number)}o(oi,"count");function cn(r,e,t){let s={},n=r.reduce((i,{path:a,field:u},l)=>{let c;g(u,B)?c=u:g(u,D)?c=u.decoder:c=u.sql.decoder;let d=i;for(let[m,x]of a.entries())if(m0)for(let[i,a]of Object.entries(s))typeof a=="string"&&!t[a]&&(n[i]=null);return n}o(cn,"mapResultRow");function _e(r,e){return Object.entries(r).reduce((t,[s,n])=>{if(typeof s!="string")return t;let i=e?[...e,s]:[s];return g(n,B)||g(n,D)||g(n,D.Aliased)?t.push({path:i,field:n}):g(n,v)?t.push(..._e(n[v.Symbol.Columns],i)):t.push(..._e(n,i)),t},[])}o(_e,"orderSelectedFields");function ui(r,e){let t=Object.keys(r),s=Object.keys(e);if(t.length!==s.length)return!1;for(let[n,i]of t.entries())if(i!==s[n])return!1;return!0}o(ui,"haveSameKeys");function dn(r,e){let t=Object.entries(e).filter(([,s])=>s!==void 0).map(([s,n])=>g(n,D)?[s,n]:[s,new de(n,r[v.Symbol.Columns][s])]);if(t.length===0)throw new Error("No values to set");return Object.fromEntries(t)}o(dn,"mapUpdateSet");function ao(r,e){for(let t of e)for(let s of Object.getOwnPropertyNames(t.prototype))s!=="constructor"&&Object.defineProperty(r.prototype,s,Object.getOwnPropertyDescriptor(t.prototype,s)||Object.create(null))}o(ao,"applyMixins");function fn(r){return r[v.Symbol.Columns]}o(fn,"getTableColumns");function li(r){return g(r,te)?r[Y].alias:g(r,fe)?r[X].name:g(r,D)?void 0:r[v.Symbol.IsAlias]?r[v.Symbol.Name]:r[v.Symbol.BaseName]}o(li,"getTableLikeName");var ci=Symbol.for("drizzle:SQLiteInlineForeignKeys"),hd,V=class extends v{[(hd=p,v.Symbol.Columns)];[ci]=[];[v.Symbol.ExtraConfigBuilder]=void 0};o(V,"SQLiteTable"),h(V,hd,"SQLiteTable"),h(V,"Symbol",Object.assign({},v.Symbol,{InlineForeignKeys:ci}));function fd(r,e,t,s,n=r){let i=new V(r,s,n),a=Object.fromEntries(Object.entries(e).map(([l,c])=>{let d=c,m=d.build(i);return i[ci].push(...d.buildForeignKeys(m,i)),[l,m]})),u=Object.assign(i,a);return u[v.Symbol.Columns]=a,t&&(u[V.Symbol.ExtraConfigBuilder]=t),u}o(fd,"sqliteTableBase");var ns=o((r,e,t)=>fd(r,e,t),"sqliteTable");var pd,xr=class{reference;_onUpdate;_onDelete;constructor(e,t){this.reference=()=>{let{name:s,columns:n,foreignColumns:i}=e();return{name:s,columns:n,foreignTable:i[0].table,foreignColumns:i}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=e,this}onDelete(e){return this._onDelete=e,this}build(e){return new is(e,this)}};o(xr,"ForeignKeyBuilder"),pd=p,h(xr,pd,"SQLiteForeignKeyBuilder");var md,is=class{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:s}=this.reference(),n=t.map(u=>u.name),i=s.map(u=>u.name),a=[this.table[V.Symbol.Name],...n,s[0].table[V.Symbol.Name],...i];return e??`${a.join("_")}_fk`}};o(is,"ForeignKey"),md=p,h(is,md,"SQLiteForeignKey");function di(r,e){return`${r[V.Symbol.Name]}_${e.join("_")}_unique`}o(di,"uniqueKeyName");var gd,as=class{constructor(e,t){this.name=t,this.columns=e}columns;build(e){return new os(e,this.columns,this.name)}};o(as,"UniqueConstraintBuilder"),gd=p,h(as,gd,"SQLiteUniqueConstraintBuilder");var yd,hn=class{name;constructor(e){this.name=e}on(...e){return new as(e,this.name)}};o(hn,"UniqueOnConstraintBuilder"),yd=p,h(hn,yd,"SQLiteUniqueOnConstraintBuilder");var bd,os=class{constructor(e,t,s){this.table=e,this.columns=t,this.name=s??di(this.table,this.columns.map(n=>n.name))}columns;name;getName(){return this.name}};o(os,"UniqueConstraint"),bd=p,h(os,bd,"SQLiteUniqueConstraint");var xd,We=class extends je{foreignKeyConfigs=[];references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e){return this.config.isUnique=!0,this.config.uniqueName=e,this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:s,actions:n})=>((i,a)=>{let u=new xr(()=>{let l=i();return{columns:[e],foreignColumns:[l]}});return a.onUpdate&&u.onUpdate(a.onUpdate),a.onDelete&&u.onDelete(a.onDelete),u.build(t)})(s,n))}};o(We,"SQLiteColumnBuilder"),xd=p,h(We,xd,"SQLiteColumnBuilder");var vd,ye=class extends B{constructor(e,t){t.uniqueName||(t.uniqueName=di(e,[t.name])),super(e,t),this.table=e}};o(ye,"SQLiteColumn"),vd=p,h(ye,vd,"SQLiteColumn");var wd,Ot=class extends We{constructor(e,t,s){super(e,t,s),this.config.autoIncrement=!1}primaryKey(e){return e?.autoIncrement&&(this.config.autoIncrement=!0),this.config.hasDefault=!0,super.primaryKey()}};o(Ot,"SQLiteBaseIntegerBuilder"),wd=p,h(Ot,wd,"SQLiteBaseIntegerBuilder");var Ad,Bt=class extends ye{autoIncrement=this.config.autoIncrement;getSQLType(){return"integer"}};o(Bt,"SQLiteBaseInteger"),Ad=p,h(Bt,Ad,"SQLiteBaseInteger");var Dd,us=class extends Ot{constructor(e){super(e,"number","SQLiteInteger")}build(e){return new ls(e,this.config)}};o(us,"SQLiteIntegerBuilder"),Dd=p,h(us,Dd,"SQLiteIntegerBuilder");var _d,ls=class extends Bt{};o(ls,"SQLiteInteger"),_d=p,h(ls,_d,"SQLiteInteger");var Ed,cs=class extends Ot{constructor(e,t){super(e,"date","SQLiteTimestamp"),this.config.mode=t}defaultNow(){return this.default(f`(cast((julianday('now') - 2440587.5)*86400000 as integer))`)}build(e){return new ds(e,this.config)}};o(cs,"SQLiteTimestampBuilder"),Ed=p,h(cs,Ed,"SQLiteTimestampBuilder");var Cd,ds=class extends Bt{mode=this.config.mode;mapFromDriverValue(e){return this.config.mode==="timestamp"?new Date(e*1e3):new Date(e)}mapToDriverValue(e){let t=e.getTime();return this.config.mode==="timestamp"?Math.floor(t/1e3):t}};o(ds,"SQLiteTimestamp"),Cd=p,h(ds,Cd,"SQLiteTimestamp");var Sd,fs=class extends Ot{constructor(e,t){super(e,"boolean","SQLiteBoolean"),this.config.mode=t}build(e){return new hs(e,this.config)}};o(fs,"SQLiteBooleanBuilder"),Sd=p,h(fs,Sd,"SQLiteBooleanBuilder");var Td,hs=class extends Bt{mode=this.config.mode;mapFromDriverValue(e){return Number(e)===1}mapToDriverValue(e){return e?1:0}};o(hs,"SQLiteBoolean"),Td=p,h(hs,Td,"SQLiteBoolean");function ne(r,e){return e?.mode==="timestamp"||e?.mode==="timestamp_ms"?new cs(r,e.mode):e?.mode==="boolean"?new fs(r,e.mode):new us(r)}o(ne,"integer");var Nd,ps=class extends We{constructor(e,t){super(e,"string","SQLiteText"),this.config.enumValues=t.enum,this.config.length=t.length}build(e){return new qt(e,this.config)}};o(ps,"SQLiteTextBuilder"),Nd=p,h(ps,Nd,"SQLiteTextBuilder");var kd,qt=class extends ye{enumValues=this.config.enumValues;length=this.config.length;constructor(e,t){super(e,t)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}};o(qt,"SQLiteText"),kd=p,h(qt,kd,"SQLiteText");var Rd,ms=class extends We{constructor(e){super(e,"json","SQLiteTextJson")}build(e){return new gs(e,this.config)}};o(ms,"SQLiteTextJsonBuilder"),Rd=p,h(ms,Rd,"SQLiteTextJsonBuilder");var Od,gs=class extends ye{getSQLType(){return"text"}mapFromDriverValue(e){return JSON.parse(e)}mapToDriverValue(e){return JSON.stringify(e)}};o(gs,"SQLiteTextJson"),Od=p,h(gs,Od,"SQLiteTextJson");function I(r,e={}){return e.mode==="json"?new ms(r):new ps(r,e)}o(I,"text");var Bd,fi=class{config;constructor(e){this.config={...e}}get(e,t){if(t===Y)return{...e[Y],selection:new Proxy(e[Y].selection,this)};if(t===X)return{...e[X],selectedFields:new Proxy(e[X].selectedFields,this)};if(typeof t=="symbol")return e[t];let n=(g(e,te)?e[Y].selection:g(e,fe)?e[X].selectedFields:e)[t];if(g(n,D.Aliased)){if(this.config.sqlAliasedBehavior==="sql"&&!n.isSelectionField)return n.sql;let i=n.clone();return i.isSelectionField=!0,i}if(g(n,D)){if(this.config.sqlBehavior==="sql")return n;throw new Error(`You tried to reference "${t}" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using ".as('alias')" method.`)}return g(n,B)?this.config.alias?new Proxy(n,new He(new Proxy(n.table,new at(this.config.alias,this.config.replaceOriginalName??!1)))):n:typeof n!="object"||n===null?n:new Proxy(n,new fi(this.config))}},oe=fi;o(oe,"SelectionProxyHandler"),Bd=p,h(oe,Bd,"SelectionProxyHandler");var qd,Ft=class extends se{constructor(e,t,s,n){super(),this.table=e,this.session=t,this.dialect=s,this.config={table:e,withList:n}}config;where(e){return this.config.where=e,this}returning(e=this.table[V.Symbol.Columns]){return this.config.returning=_e(e),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run")}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(e){return this._prepare().execute(e)}$dynamic(){return this}};o(Ft,"SQLiteDeleteBase"),qd=p,h(Ft,qd,"SQLiteDelete");var Fd,jt=class{constructor(e,t,s,n){this.table=e,this.session=t,this.dialect=s,this.withList=n}values(e){if(e=Array.isArray(e)?e:[e],e.length===0)throw new Error("values() must be called with at least one value");let t=e.map(s=>{let n={},i=this.table[v.Symbol.Columns];for(let a of Object.keys(s)){let u=s[a];n[a]=g(u,D)?u:new de(u,i[a])}return n});return new ys(this.table,t,this.session,this.dialect,this.withList)}};o(jt,"SQLiteInsertBuilder"),Fd=p,h(jt,Fd,"SQLiteInsertBuilder");var jd,ys=class extends se{constructor(e,t,s,n,i){super(),this.session=s,this.dialect=n,this.config={table:e,values:t,withList:i}}config;returning(e=this.config.table[V.Symbol.Columns]){return this.config.returning=_e(e),this}onConflictDoNothing(e={}){if(e.target===void 0)this.config.onConflict=f`do nothing`;else{let t=Array.isArray(e.target)?f`${e.target}`:f`${[e.target]}`,s=e.where?f` where ${e.where}`:f``;this.config.onConflict=f`${t} do nothing${s}`}return this}onConflictDoUpdate(e){let t=Array.isArray(e.target)?f`${e.target}`:f`${[e.target]}`,s=e.where?f` where ${e.where}`:f``,n=this.dialect.buildUpdateSet(this.config.table,dn(this.config.table,e.set));return this.config.onConflict=f`${t} do update set ${n}${s}`,this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run")}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}};o(ys,"SQLiteInsertBase"),jd=p,h(ys,jd,"SQLiteInsert");var Id,ot=class extends fe{};o(ot,"SQLiteViewBase"),Id=p,h(ot,Id,"SQLiteViewBase");var $d,vr=class{escapeName(e){return`"${e}"`}escapeParam(e){return"?"}escapeString(e){return`'${e.replace(/'/g,"''")}'`}buildWithCTE(e){if(!e?.length)return;let t=[f`with `];for(let[s,n]of e.entries())t.push(f`${f.identifier(n[Y].alias)} as (${n[Y].sql})`),s{let l=e[v.Symbol.Columns][i],c=f`${f.identifier(l.name)} = ${a}`;return u{let u=[];if(g(i,D.Aliased)&&i.isSelectionField)u.push(f.identifier(i.fieldAlias));else if(g(i,D.Aliased)||g(i,D)){let l=g(i,D.Aliased)?i.sql:i;t?u.push(new D(l.queryChunks.map(c=>g(c,B)?f.identifier(c.name):c))):u.push(l),g(i,D.Aliased)&&u.push(f` as ${f.identifier(i.fieldAlias)}`)}else if(g(i,B)){let l=i.table[v.Symbol.Name],c=i.name;t?u.push(f.identifier(c)):u.push(f`${f.identifier(l)}.${f.identifier(c)}`)}return au?.some(({alias:Ke})=>Ke===(ee[v.Symbol.IsAlias]?it(ee):ee[v.Symbol.BaseName])))(ae.field.table)){let ee=it(ae.field.table);throw new Error(`Your "${ae.path.join("->")}" field references a column "${ee}"."${ae.field.name}", but the table "${ee}" is not part of the query! Did you forget to join it?`)}let O=!u||u.length===0,q=this.buildWithCTE(e),M=x?f` distinct`:void 0,z=this.buildSelection(C,{isSingleTable:O}),j=(()=>g(a,v)&&a[v.Symbol.OriginalName]!==a[v.Symbol.Name]?f`${f.identifier(a[v.Symbol.OriginalName])} ${f.identifier(a[v.Symbol.Name])}`:a)(),$=[];if(u)for(let[ae,ee]of u.entries()){ae===0&&$.push(f` `);let Ke=ee.table;if(g(Ke,V)){let Bn=Ke[V.Symbol.Name],Fi=Ke[V.Symbol.Schema],ji=Ke[V.Symbol.OriginalName],Ii=Bn===ji?void 0:ee.alias;$.push(f`${f.raw(ee.joinType)} join ${Fi?f`${f.identifier(Fi)}.`:void 0}${f.identifier(ji)}${Ii&&f` ${f.identifier(Ii)}`} on ${ee.on}`)}else $.push(f`${f.raw(ee.joinType)} join ${Ke} on ${ee.on}`);ae0?f` group by ${f.join(J)}`:void 0,Ms=F.length>0?f` order by ${f.join(F)}`:void 0,Hr=d?f` limit ${d}`:void 0,Ls=m?f` offset ${m}`:void 0,Ps=f`${q}select${M} ${z} from ${j}${Ce}${Ae}${ar}${S}${Ms}${Hr}${Ls}`;return N.length>0?this.buildSetOperations(Ps,N):Ps}buildSetOperations(e,t){let[s,...n]=t;if(!s)throw new Error("Cannot pass undefined values to any set operator");return n.length===0?this.buildSetOperationQuery({leftSelect:e,setOperator:s}):this.buildSetOperations(this.buildSetOperationQuery({leftSelect:e,setOperator:s}),n)}buildSetOperationQuery({leftSelect:e,setOperator:{type:t,isAll:s,rightSelect:n,limit:i,orderBy:a,offset:u}}){let l=f`${e.getSQL()} `,c=f`${n.getSQL()}`,d;if(a&&a.length>0){let C=[];for(let O of a)if(g(O,ye))C.push(f.identifier(O.name));else if(g(O,D)){for(let q=0;qf.identifier(C.name));for(let[C,O]of t.entries()){let q=[];for(let[M,z]of l){let j=O[M];if(j===void 0||g(j,de)&&j.value===void 0){let $;if(z.default!==null&&z.default!==void 0)$=g(z.default,D)?z.default:f.param(z.default,z);else if(z.defaultFn!==void 0){let Ce=z.defaultFn();$=g(Ce,D)?Ce:f.param(Ce,z)}else $=f`null`;q.push($)}else q.push(j)}a.push(q),C({dbKey:j.name,tsKey:z,field:Fe(j,u),relationTableTsKey:void 0,isJson:!1,selection:[]}));else{let M=Object.fromEntries(Object.entries(i.columns).map(([S,F])=>[S,Fe(F,u)]));if(a.where){let S=typeof a.where=="function"?a.where(M,to()):a.where;C=S&&Zr(S,u)}let z=[],j=[];if(a.columns){let S=!1;for(let[F,J]of Object.entries(a.columns))J!==void 0&&F in i.columns&&(!S&&J===!0&&(S=!0),j.push(F));j.length>0&&(j=S?j.filter(F=>a.columns?.[F]===!0):Object.keys(i.columns).filter(F=>!j.includes(F)))}else j=Object.keys(i.columns);for(let S of j){let F=i.columns[S];z.push({tsKey:S,value:F})}let $=[];a.with&&($=Object.entries(a.with).filter(S=>!!S[1]).map(([S,F])=>({tsKey:S,queryConfig:F,relation:i.relations[S]})));let Ce;if(a.extras){Ce=typeof a.extras=="function"?a.extras(M,{sql:f}):a.extras;for(let[S,F]of Object.entries(Ce))z.push({tsKey:S,value:ni(F,u)})}for(let{tsKey:S,value:F}of z)d.push({dbKey:g(F,D.Aliased)?F.fieldAlias:i.columns[S].name,tsKey:S,field:g(F,B)?Fe(F,u):F,relationTableTsKey:void 0,isJson:!1,selection:[]});let Ae=typeof a.orderBy=="function"?a.orderBy(M,ro()):a.orderBy??[];Array.isArray(Ae)||(Ae=[Ae]),N=Ae.map(S=>g(S,B)?Fe(S,u):Zr(S,u)),m=a.limit,x=a.offset;for(let{tsKey:S,queryConfig:F,relation:J}of $){let ar=no(t,s,J),Ms=J.referencedTable[v.Symbol.Name],Hr=s[Ms],Ls=`${u}_${S}`,Ps=Ge(...ar.fields.map((Ke,Bn)=>W(Fe(ar.references[Bn],Ls),Fe(Ke,u)))),ae=this.buildRelationalQuery({fullSchema:e,schema:t,tableNamesMap:s,table:e[Hr],tableConfig:t[Hr],queryConfig:g(J,Ie)?F===!0?{limit:1}:{...F,limit:1}:F,tableAlias:Ls,joinOn:Ps,nestedQueryRelation:J}),ee=f`(${ae.sql})`.as(S);d.push({dbKey:S,tsKey:S,field:ee,relationTableTsKey:Hr,isJson:!0,selection:ae.selection})}}if(d.length===0)throw new Qe({message:`No fields selected for table "${i.tsName}" ("${u}"). You need to have at least one item in "columns", "with" or "extras". If you need to select all columns, omit the "columns" key or set it to undefined.`});let q;if(C=Ge(c,C),l){let M=f`json_array(${f.join(d.map(({field:$})=>g($,ye)?f.identifier($.name):g($,D.Aliased)?$.sql:$),f`, `)})`;g(l,Rt)&&(M=f`coalesce(json_group_array(${M}), json_array())`);let z=[{dbKey:"data",tsKey:"data",field:M.as("data"),isJson:!0,relationTableTsKey:i.tsName,selection:d}];m!==void 0||x!==void 0||N.length>0?(q=this.buildSelectQuery({table:Xr(n,u),fields:{},fieldsFlat:[{path:[],field:f.raw("*")}],where:C,limit:m,offset:x,orderBy:N,setOperators:[]}),C=void 0,m=void 0,x=void 0,N=void 0):q=Xr(n,u),q=this.buildSelectQuery({table:g(q,V)?q:new te(q,{},u),fields:{},fieldsFlat:z.map(({field:$})=>({path:[],field:g($,B)?Fe($,u):$})),joins:O,where:C,limit:m,offset:x,orderBy:N,setOperators:[]})}else q=this.buildSelectQuery({table:Xr(n,u),fields:{},fieldsFlat:d.map(({field:M})=>({path:[],field:g(M,B)?Fe(M,u):M})),joins:O,where:C,limit:m,offset:x,orderBy:N,setOperators:[]});return{tableTsKey:i.tsName,sql:q,selection:d}}};o(vr,"SQLiteDialect"),$d=p,h(vr,$d,"SQLiteDialect");var Md,wr=class extends vr{migrate(e,t,s){let n=s===void 0||typeof s=="string"?"__drizzle_migrations":s.migrationsTable??"__drizzle_migrations",i=f` - CREATE TABLE IF NOT EXISTS ${f.identifier(n)} ( - id SERIAL PRIMARY KEY, - hash text NOT NULL, - created_at numeric - ) - `;t.run(i);let u=t.values(f`SELECT id, hash, created_at FROM ${f.identifier(n)} ORDER BY created_at DESC LIMIT 1`)[0]??void 0;t.run(f`BEGIN`);try{for(let l of e)if(!u||Number(u[2]){for(let c of e)if(!u||Number(u[2])[n,e[n]])):g(e,ot)?s=e[X].selectedFields:g(e,D)?s={}:s=fn(e),new _r({table:e,fields:s,isPartialSelect:t,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}};o(pe,"SQLiteSelectBuilder"),Qd=p,h(pe,Qd,"SQLiteSelectBuilder");var Gd,bs=class extends Dr{_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;constructor({table:e,fields:t,isPartialSelect:s,session:n,dialect:i,withList:a,distinct:u}){super(),this.config={withList:a,table:e,fields:{...t},distinct:u,setOperators:[]},this.isPartialSelect=s,this.session=n,this.dialect=i,this._={selectedFields:t},this.tableName=li(e),this.joinsNotNullableMap=typeof this.tableName=="string"?{[this.tableName]:!0}:{}}createJoin(e){return(t,s)=>{let n=this.tableName,i=li(t);if(typeof i=="string"&&this.config.joins?.some(a=>a.alias===i))throw new Error(`Alias "${i}" is already used in this query`);if(!this.isPartialSelect&&(Object.keys(this.joinsNotNullableMap).length===1&&typeof n=="string"&&(this.config.fields={[n]:this.config.fields}),typeof i=="string"&&!g(t,D))){let a=g(t,te)?t[Y].selection:g(t,fe)?t[X].selectedFields:t[v.Symbol.Columns];this.config.fields[i]=a}if(typeof s=="function"&&(s=s(new Proxy(this.config.fields,new oe({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:s,table:t,joinType:e,alias:i}),typeof i=="string")switch(e){case"left":{this.joinsNotNullableMap[i]=!1;break}case"right":{this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[i]=!0;break}case"inner":{this.joinsNotNullableMap[i]=!0;break}case"full":{this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[i]=!1;break}}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");createSetOperator(e,t){return s=>{let n=typeof s=="function"?s(zd()):s;if(!ui(this.getSelectedFields(),n.getSelectedFields()))throw new Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:e,isAll:t,rightSelect:n}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(e){return this.config.setOperators.push(...e),this}where(e){return typeof e=="function"&&(e=e(new Proxy(this.config.fields,new oe({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=e,this}having(e){return typeof e=="function"&&(e=e(new Proxy(this.config.fields,new oe({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=e,this}groupBy(...e){if(typeof e[0]=="function"){let t=e[0](new Proxy(this.config.fields,new oe({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(t)?t:[t]}else this.config.groupBy=e;return this}orderBy(...e){if(typeof e[0]=="function"){let t=e[0](new Proxy(this.config.fields,new oe({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),s=Array.isArray(t)?t:[t];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=s:this.config.orderBy=s}else{let t=e;this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=t:this.config.orderBy=t}return this}limit(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=e:this.config.limit=e,this}offset(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=e:this.config.offset=e,this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}as(e){return new Proxy(new te(this.getSQL(),this.config.fields,e),new oe({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new oe({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}};o(bs,"SQLiteSelectQueryBuilderBase"),Gd=p,h(bs,Gd,"SQLiteSelectQueryBuilder");var Wd,_r=class extends bs{_prepare(e=!0){if(!this.session)throw new Error("Cannot execute a query on a query builder. Please use a database instance instead.");let t=_e(this.config.fields),s=this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),t,"all");return s.joinsNotNullableMap=this.joinsNotNullableMap,s}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.all()}};o(_r,"SQLiteSelectBase"),Wd=p,h(_r,Wd,"SQLiteSelect");ao(_r,[se]);function pn(r,e){return(t,s,...n)=>{let i=[s,...n].map(a=>({type:r,isAll:e,rightSelect:a}));for(let a of i)if(!ui(t.getSelectedFields(),a.rightSelect.getSelectedFields()))throw new Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return t.addSetOperators(i)}}o(pn,"createSetOperator");var zd=o(()=>({union:Kd,unionAll:Ud,intersect:Vd,except:Hd}),"getSQLiteSetOperators"),Kd=pn("union",!1),Ud=pn("union",!0),Vd=pn("intersect",!1),Hd=pn("except",!1);var Jd,Er=class{dialect;$with(e){let t=this;return{as(s){return typeof s=="function"&&(s=s(t)),new Proxy(new nt(s.getSQL(),s.getSelectedFields(),e,!0),new oe({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}}}with(...e){let t=this;function s(i){return new pe({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e})}o(s,"select");function n(i){return new pe({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e,distinct:!0})}return o(n,"selectDistinct"),{select:s,selectDistinct:n}}select(e){return new pe({fields:e??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(e){return new pe({fields:e??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){return this.dialect||(this.dialect=new wr),this.dialect}};o(Er,"QueryBuilder"),Jd=p,h(Er,Jd,"SQLiteQueryBuilder");var Yd,It=class{constructor(e,t,s,n){this.table=e,this.session=t,this.dialect=s,this.withList=n}set(e){return new xs(this.table,dn(this.table,e),this.session,this.dialect,this.withList)}};o(It,"SQLiteUpdateBuilder"),Yd=p,h(It,Yd,"SQLiteUpdateBuilder");var Xd,xs=class extends se{constructor(e,t,s,n,i){super(),this.session=s,this.dialect=n,this.config={set:t,table:e,withList:i}}config;where(e){return this.config.where=e,this}returning(e=this.config.table[V.Symbol.Columns]){return this.config.returning=_e(e),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run")}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}};o(xs,"SQLiteUpdateBase"),Xd=p,h(xs,Xd,"SQLiteUpdate");var Zd,Cr=class{constructor(e,t,s,n,i,a,u,l){this.mode=e,this.fullSchema=t,this.schema=s,this.tableNamesMap=n,this.table=i,this.tableConfig=a,this.dialect=u,this.session=l}findMany(e){return this.mode==="sync"?new Sr(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many"):new $t(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many")}findFirst(e){return this.mode==="sync"?new Sr(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first"):new $t(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first")}};o(Cr,"RelationalQueryBuilder"),Zd=p,h(Cr,Zd,"SQLiteAsyncRelationalQueryBuilder");var ef,$t=class extends se{constructor(e,t,s,n,i,a,u,l,c){super(),this.fullSchema=e,this.schema=t,this.tableNamesMap=s,this.table=n,this.tableConfig=i,this.dialect=a,this.session=u,this.config=l,this.mode=c}mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(e=!1){let{query:t,builtQuery:s}=this._toSQL();return this.session[e?"prepareOneTimeQuery":"prepareQuery"](s,void 0,this.mode==="first"?"get":"all",(n,i)=>{let a=n.map(u=>ln(this.schema,this.tableConfig,u,t.selection,i));return this.mode==="first"?a[0]:a})}prepare(){return this._prepare(!1)}_toSQL(){let e=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),t=this.dialect.sqlToQuery(e.sql);return{query:e,builtQuery:t}}toSQL(){return this._toSQL().builtQuery}executeRaw(){return this.mode==="first"?this._prepare(!1).get():this._prepare(!1).all()}async execute(){return this.executeRaw()}};o($t,"SQLiteRelationalQuery"),ef=p,h($t,ef,"SQLiteAsyncRelationalQuery");var tf,Sr=class extends $t{sync(){return this.executeRaw()}};o(Sr,"SQLiteSyncRelationalQuery"),tf=p,h(Sr,tf,"SQLiteSyncRelationalQuery");var rf,Je=class extends se{constructor(e,t,s,n,i){super(),this.execute=e,this.getSQL=t,this.dialect=n,this.mapBatchResult=i,this.config={action:s}}config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(e,t){return t?this.mapBatchResult(e):e}_prepare(){return this}};o(Je,"SQLiteRaw"),rf=p,h(Je,rf,"SQLiteRaw");var sf,ut=class{constructor(e,t,s,n){this.resultKind=e,this.dialect=t,this.session=s,this._=n?{schema:n.schema,tableNamesMap:n.tableNamesMap}:{schema:void 0,tableNamesMap:{}},this.query={};let i=this.query;if(this._.schema)for(let[a,u]of Object.entries(this._.schema))i[a]=new Cr(e,n.fullSchema,this._.schema,this._.tableNamesMap,n.fullSchema[a],u,t,s)}query;$with(e){return{as(t){return typeof t=="function"&&(t=t(new Er)),new Proxy(new nt(t.getSQL(),t.getSelectedFields(),e,!0),new oe({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}}}with(...e){let t=this;function s(l){return new pe({fields:l??void 0,session:t.session,dialect:t.dialect,withList:e})}o(s,"select");function n(l){return new pe({fields:l??void 0,session:t.session,dialect:t.dialect,withList:e,distinct:!0})}o(n,"selectDistinct");function i(l){return new It(l,t.session,t.dialect,e)}o(i,"update");function a(l){return new jt(l,t.session,t.dialect,e)}o(a,"insert");function u(l){return new Ft(l,t.session,t.dialect,e)}return o(u,"delete_"),{select:s,selectDistinct:n,update:i,insert:a,delete:u}}select(e){return new pe({fields:e??void 0,session:this.session,dialect:this.dialect})}selectDistinct(e){return new pe({fields:e??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(e){return new It(e,this.session,this.dialect)}insert(e){return new jt(e,this.session,this.dialect)}delete(e){return new Ft(e,this.session,this.dialect)}run(e){let t=e.getSQL();return this.resultKind==="async"?new Je(async()=>this.session.run(t),()=>t,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session)):this.session.run(t)}all(e){let t=e.getSQL();return this.resultKind==="async"?new Je(async()=>this.session.all(t),()=>t,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session)):this.session.all(t)}get(e){let t=e.getSQL();return this.resultKind==="async"?new Je(async()=>this.session.get(t),()=>t,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session)):this.session.get(t)}values(e){let t=e.getSQL();return this.resultKind==="async"?new Je(async()=>this.session.values(t),()=>t,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session)):this.session.values(t)}transaction(e,t){return this.session.transaction(e,t)}};o(ut,"BaseSQLiteDatabase"),sf=p,h(ut,sf,"BaseSQLiteDatabase");var nf,vs=class extends se{constructor(e){super(),this.resultCb=e}async execute(){return this.resultCb()}sync(){return this.resultCb()}};o(vs,"ExecuteResultSync"),nf=p,h(vs,nf,"ExecuteResultSync");var af,Tr=class{constructor(e,t,s){this.mode=e,this.executeMethod=t,this.query=s}joinsNotNullableMap;getQuery(){return this.query}mapRunResult(e,t){return e}mapAllResult(e,t){throw new Error("Not implemented")}mapGetResult(e,t){throw new Error("Not implemented")}execute(e){return this.mode==="async"?this[this.executeMethod](e):new vs(()=>this[this.executeMethod](e))}mapResult(e,t){switch(this.executeMethod){case"run":return this.mapRunResult(e,t);case"all":return this.mapAllResult(e,t);case"get":return this.mapGetResult(e,t)}}};o(Tr,"SQLitePreparedQuery"),af=p,h(Tr,af,"PreparedQuery");var of,Nr=class{constructor(e){this.dialect=e}prepareOneTimeQuery(e,t,s){return this.prepareQuery(e,t,s)}run(e){let t=this.dialect.sqlToQuery(e);try{return this.prepareOneTimeQuery(t,void 0,"run").run()}catch(s){throw new Qe({cause:s,message:`Failed to run the query '${t.sql}'`})}}extractRawRunValueFromBatchResult(e){return e}all(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run").all()}extractRawAllValueFromBatchResult(e){throw new Error("Not implemented")}get(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run").get()}extractRawGetValueFromBatchResult(e){throw new Error("Not implemented")}values(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run").values()}extractRawValuesValueFromBatchResult(e){throw new Error("Not implemented")}};o(Nr,"SQLiteSession"),of=p,h(Nr,of,"SQLiteSession");var uf,kr=class extends ut{constructor(e,t,s,n,i=0){super(e,t,s,n),this.schema=n,this.nestedIndex=i}rollback(){throw new pr}};o(kr,"SQLiteTransaction"),uf=p,h(kr,uf,"SQLiteTransaction");var oo=Symbol.for("drizzle:MySqlInlineForeignKeys"),lf,$e=class extends v{[(lf=p,v.Symbol.Columns)];[oo]=[];[v.Symbol.ExtraConfigBuilder]=void 0};o($e,"MySqlTable"),h($e,lf,"MySqlTable"),h($e,"Symbol",Object.assign({},v.Symbol,{InlineForeignKeys:oo}));var cf,Rr=class{reference;_onUpdate;_onDelete;constructor(e,t){this.reference=()=>{let{name:s,columns:n,foreignColumns:i}=e();return{name:s,columns:n,foreignTable:i[0].table,foreignColumns:i}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=e,this}onDelete(e){return this._onDelete=e,this}build(e){return new ws(e,this)}};o(Rr,"ForeignKeyBuilder"),cf=p,h(Rr,cf,"MySqlForeignKeyBuilder");var df,ws=class{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:s}=this.reference(),n=t.map(u=>u.name),i=s.map(u=>u.name),a=[this.table[$e.Symbol.Name],...n,s[0].table[$e.Symbol.Name],...i];return e??`${a.join("_")}_fk`}};o(ws,"ForeignKey"),df=p,h(ws,df,"MySqlForeignKey");function hi(r,e){return`${r[$e.Symbol.Name]}_${e.join("_")}_unique`}o(hi,"uniqueKeyName");var ff,As=class{constructor(e,t){this.name=t,this.columns=e}columns;build(e){return new Ds(e,this.columns,this.name)}};o(As,"UniqueConstraintBuilder"),ff=p,h(As,ff,"MySqlUniqueConstraintBuilder");var hf,mn=class{name;constructor(e){this.name=e}on(...e){return new As(e,this.name)}};o(mn,"UniqueOnConstraintBuilder"),hf=p,h(mn,hf,"MySqlUniqueOnConstraintBuilder");var pf,Ds=class{constructor(e,t,s){this.table=e,this.columns=t,this.name=s??hi(this.table,this.columns.map(n=>n.name))}columns;name;nullsNotDistinct=!1;getName(){return this.name}};o(Ds,"UniqueConstraint"),pf=p,h(Ds,pf,"MySqlUniqueConstraint");var mf,Se=class extends je{foreignKeyConfigs=[];references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e){return this.config.isUnique=!0,this.config.uniqueName=e,this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:s,actions:n})=>((i,a)=>{let u=new Rr(()=>{let l=i();return{columns:[e],foreignColumns:[l]}});return a.onUpdate&&u.onUpdate(a.onUpdate),a.onDelete&&u.onDelete(a.onDelete),u.build(t)})(s,n))}};o(Se,"MySqlColumnBuilder"),mf=p,h(Se,mf,"MySqlColumnBuilder");var gf,Te=class extends B{constructor(e,t){t.uniqueName||(t.uniqueName=hi(e,[t.name])),super(e,t),this.table=e}};o(Te,"MySqlColumn"),gf=p,h(Te,gf,"MySqlColumn");var yf,gn=class extends Se{constructor(e,t,s){super(e,t,s),this.config.autoIncrement=!1}autoincrement(){return this.config.autoIncrement=!0,this.config.hasDefault=!0,this}};o(gn,"MySqlColumnBuilderWithAutoIncrement"),yf=p,h(gn,yf,"MySqlColumnBuilderWithAutoIncrement");var bf,yn=class extends Te{autoIncrement=this.config.autoIncrement};o(yn,"MySqlColumnWithAutoIncrement"),bf=p,h(yn,bf,"MySqlColumnWithAutoIncrement");var xf,bn=class extends Se{constructor(e,t){super(e,"string","MySqlChar"),this.config.length=t.length,this.config.enum=t.enum}build(e){return new Mt(e,this.config)}};o(bn,"MySqlCharBuilder"),xf=p,h(bn,xf,"MySqlCharBuilder");var vf,Mt=class extends Te{length=this.config.length;enumValues=this.config.enum;getSQLType(){return this.length===void 0?"char":`char(${this.length})`}};o(Mt,"MySqlChar"),vf=p,h(Mt,vf,"MySqlChar");var wf,xn=class extends Se{constructor(e,t){super(e,"string","MySqlVarBinary"),this.config.length=t?.length}build(e){return new Lt(e,this.config)}};o(xn,"MySqlVarBinaryBuilder"),wf=p,h(xn,wf,"MySqlVarBinaryBuilder");var Af,Lt=class extends Te{length=this.config.length;getSQLType(){return this.length===void 0?"varbinary":`varbinary(${this.length})`}};o(Lt,"MySqlVarBinary"),Af=p,h(Lt,Af,"MySqlVarBinary");var Df,vn=class extends Se{constructor(e,t){super(e,"string","MySqlVarChar"),this.config.length=t.length,this.config.enum=t.enum}build(e){return new Pt(e,this.config)}};o(vn,"MySqlVarCharBuilder"),Df=p,h(vn,Df,"MySqlVarCharBuilder");var _f,Pt=class extends Te{length=this.config.length;enumValues=this.config.enum;getSQLType(){return this.length===void 0?"varchar":`varchar(${this.length})`}};o(Pt,"MySqlVarChar"),_f=p,h(Pt,_f,"MySqlVarChar");var Ef,Or=class{reference;_onUpdate="no action";_onDelete="no action";constructor(e,t){this.reference=()=>{let{name:s,columns:n,foreignColumns:i}=e();return{name:s,columns:n,foreignTable:i[0].table,foreignColumns:i}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=e===void 0?"no action":e,this}onDelete(e){return this._onDelete=e===void 0?"no action":e,this}build(e){return new _s(e,this)}};o(Or,"ForeignKeyBuilder"),Ef=p,h(Or,Ef,"PgForeignKeyBuilder");var Cf,_s=class{constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}reference;onUpdate;onDelete;getName(){let{name:e,columns:t,foreignColumns:s}=this.reference(),n=t.map(u=>u.name),i=s.map(u=>u.name),a=[this.table[De.Symbol.Name],...n,s[0].table[De.Symbol.Name],...i];return e??`${a.join("_")}_fk`}};o(_s,"ForeignKey"),Cf=p,h(_s,Cf,"PgForeignKey");function pi(r,e){return`${r[De.Symbol.Name]}_${e.join("_")}_unique`}o(pi,"uniqueKeyName");var Sf,Es=class{constructor(e,t){this.name=t,this.columns=e}columns;nullsNotDistinctConfig=!1;nullsNotDistinct(){return this.nullsNotDistinctConfig=!0,this}build(e){return new Cs(e,this.columns,this.nullsNotDistinctConfig,this.name)}};o(Es,"UniqueConstraintBuilder"),Sf=p,h(Es,Sf,"PgUniqueConstraintBuilder");var Tf,wn=class{name;constructor(e){this.name=e}on(...e){return new Es(e,this.name)}};o(wn,"UniqueOnConstraintBuilder"),Tf=p,h(wn,Tf,"PgUniqueOnConstraintBuilder");var Nf,Cs=class{constructor(e,t,s,n){this.table=e,this.columns=t,this.name=n??pi(this.table,this.columns.map(i=>i.name)),this.nullsNotDistinct=s}columns;name;nullsNotDistinct=!1;getName(){return this.name}};o(Cs,"UniqueConstraint"),Nf=p,h(Cs,Nf,"PgUniqueConstraint");function uo(r,e,t){for(let s=e;sArray.isArray(e)?mi(e):typeof e=="string"?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:`${e}`).join(",")}}`}o(mi,"makePgArray");var kf,Ne=class extends je{foreignKeyConfigs=[];array(e){return new Ss(this.config.name,this,e)}references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e,t){return this.config.isUnique=!0,this.config.uniqueName=e,this.config.uniqueType=t?.nulls,this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:s,actions:n})=>tn((i,a)=>{let u=new Or(()=>{let l=i();return{columns:[e],foreignColumns:[l]}});return a.onUpdate&&u.onUpdate(a.onUpdate),a.onDelete&&u.onDelete(a.onDelete),u.build(t)},s,n))}};o(Ne,"PgColumnBuilder"),kf=p,h(Ne,kf,"PgColumnBuilder");var Rf,ke=class extends B{constructor(e,t){t.uniqueName||(t.uniqueName=pi(e,[t.name])),super(e,t),this.table=e}};o(ke,"PgColumn"),Rf=p,h(ke,Rf,"PgColumn");var Of,Ss=class extends Ne{constructor(e,t,s){super(e,"array","PgArray"),this.config.baseBuilder=t,this.config.size=s}build(e){let t=this.config.baseBuilder.build(e);return new Ts(e,this.config,t)}};o(Ss,"PgArrayBuilder"),Of=p,h(Ss,Of,"PgArrayBuilder");var Bf,gi=class extends ke{constructor(e,t,s,n){super(e,t),this.baseColumn=s,this.range=n,this.size=t.size}size;getSQLType(){return`${this.baseColumn.getSQLType()}[${typeof this.size=="number"?this.size:""}]`}mapFromDriverValue(e){return typeof e=="string"&&(e=co(e)),e.map(t=>this.baseColumn.mapFromDriverValue(t))}mapToDriverValue(e,t=!1){let s=e.map(n=>n===null?null:g(this.baseColumn,gi)?this.baseColumn.mapToDriverValue(n,!0):this.baseColumn.mapToDriverValue(n));return t?s:mi(s)}},Ts=gi;o(Ts,"PgArray"),Bf=p,h(Ts,Bf,"PgArray");var qf,An=class extends Ne{constructor(e,t){super(e,"string","PgChar"),this.config.length=t.length,this.config.enumValues=t.enum}build(e){return new zt(e,this.config)}};o(An,"PgCharBuilder"),qf=p,h(An,qf,"PgCharBuilder");var Ff,zt=class extends ke{length=this.config.length;enumValues=this.config.enumValues;getSQLType(){return this.length===void 0?"char":`char(${this.length})`}};o(zt,"PgChar"),Ff=p,h(zt,Ff,"PgChar");var jf,Dn=class extends Ne{constructor(e){super(e,"string","PgUUID")}defaultRandom(){return this.default(f`gen_random_uuid()`)}build(e){return new Kt(e,this.config)}};o(Dn,"PgUUIDBuilder"),jf=p,h(Dn,jf,"PgUUIDBuilder");var If,Kt=class extends ke{getSQLType(){return"uuid"}};o(Kt,"PgUUID"),If=p,h(Kt,If,"PgUUID");var $f,_n=class extends Ne{constructor(e,t){super(e,"string","PgVarchar"),this.config.length=t.length,this.config.enumValues=t.enum}build(e){return new Ut(e,this.config)}};o(_n,"PgVarcharBuilder"),$f=p,h(_n,$f,"PgVarcharBuilder");var Mf,Ut=class extends ke{length=this.config.length;enumValues=this.config.enumValues;getSQLType(){return this.length===void 0?"varchar":`varchar(${this.length})`}};o(Ut,"PgVarchar"),Mf=p,h(Ut,Mf,"PgVarchar");var H={};lu(H,{BRAND:()=>dh,DIRTY:()=>Vt,EMPTY_PATH:()=>Kf,INVALID:()=>_,NEVER:()=>Hh,OK:()=>ue,ParseStatus:()=>Z,Schema:()=>k,ZodAny:()=>Ze,ZodArray:()=>ge,ZodBigInt:()=>Oe,ZodBoolean:()=>ct,ZodBranded:()=>jr,ZodCatch:()=>vt,ZodDate:()=>Le,ZodDefault:()=>xt,ZodDiscriminatedUnion:()=>Gt,ZodEffects:()=>ve,ZodEnum:()=>Be,ZodError:()=>ie,ZodFirstPartyTypeKind:()=>E,ZodFunction:()=>et,ZodIntersection:()=>pt,ZodIssueCode:()=>y,ZodLazy:()=>gt,ZodLiteral:()=>yt,ZodMap:()=>Wt,ZodNaN:()=>Jt,ZodNativeEnum:()=>bt,ZodNever:()=>Ee,ZodNull:()=>ft,ZodNullable:()=>qe,ZodNumber:()=>Re,ZodObject:()=>P,ZodOptional:()=>we,ZodParsedType:()=>w,ZodPipeline:()=>wt,ZodPromise:()=>tt,ZodReadonly:()=>At,ZodRecord:()=>mt,ZodSchema:()=>k,ZodSet:()=>ze,ZodString:()=>me,ZodSymbol:()=>Ht,ZodTransformer:()=>ve,ZodTuple:()=>xe,ZodType:()=>k,ZodUndefined:()=>dt,ZodUnion:()=>ht,ZodUnknown:()=>Pe,ZodVoid:()=>Qt,addIssueToContext:()=>b,any:()=>vh,array:()=>Yt,bigint:()=>mh,boolean:()=>wo,coerce:()=>Vh,custom:()=>xo,date:()=>gh,datetimeRegex:()=>yo,defaultErrorMap:()=>Ye,discriminatedUnion:()=>Ch,effect:()=>Ih,enum:()=>qh,function:()=>Rh,getErrorMap:()=>Br,getParsedType:()=>Me,instanceof:()=>hh,intersection:()=>Sh,isAborted:()=>En,isAsync:()=>qr,isDirty:()=>Cn,isValid:()=>lt,late:()=>fh,lazy:()=>Oh,literal:()=>Bh,makeIssue:()=>Ns,map:()=>Nh,nan:()=>ph,nativeEnum:()=>Fh,never:()=>Ah,null:()=>xh,nullable:()=>Mh,number:()=>vo,object:()=>vi,objectUtil:()=>yi,oboolean:()=>Uh,onumber:()=>Kh,optional:()=>$h,ostring:()=>zh,pipeline:()=>Ph,preprocess:()=>Lh,promise:()=>jh,quotelessJson:()=>Lf,record:()=>wi,set:()=>kh,setErrorMap:()=>zf,strictObject:()=>_h,string:()=>Ir,symbol:()=>yh,transformer:()=>Ih,tuple:()=>Th,undefined:()=>bh,union:()=>Eh,unknown:()=>wh,util:()=>R,void:()=>Dh});var R;(function(r){r.assertEqual=n=>{};function e(n){}o(e,"assertIs"),r.assertIs=e;function t(n){throw new Error}o(t,"assertNever"),r.assertNever=t,r.arrayToEnum=n=>{let i={};for(let a of n)i[a]=a;return i},r.getValidEnumValues=n=>{let i=r.objectKeys(n).filter(u=>typeof n[n[u]]!="number"),a={};for(let u of i)a[u]=n[u];return r.objectValues(a)},r.objectValues=n=>r.objectKeys(n).map(function(i){return n[i]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let i=[];for(let a in n)Object.prototype.hasOwnProperty.call(n,a)&&i.push(a);return i},r.find=(n,i)=>{for(let a of n)if(i(a))return a},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function s(n,i=" | "){return n.map(a=>typeof a=="string"?`'${a}'`:a).join(i)}o(s,"joinValues"),r.joinValues=s,r.jsonStringifyReplacer=(n,i)=>typeof i=="bigint"?i.toString():i})(R||(R={}));var yi;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(yi||(yi={}));var w=R.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Me=o(r=>{switch(typeof r){case"undefined":return w.undefined;case"string":return w.string;case"number":return Number.isNaN(r)?w.nan:w.number;case"boolean":return w.boolean;case"function":return w.function;case"bigint":return w.bigint;case"symbol":return w.symbol;case"object":return Array.isArray(r)?w.array:r===null?w.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?w.promise:typeof Map<"u"&&r instanceof Map?w.map:typeof Set<"u"&&r instanceof Set?w.set:typeof Date<"u"&&r instanceof Date?w.date:w.object;default:return w.unknown}},"getParsedType");var y=R.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Lf=o(r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),"quotelessJson"),ie=class extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(i){return i.message},s={_errors:[]},n=o(i=>{for(let a of i.issues)if(a.code==="invalid_union")a.unionErrors.map(n);else if(a.code==="invalid_return_type")n(a.returnTypeError);else if(a.code==="invalid_arguments")n(a.argumentsError);else if(a.path.length===0)s._errors.push(t(a));else{let u=s,l=0;for(;lt.message){let t={},s=[];for(let n of this.issues)if(n.path.length>0){let i=n.path[0];t[i]=t[i]||[],t[i].push(e(n))}else s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};o(ie,"ZodError");ie.create=r=>new ie(r);var Pf=o((r,e)=>{let t;switch(r.code){case y.invalid_type:r.received===w.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case y.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,R.jsonStringifyReplacer)}`;break;case y.unrecognized_keys:t=`Unrecognized key(s) in object: ${R.joinValues(r.keys,", ")}`;break;case y.invalid_union:t="Invalid input";break;case y.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${R.joinValues(r.options)}`;break;case y.invalid_enum_value:t=`Invalid enum value. Expected ${R.joinValues(r.options)}, received '${r.received}'`;break;case y.invalid_arguments:t="Invalid function arguments";break;case y.invalid_return_type:t="Invalid function return type";break;case y.invalid_date:t="Invalid date";break;case y.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:R.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case y.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="bigint"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case y.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case y.custom:t="Invalid input";break;case y.invalid_intersection_types:t="Intersection results could not be merged";break;case y.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case y.not_finite:t="Number must be finite";break;default:t=e.defaultError,R.assertNever(r)}return{message:t}},"errorMap"),Ye=Pf;var fo=Ye;function zf(r){fo=r}o(zf,"setErrorMap");function Br(){return fo}o(Br,"getErrorMap");var Ns=o(r=>{let{data:e,path:t,errorMaps:s,issueData:n}=r,i=[...t,...n.path||[]],a={...n,path:i};if(n.message!==void 0)return{...n,path:i,message:n.message};let u="",l=s.filter(c=>!!c).slice().reverse();for(let c of l)u=c(a,{data:e,defaultError:u}).message;return{...n,path:i,message:u}},"makeIssue"),Kf=[];function b(r,e){let t=Br(),s=Ns({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===Ye?void 0:Ye].filter(n=>!!n)});r.common.issues.push(s)}o(b,"addIssueToContext");var Z=class{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let n of t){if(n.status==="aborted")return _;n.status==="dirty"&&e.dirty(),s.push(n.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let n of t){let i=await n.key,a=await n.value;s.push({key:i,value:a})}return Z.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let n of t){let{key:i,value:a}=n;if(i.status==="aborted"||a.status==="aborted")return _;i.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof a.value<"u"||n.alwaysSet)&&(s[i.value]=a.value)}return{status:e.value,value:s}}};o(Z,"ParseStatus");var _=Object.freeze({status:"aborted"}),Vt=o(r=>({status:"dirty",value:r}),"DIRTY"),ue=o(r=>({status:"valid",value:r}),"OK"),En=o(r=>r.status==="aborted","isAborted"),Cn=o(r=>r.status==="dirty","isDirty"),lt=o(r=>r.status==="valid","isValid"),qr=o(r=>typeof Promise<"u"&&r instanceof Promise,"isAsync");var A;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message})(A||(A={}));var be=class{constructor(e,t,s,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};o(be,"ParseInputLazyPath");var ho=o((r,e)=>{if(lt(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new ie(r.common.issues);return this._error=t,this._error}}},"handleResult");function T(r){if(!r)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:o((a,u)=>{let{message:l}=r;return a.code==="invalid_enum_value"?{message:l??u.defaultError}:typeof u.data>"u"?{message:l??s??u.defaultError}:a.code!=="invalid_type"?{message:u.defaultError}:{message:l??t??u.defaultError}},"customMap"),description:n}}o(T,"processCreateParams");var k=class{get description(){return this._def.description}_getType(e){return Me(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Me(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Z,ctx:{common:e.parent.common,data:e.data,parsedType:Me(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(qr(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Me(e)},n=this._parseSync({data:e,path:s.path,parent:s});return ho(s,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Me(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return lt(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>lt(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Me(e)},n=this._parse({data:e,path:s.path,parent:s}),i=await(qr(n)?n:Promise.resolve(n));return ho(s,i)}refine(e,t){let s=o(n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t,"getIssueProperties");return this._refinement((n,i)=>{let a=e(n),u=o(()=>i.addIssue({code:y.custom,...s(n)}),"setError");return typeof Promise<"u"&&a instanceof Promise?a.then(l=>l?!0:(u(),!1)):a?!0:(u(),!1)})}refinement(e,t){return this._refinement((s,n)=>e(s)?!0:(n.addIssue(typeof t=="function"?t(s,n):t),!1))}_refinement(e){return new ve({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return we.create(this,this._def)}nullable(){return qe.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ge.create(this)}promise(){return tt.create(this,this._def)}or(e){return ht.create([this,e],this._def)}and(e){return pt.create(this,e,this._def)}transform(e){return new ve({...T(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new xt({...T(this._def),innerType:this,defaultValue:t,typeName:E.ZodDefault})}brand(){return new jr({typeName:E.ZodBranded,type:this,...T(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new vt({...T(this._def),innerType:this,catchValue:t,typeName:E.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return wt.create(this,e)}readonly(){return At.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};o(k,"ZodType");var Uf=/^c[^\s-]{8,}$/i,Vf=/^[0-9a-z]+$/,Hf=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Qf=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Gf=/^[a-z0-9_-]{21}$/i,Wf=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Jf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Yf=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Xf="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",bi,Zf=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,eh=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,th=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,rh=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,sh=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,nh=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mo="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ih=new RegExp(`^${mo}$`);function go(r){let e="[0-5]\\d";r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`);let t=r.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}o(go,"timeRegexSource");function ah(r){return new RegExp(`^${go(r)}$`)}o(ah,"timeRegex");function yo(r){let e=`${mo}T${go(r)}`,t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}o(yo,"datetimeRegex");function oh(r,e){return!!((e==="v4"||!e)&&Zf.test(r)||(e==="v6"||!e)&&th.test(r))}o(oh,"isValidIP");function uh(r,e){if(!Wf.test(r))return!1;try{let[t]=r.split(".");if(!t)return!1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),n=JSON.parse(atob(s));return!(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return!1}}o(uh,"isValidJWT");function lh(r,e){return!!((e==="v4"||!e)&&eh.test(r)||(e==="v6"||!e)&&rh.test(r))}o(lh,"isValidCidr");var me=class extends k{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==w.string){let i=this._getOrReturnCtx(e);return b(i,{code:y.invalid_type,expected:w.string,received:i.parsedType}),_}let s=new Z,n;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(n=this._getOrReturnCtx(e,n),b(n,{code:y.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),s.dirty());else if(i.kind==="length"){let a=e.data.length>i.value,u=e.data.lengthe.test(n),{validation:t,code:y.invalid_string,...A.errToObj(s)})}_addCheck(e){return new me({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...A.errToObj(e)})}url(e){return this._addCheck({kind:"url",...A.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...A.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...A.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...A.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...A.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...A.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...A.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...A.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...A.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...A.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...A.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...A.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...A.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...A.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...A.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...A.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...A.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...A.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...A.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...A.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...A.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...A.errToObj(t)})}nonempty(e){return this.min(1,A.errToObj(e))}trim(){return new me({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new me({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new me({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew me({checks:[],typeName:E.ZodString,coerce:r?.coerce??!1,...T(r)});function ch(r,e){let t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,i=Number.parseInt(r.toFixed(n).replace(".","")),a=Number.parseInt(e.toFixed(n).replace(".",""));return i%a/10**n}o(ch,"floatSafeRemainder");var Re=class extends k{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==w.number){let i=this._getOrReturnCtx(e);return b(i,{code:y.invalid_type,expected:w.number,received:i.parsedType}),_}let s,n=new Z;for(let i of this._def.checks)i.kind==="int"?R.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),b(s,{code:y.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(s=this._getOrReturnCtx(e,s),b(s,{code:y.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind==="multipleOf"?ch(e.data,i.value)!==0&&(s=this._getOrReturnCtx(e,s),b(s,{code:y.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),b(s,{code:y.not_finite,message:i.message}),n.dirty()):R.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,A.toString(t))}gt(e,t){return this.setLimit("min",e,!1,A.toString(t))}lte(e,t){return this.setLimit("max",e,!0,A.toString(t))}lt(e,t){return this.setLimit("max",e,!1,A.toString(t))}setLimit(e,t,s,n){return new Re({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:A.toString(n)}]})}_addCheck(e){return new Re({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:A.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:A.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:A.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:A.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:A.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:A.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:A.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:A.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:A.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int"||e.kind==="multipleOf"&&R.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.valuenew Re({checks:[],typeName:E.ZodNumber,coerce:r?.coerce||!1,...T(r)});var Oe=class extends k{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==w.bigint)return this._getInvalidInput(e);let s,n=new Z;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(s=this._getOrReturnCtx(e,s),b(s,{code:y.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),b(s,{code:y.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):R.assertNever(i);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return b(t,{code:y.invalid_type,expected:w.bigint,received:t.parsedType}),_}gte(e,t){return this.setLimit("min",e,!0,A.toString(t))}gt(e,t){return this.setLimit("min",e,!1,A.toString(t))}lte(e,t){return this.setLimit("max",e,!0,A.toString(t))}lt(e,t){return this.setLimit("max",e,!1,A.toString(t))}setLimit(e,t,s,n){return new Oe({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:A.toString(n)}]})}_addCheck(e){return new Oe({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:A.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:A.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:A.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:A.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:A.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Oe({checks:[],typeName:E.ZodBigInt,coerce:r?.coerce??!1,...T(r)});var ct=class extends k{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==w.boolean){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.boolean,received:s.parsedType}),_}return ue(e.data)}};o(ct,"ZodBoolean");ct.create=r=>new ct({typeName:E.ZodBoolean,coerce:r?.coerce||!1,...T(r)});var Le=class extends k{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==w.date){let i=this._getOrReturnCtx(e);return b(i,{code:y.invalid_type,expected:w.date,received:i.parsedType}),_}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return b(i,{code:y.invalid_date}),_}let s=new Z,n;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(n=this._getOrReturnCtx(e,n),b(n,{code:y.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),s.dirty()):R.assertNever(i);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Le({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:A.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:A.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Le({checks:[],coerce:r?.coerce||!1,typeName:E.ZodDate,...T(r)});var Ht=class extends k{_parse(e){if(this._getType(e)!==w.symbol){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.symbol,received:s.parsedType}),_}return ue(e.data)}};o(Ht,"ZodSymbol");Ht.create=r=>new Ht({typeName:E.ZodSymbol,...T(r)});var dt=class extends k{_parse(e){if(this._getType(e)!==w.undefined){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.undefined,received:s.parsedType}),_}return ue(e.data)}};o(dt,"ZodUndefined");dt.create=r=>new dt({typeName:E.ZodUndefined,...T(r)});var ft=class extends k{_parse(e){if(this._getType(e)!==w.null){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.null,received:s.parsedType}),_}return ue(e.data)}};o(ft,"ZodNull");ft.create=r=>new ft({typeName:E.ZodNull,...T(r)});var Ze=class extends k{constructor(){super(...arguments),this._any=!0}_parse(e){return ue(e.data)}};o(Ze,"ZodAny");Ze.create=r=>new Ze({typeName:E.ZodAny,...T(r)});var Pe=class extends k{constructor(){super(...arguments),this._unknown=!0}_parse(e){return ue(e.data)}};o(Pe,"ZodUnknown");Pe.create=r=>new Pe({typeName:E.ZodUnknown,...T(r)});var Ee=class extends k{_parse(e){let t=this._getOrReturnCtx(e);return b(t,{code:y.invalid_type,expected:w.never,received:t.parsedType}),_}};o(Ee,"ZodNever");Ee.create=r=>new Ee({typeName:E.ZodNever,...T(r)});var Qt=class extends k{_parse(e){if(this._getType(e)!==w.undefined){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.void,received:s.parsedType}),_}return ue(e.data)}};o(Qt,"ZodVoid");Qt.create=r=>new Qt({typeName:E.ZodVoid,...T(r)});var ge=class extends k{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==w.array)return b(t,{code:y.invalid_type,expected:w.array,received:t.parsedType}),_;if(n.exactLength!==null){let a=t.data.length>n.exactLength.value,u=t.data.lengthn.maxLength.value&&(b(t,{code:y.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((a,u)=>n.type._parseAsync(new be(t,a,t.path,u)))).then(a=>Z.mergeArray(s,a));let i=[...t.data].map((a,u)=>n.type._parseSync(new be(t,a,t.path,u)));return Z.mergeArray(s,i)}get element(){return this._def.type}min(e,t){return new ge({...this._def,minLength:{value:e,message:A.toString(t)}})}max(e,t){return new ge({...this._def,maxLength:{value:e,message:A.toString(t)}})}length(e,t){return new ge({...this._def,exactLength:{value:e,message:A.toString(t)}})}nonempty(e){return this.min(1,e)}};o(ge,"ZodArray");ge.create=(r,e)=>new ge({type:r,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...T(e)});function Fr(r){if(r instanceof P){let e={};for(let t in r.shape){let s=r.shape[t];e[t]=we.create(Fr(s))}return new P({...r._def,shape:()=>e})}else return r instanceof ge?new ge({...r._def,type:Fr(r.element)}):r instanceof we?we.create(Fr(r.unwrap())):r instanceof qe?qe.create(Fr(r.unwrap())):r instanceof xe?xe.create(r.items.map(e=>Fr(e))):r}o(Fr,"deepPartialify");var P=class extends k{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=R.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==w.object){let c=this._getOrReturnCtx(e);return b(c,{code:y.invalid_type,expected:w.object,received:c.parsedType}),_}let{status:s,ctx:n}=this._processInputParams(e),{shape:i,keys:a}=this._getCached(),u=[];if(!(this._def.catchall instanceof Ee&&this._def.unknownKeys==="strip"))for(let c in n.data)a.includes(c)||u.push(c);let l=[];for(let c of a){let d=i[c],m=n.data[c];l.push({key:{status:"valid",value:c},value:d._parse(new be(n,m,n.path,c)),alwaysSet:c in n.data})}if(this._def.catchall instanceof Ee){let c=this._def.unknownKeys;if(c==="passthrough")for(let d of u)l.push({key:{status:"valid",value:d},value:{status:"valid",value:n.data[d]}});else if(c==="strict")u.length>0&&(b(n,{code:y.unrecognized_keys,keys:u}),s.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let d of u){let m=n.data[d];l.push({key:{status:"valid",value:d},value:c._parse(new be(n,m,n.path,d)),alwaysSet:d in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let c=[];for(let d of l){let m=await d.key,x=await d.value;c.push({key:m,value:x,alwaysSet:d.alwaysSet})}return c}).then(c=>Z.mergeObjectSync(s,c)):Z.mergeObjectSync(s,l)}get shape(){return this._def.shape()}strict(e){return A.errToObj,new P({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let n=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:A.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new P({...this._def,unknownKeys:"strip"})}passthrough(){return new P({...this._def,unknownKeys:"passthrough"})}extend(e){return new P({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new P({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:E.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new P({...this._def,catchall:e})}pick(e){let t={};for(let s of R.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new P({...this._def,shape:()=>t})}omit(e){let t={};for(let s of R.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new P({...this._def,shape:()=>t})}deepPartial(){return Fr(this)}partial(e){let t={};for(let s of R.objectKeys(this.shape)){let n=this.shape[s];e&&!e[s]?t[s]=n:t[s]=n.optional()}return new P({...this._def,shape:()=>t})}required(e){let t={};for(let s of R.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let i=this.shape[s];for(;i instanceof we;)i=i._def.innerType;t[s]=i}return new P({...this._def,shape:()=>t})}keyof(){return bo(R.objectKeys(this.shape))}};o(P,"ZodObject");P.create=(r,e)=>new P({shape:()=>r,unknownKeys:"strip",catchall:Ee.create(),typeName:E.ZodObject,...T(e)});P.strictCreate=(r,e)=>new P({shape:()=>r,unknownKeys:"strict",catchall:Ee.create(),typeName:E.ZodObject,...T(e)});P.lazycreate=(r,e)=>new P({shape:r,unknownKeys:"strip",catchall:Ee.create(),typeName:E.ZodObject,...T(e)});var ht=class extends k{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function n(i){for(let u of i)if(u.result.status==="valid")return u.result;for(let u of i)if(u.result.status==="dirty")return t.common.issues.push(...u.ctx.common.issues),u.result;let a=i.map(u=>new ie(u.ctx.common.issues));return b(t,{code:y.invalid_union,unionErrors:a}),_}if(o(n,"handleResults"),t.common.async)return Promise.all(s.map(async i=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await i._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(n);{let i,a=[];for(let l of s){let c={...t,common:{...t.common,issues:[]},parent:null},d=l._parseSync({data:t.data,path:t.path,parent:c});if(d.status==="valid")return d;d.status==="dirty"&&!i&&(i={result:d,ctx:c}),c.common.issues.length&&a.push(c.common.issues)}if(i)return t.common.issues.push(...i.ctx.common.issues),i.result;let u=a.map(l=>new ie(l));return b(t,{code:y.invalid_union,unionErrors:u}),_}}get options(){return this._def.options}};o(ht,"ZodUnion");ht.create=(r,e)=>new ht({options:r,typeName:E.ZodUnion,...T(e)});var Xe=o(r=>r instanceof gt?Xe(r.schema):r instanceof ve?Xe(r.innerType()):r instanceof yt?[r.value]:r instanceof Be?r.options:r instanceof bt?R.objectValues(r.enum):r instanceof xt?Xe(r._def.innerType):r instanceof dt?[void 0]:r instanceof ft?[null]:r instanceof we?[void 0,...Xe(r.unwrap())]:r instanceof qe?[null,...Xe(r.unwrap())]:r instanceof jr||r instanceof At?Xe(r.unwrap()):r instanceof vt?Xe(r._def.innerType):[],"getDiscriminator"),Gt=class extends k{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.object)return b(t,{code:y.invalid_type,expected:w.object,received:t.parsedType}),_;let s=this.discriminator,n=t.data[s],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(b(t,{code:y.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let n=new Map;for(let i of t){let a=Xe(i.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let u of a){if(n.has(u))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(u)}`);n.set(u,i)}}return new Gt({typeName:E.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...T(s)})}};o(Gt,"ZodDiscriminatedUnion");function xi(r,e){let t=Me(r),s=Me(e);if(r===e)return{valid:!0,data:r};if(t===w.object&&s===w.object){let n=R.objectKeys(e),i=R.objectKeys(r).filter(u=>n.indexOf(u)!==-1),a={...r,...e};for(let u of i){let l=xi(r[u],e[u]);if(!l.valid)return{valid:!1};a[u]=l.data}return{valid:!0,data:a}}else if(t===w.array&&s===w.array){if(r.length!==e.length)return{valid:!1};let n=[];for(let i=0;i{if(En(i)||En(a))return _;let u=xi(i.value,a.value);return u.valid?((Cn(i)||Cn(a))&&t.dirty(),{status:t.value,value:u.data}):(b(s,{code:y.invalid_intersection_types}),_)},"handleParsed");return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([i,a])=>n(i,a)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};o(pt,"ZodIntersection");pt.create=(r,e,t)=>new pt({left:r,right:e,typeName:E.ZodIntersection,...T(t)});var xe=class extends k{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.array)return b(s,{code:y.invalid_type,expected:w.array,received:s.parsedType}),_;if(s.data.lengththis._def.items.length&&(b(s,{code:y.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let i=[...s.data].map((a,u)=>{let l=this._def.items[u]||this._def.rest;return l?l._parse(new be(s,a,s.path,u)):null}).filter(a=>!!a);return s.common.async?Promise.all(i).then(a=>Z.mergeArray(t,a)):Z.mergeArray(t,i)}get items(){return this._def.items}rest(e){return new xe({...this._def,rest:e})}};o(xe,"ZodTuple");xe.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new xe({items:r,typeName:E.ZodTuple,rest:null,...T(e)})};var mt=class extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.object)return b(s,{code:y.invalid_type,expected:w.object,received:s.parsedType}),_;let n=[],i=this._def.keyType,a=this._def.valueType;for(let u in s.data)n.push({key:i._parse(new be(s,u,s.path,u)),value:a._parse(new be(s,s.data[u],s.path,u)),alwaysSet:u in s.data});return s.common.async?Z.mergeObjectAsync(t,n):Z.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof k?new mt({keyType:e,valueType:t,typeName:E.ZodRecord,...T(s)}):new mt({keyType:me.create(),valueType:e,typeName:E.ZodRecord,...T(t)})}};o(mt,"ZodRecord");var Wt=class extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.map)return b(s,{code:y.invalid_type,expected:w.map,received:s.parsedType}),_;let n=this._def.keyType,i=this._def.valueType,a=[...s.data.entries()].map(([u,l],c)=>({key:n._parse(new be(s,u,s.path,[c,"key"])),value:i._parse(new be(s,l,s.path,[c,"value"]))}));if(s.common.async){let u=new Map;return Promise.resolve().then(async()=>{for(let l of a){let c=await l.key,d=await l.value;if(c.status==="aborted"||d.status==="aborted")return _;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),u.set(c.value,d.value)}return{status:t.value,value:u}})}else{let u=new Map;for(let l of a){let c=l.key,d=l.value;if(c.status==="aborted"||d.status==="aborted")return _;(c.status==="dirty"||d.status==="dirty")&&t.dirty(),u.set(c.value,d.value)}return{status:t.value,value:u}}}};o(Wt,"ZodMap");Wt.create=(r,e,t)=>new Wt({valueType:e,keyType:r,typeName:E.ZodMap,...T(t)});var ze=class extends k{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.set)return b(s,{code:y.invalid_type,expected:w.set,received:s.parsedType}),_;let n=this._def;n.minSize!==null&&s.data.sizen.maxSize.value&&(b(s,{code:y.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(l){let c=new Set;for(let d of l){if(d.status==="aborted")return _;d.status==="dirty"&&t.dirty(),c.add(d.value)}return{status:t.value,value:c}}o(a,"finalizeSet");let u=[...s.data.values()].map((l,c)=>i._parse(new be(s,l,s.path,c)));return s.common.async?Promise.all(u).then(l=>a(l)):a(u)}min(e,t){return new ze({...this._def,minSize:{value:e,message:A.toString(t)}})}max(e,t){return new ze({...this._def,maxSize:{value:e,message:A.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};o(ze,"ZodSet");ze.create=(r,e)=>new ze({valueType:r,minSize:null,maxSize:null,typeName:E.ZodSet,...T(e)});var et=class extends k{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.function)return b(t,{code:y.invalid_type,expected:w.function,received:t.parsedType}),_;function s(u,l){return Ns({data:u,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Br(),Ye].filter(c=>!!c),issueData:{code:y.invalid_arguments,argumentsError:l}})}o(s,"makeArgsIssue");function n(u,l){return Ns({data:u,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Br(),Ye].filter(c=>!!c),issueData:{code:y.invalid_return_type,returnTypeError:l}})}o(n,"makeReturnsIssue");let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof tt){let u=this;return ue(async function(...l){let c=new ie([]),d=await u._def.args.parseAsync(l,i).catch(N=>{throw c.addIssue(s(l,N)),c}),m=await Reflect.apply(a,this,d);return await u._def.returns._def.type.parseAsync(m,i).catch(N=>{throw c.addIssue(n(m,N)),c})})}else{let u=this;return ue(function(...l){let c=u._def.args.safeParse(l,i);if(!c.success)throw new ie([s(l,c.error)]);let d=Reflect.apply(a,this,c.data),m=u._def.returns.safeParse(d,i);if(!m.success)throw new ie([n(d,m.error)]);return m.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new et({...this._def,args:xe.create(e).rest(Pe.create())})}returns(e){return new et({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new et({args:e||xe.create([]).rest(Pe.create()),returns:t||Pe.create(),typeName:E.ZodFunction,...T(s)})}};o(et,"ZodFunction");var gt=class extends k{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};o(gt,"ZodLazy");gt.create=(r,e)=>new gt({getter:r,typeName:E.ZodLazy,...T(e)});var yt=class extends k{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return b(t,{received:t.data,code:y.invalid_literal,expected:this._def.value}),_}return{status:"valid",value:e.data}}get value(){return this._def.value}};o(yt,"ZodLiteral");yt.create=(r,e)=>new yt({value:r,typeName:E.ZodLiteral,...T(e)});function bo(r,e){return new Be({values:r,typeName:E.ZodEnum,...T(e)})}o(bo,"createZodEnum");var Be=class extends k{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return b(t,{expected:R.joinValues(s),received:t.parsedType,code:y.invalid_type}),_}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return b(t,{received:t.data,code:y.invalid_enum_value,options:s}),_}return ue(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Be.create(e,{...this._def,...t})}exclude(e,t=this._def){return Be.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};o(Be,"ZodEnum");Be.create=bo;var bt=class extends k{_parse(e){let t=R.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==w.string&&s.parsedType!==w.number){let n=R.objectValues(t);return b(s,{expected:R.joinValues(n),received:s.parsedType,code:y.invalid_type}),_}if(this._cache||(this._cache=new Set(R.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=R.objectValues(t);return b(s,{received:s.data,code:y.invalid_enum_value,options:n}),_}return ue(e.data)}get enum(){return this._def.values}};o(bt,"ZodNativeEnum");bt.create=(r,e)=>new bt({values:r,typeName:E.ZodNativeEnum,...T(e)});var tt=class extends k{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.promise&&t.common.async===!1)return b(t,{code:y.invalid_type,expected:w.promise,received:t.parsedType}),_;let s=t.parsedType===w.promise?t.data:Promise.resolve(t.data);return ue(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};o(tt,"ZodPromise");tt.create=(r,e)=>new tt({type:r,typeName:E.ZodPromise,...T(e)});var ve=class extends k{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:a=>{b(s,a),a.fatal?t.abort():t.dirty()},get path(){return s.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="preprocess"){let a=n.transform(s.data,i);if(s.common.async)return Promise.resolve(a).then(async u=>{if(t.value==="aborted")return _;let l=await this._def.schema._parseAsync({data:u,path:s.path,parent:s});return l.status==="aborted"?_:l.status==="dirty"?Vt(l.value):t.value==="dirty"?Vt(l.value):l});{if(t.value==="aborted")return _;let u=this._def.schema._parseSync({data:a,path:s.path,parent:s});return u.status==="aborted"?_:u.status==="dirty"?Vt(u.value):t.value==="dirty"?Vt(u.value):u}}if(n.type==="refinement"){let a=o(u=>{let l=n.refinement(u,i);if(s.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return u},"executeRefinement");if(s.common.async===!1){let u=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return u.status==="aborted"?_:(u.status==="dirty"&&t.dirty(),a(u.value),{status:t.value,value:u.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(u=>u.status==="aborted"?_:(u.status==="dirty"&&t.dirty(),a(u.value).then(()=>({status:t.value,value:u.value}))))}if(n.type==="transform")if(s.common.async===!1){let a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!lt(a))return _;let u=n.transform(a.value,i);if(u instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:u}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>lt(a)?Promise.resolve(n.transform(a.value,i)).then(u=>({status:t.value,value:u})):_);R.assertNever(n)}};o(ve,"ZodEffects");ve.create=(r,e,t)=>new ve({schema:r,typeName:E.ZodEffects,effect:e,...T(t)});ve.createWithPreprocess=(r,e,t)=>new ve({schema:e,effect:{type:"preprocess",transform:r},typeName:E.ZodEffects,...T(t)});var we=class extends k{_parse(e){return this._getType(e)===w.undefined?ue(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};o(we,"ZodOptional");we.create=(r,e)=>new we({innerType:r,typeName:E.ZodOptional,...T(e)});var qe=class extends k{_parse(e){return this._getType(e)===w.null?ue(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};o(qe,"ZodNullable");qe.create=(r,e)=>new qe({innerType:r,typeName:E.ZodNullable,...T(e)});var xt=class extends k{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===w.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};o(xt,"ZodDefault");xt.create=(r,e)=>new xt({innerType:r,typeName:E.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...T(e)});var vt=class extends k{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return qr(n)?n.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new ie(s.common.issues)},input:s.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new ie(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};o(vt,"ZodCatch");vt.create=(r,e)=>new vt({innerType:r,typeName:E.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...T(e)});var Jt=class extends k{_parse(e){if(this._getType(e)!==w.nan){let s=this._getOrReturnCtx(e);return b(s,{code:y.invalid_type,expected:w.nan,received:s.parsedType}),_}return{status:"valid",value:e.data}}};o(Jt,"ZodNaN");Jt.create=r=>new Jt({typeName:E.ZodNaN,...T(r)});var dh=Symbol("zod_brand"),jr=class extends k{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}};o(jr,"ZodBranded");var wt=class extends k{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return o(async()=>{let i=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?_:i.status==="dirty"?(t.dirty(),Vt(i.value)):this._def.out._parseAsync({data:i.value,path:s.path,parent:s})},"handleAsync")();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?_:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new wt({in:e,out:t,typeName:E.ZodPipeline})}};o(wt,"ZodPipeline");var At=class extends k{_parse(e){let t=this._def.innerType._parse(e),s=o(n=>(lt(n)&&(n.value=Object.freeze(n.value)),n),"freeze");return qr(t)?t.then(n=>s(n)):s(t)}unwrap(){return this._def.innerType}};o(At,"ZodReadonly");At.create=(r,e)=>new At({innerType:r,typeName:E.ZodReadonly,...T(e)});function po(r,e){let t=typeof r=="function"?r(e):typeof r=="string"?{message:r}:r;return typeof t=="string"?{message:t}:t}o(po,"cleanParams");function xo(r,e={},t){return r?Ze.create().superRefine((s,n)=>{let i=r(s);if(i instanceof Promise)return i.then(a=>{if(!a){let u=po(e,s),l=u.fatal??t??!0;n.addIssue({code:"custom",...u,fatal:l})}});if(!i){let a=po(e,s),u=a.fatal??t??!0;n.addIssue({code:"custom",...a,fatal:u})}}):Ze.create()}o(xo,"custom");var fh={object:P.lazycreate},E;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly"})(E||(E={}));var hh=o((r,e={message:`Input not instance of ${r.name}`})=>xo(t=>t instanceof r,e),"instanceOfType"),Ir=me.create,vo=Re.create,ph=Jt.create,mh=Oe.create,wo=ct.create,gh=Le.create,yh=Ht.create,bh=dt.create,xh=ft.create,vh=Ze.create,wh=Pe.create,Ah=Ee.create,Dh=Qt.create,Yt=ge.create,vi=P.create,_h=P.strictCreate,Eh=ht.create,Ch=Gt.create,Sh=pt.create,Th=xe.create,wi=mt.create,Nh=Wt.create,kh=ze.create,Rh=et.create,Oh=gt.create,Bh=yt.create,qh=Be.create,Fh=bt.create,jh=tt.create,Ih=ve.create,$h=we.create,Mh=qe.create,Lh=ve.createWithPreprocess,Ph=wt.create,zh=o(()=>Ir().optional(),"ostring"),Kh=o(()=>vo().optional(),"onumber"),Uh=o(()=>wo().optional(),"oboolean"),Vh={string:r=>me.create({...r,coerce:!0}),number:r=>Re.create({...r,coerce:!0}),boolean:r=>ct.create({...r,coerce:!0}),bigint:r=>Oe.create({...r,coerce:!0}),date:r=>Le.create({...r,coerce:!0})};var Hh=_;var Gh=H.union([H.string(),H.number(),H.boolean(),H.null()]),Ai=H.lazy(()=>H.union([Gh,H.array(Ai),H.record(Ai)]));function Sn(r,e){let t=fn(r),s=Object.entries(t),n=Object.fromEntries(s.map(([i,a])=>[i,Ao(a)]));e&&(n=Object.assign(n,Object.fromEntries(Object.entries(e).map(([i,a])=>[i,typeof a=="function"?a(n):a]))));for(let[i,a]of s)a.notNull?a.hasDefault&&(n[i]=n[i].optional()):n[i]=n[i].nullable().optional();return H.object(n)}o(Sn,"c");function Ao(r){let e;if(function(t){return"enumValues"in t&&Array.isArray(t.enumValues)&&t.enumValues.length>0}(r)&&(e=r.enumValues.length?H.enum(r.enumValues):H.string()),!e){if(g(r,Kt))e=H.string().uuid();else if(r.dataType==="custom")e=H.any();else if(r.dataType==="json")e=Ai;else if(r.dataType==="array")e=H.array(Ao(r.baseColumn));else if(r.dataType==="number")e=H.number();else if(r.dataType==="bigint")e=H.bigint();else if(r.dataType==="boolean")e=H.boolean();else if(r.dataType==="date")e=H.date();else if(r.dataType==="string"){let t=H.string();(g(r,zt)||g(r,Ut)||g(r,Pt)||g(r,Lt)||g(r,Mt)||g(r,qt))&&typeof r.length=="number"&&(t=t.max(r.length)),e=t}}return e||(e=H.any()),e}o(Ao,"p");var Xt=ns("api_keys",{id:I("id").primaryKey(),key:I("key").notNull().unique(),keyPrefix:I("key_prefix").notNull(),name:I("name"),rateLimit:ne("rate_limit").default(100),isActive:ne("is_active",{mode:"boolean"}).default(!0).notNull(),lastUsedAt:ne("last_used_at",{mode:"timestamp"}),expiresAt:ne("expires_at",{mode:"timestamp"}),createdAt:ne("created_at",{mode:"timestamp"}).notNull(),updatedAt:ne("updated_at",{mode:"timestamp"}).notNull()}),o3=Sn(Xt),ks=ns("mailboxes",{id:I("id").primaryKey(),address:I("address").notNull().unique(),domain:I("domain").notNull(),expiresAt:ne("expires_at",{mode:"timestamp"}),apiKeyId:I("api_key_id").notNull(),createdAt:ne("created_at",{mode:"timestamp"}).notNull(),updatedAt:ne("updated_at",{mode:"timestamp"}).notNull()}),u3=Sn(ks),K=ns("emails",{id:I("id").primaryKey(),messageFrom:I("message_from").notNull(),messageTo:I("message_to").notNull(),headers:I("headers",{mode:"json"}).$type().notNull(),from:I("from",{mode:"json"}).$type().notNull(),sender:I("sender",{mode:"json"}).$type(),replyTo:I("reply_to",{mode:"json"}).$type(),deliveredTo:I("delivered_to"),returnPath:I("return_path"),to:I("to",{mode:"json"}).$type(),cc:I("cc",{mode:"json"}).$type(),bcc:I("bcc",{mode:"json"}).$type(),subject:I("subject"),messageId:I("message_id").notNull(),inReplyTo:I("in_reply_to"),references:I("references"),date:I("date"),html:I("html"),text:I("text"),createdAt:ne("created_at",{mode:"timestamp"}).notNull(),updatedAt:ne("updated_at",{mode:"timestamp"}).notNull()}),$r=vi({address:Ir(),name:Ir()}),Do=Sn(K,{headers:Yt(wi(Ir())),from:$r,sender:$r.optional(),replyTo:Yt($r).optional(),to:Yt($r).optional(),cc:Yt($r).optional(),bcc:Yt($r).optional()}),le=ns("site_stats",{id:I("id").primaryKey(),totalAddressesCreated:ne("total_addresses_created").default(0).notNull(),totalEmailsReceived:ne("total_emails_received").default(0).notNull(),totalApiCalls:ne("total_api_calls").default(0).notNull(),totalApiKeysCreated:ne("total_api_keys_created").default(0).notNull(),updatedAt:ne("updated_at",{mode:"timestamp"}).notNull()});async function _o(r,e){try{await r.insert(K).values(e).execute()}catch(t){console.error(t)}}o(_o,"insertEmail");async function Eo(r,e){try{let t=await r.select().from(K).where(Ge(W(K.id,e))).execute();return t.length!=1?null:t[0]}catch{return null}}o(Eo,"findEmailById");async function Co(r,e){try{return await r.select().from(K).where(W(K.messageTo,e)).orderBy(es(K.createdAt)).execute()}catch{return[]}}o(Co,"getEmailsByMessageTo");async function So(r,e){if(!e||e.length===0)return{count:0};try{return{count:(await r.delete(K).where(on(K.id,e))).rowsAffected}}catch(t){return console.error(t),{count:0}}}o(So,"deleteEmails");async function To(r,e){try{return{count:(await r.delete(K).where(an(K.createdAt,e)).execute()).rowsAffected}}catch(t){return console.error("\u6E05\u7406\u8FC7\u671F\u90AE\u4EF6\u5931\u8D25:",t),{count:0}}}o(To,"deleteExpiredEmails");async function No(r,e){try{let t=await r.select().from(Xt).where(W(Xt.key,e)).execute();return t.length===1?t[0]:null}catch(t){return console.error("findApiKeyByKey error:",t),null}}o(No,"findApiKeyByKey");async function ko(r,e){try{await r.update(Xt).set({lastUsedAt:new Date,updatedAt:new Date}).where(W(Xt.id,e)).execute()}catch(t){console.error("updateApiKeyLastUsed error:",t)}}o(ko,"updateApiKeyLastUsed");async function Ro(r,e){try{return await r.insert(Xt).values(e).execute(),e}catch(t){return console.error("insertApiKey error:",t),null}}o(Ro,"insertApiKey");async function Oo(r,e){try{return await r.insert(ks).values(e).execute(),e}catch(t){throw console.error("insertMailbox error:",t),t}}o(Oo,"insertMailbox");async function Rs(r,e){try{let t=await r.select().from(ks).where(W(ks.id,e)).execute();return t.length===1?t[0]:null}catch(t){return console.error("findMailboxById error:",t),null}}o(Rs,"findMailboxById");async function Bo(r,e,t){try{let s=(t.page-1)*t.limit,n=t.sort==="asc"?un:es,[i,a]=await Promise.all([r.select().from(K).where(W(K.messageTo,e)).orderBy(n(K.createdAt)).limit(t.limit).offset(s).execute(),r.select({count:oi()}).from(K).where(W(K.messageTo,e)).execute()]),u=a[0]?.count||0;return{messages:i,total:u,totalPages:Math.ceil(u/t.limit)}}catch(s){return console.error("getMailboxMessages error:",s),{messages:[],total:0,totalPages:0}}}o(Bo,"getMailboxMessages");async function qo(r,e,t){try{let s=await r.select().from(K).where(Ge(W(K.id,t),W(K.messageTo,e))).execute();return s.length===1?s[0]:null}catch(s){return console.error("findMailboxMessage error:",s),null}}o(qo,"findMailboxMessage");async function Fo(r,e,t){try{return(await r.delete(K).where(Ge(W(K.id,t),W(K.messageTo,e))).execute()).rowsAffected>0}catch(s){return console.error("deleteMailboxMessage error:",s),!1}}o(Fo,"deleteMailboxMessage");async function jo(r,e){try{return(await r.select({count:oi()}).from(K).where(W(K.messageTo,e)).execute())[0]?.count||0}catch(t){return console.error("getMailboxMessageCount error:",t),0}}o(jo,"getMailboxMessageCount");var Mr="global";async function Di(r){try{let e=await r.select().from(le).where(W(le.id,Mr)).execute();return e.length===1?e[0]:null}catch(e){return console.error("getSiteStats error:",e),null}}o(Di,"getSiteStats");async function Tn(r){try{await Di(r)||await r.insert(le).values({id:Mr,totalAddressesCreated:0,totalEmailsReceived:0,totalApiCalls:0,totalApiKeysCreated:0,updatedAt:new Date}).execute()}catch(e){console.error("initSiteStats error:",e)}}o(Tn,"initSiteStats");async function Io(r,e=1){try{await Tn(r),await r.update(le).set({totalEmailsReceived:f`${le.totalEmailsReceived} + ${e}`,updatedAt:new Date}).where(W(le.id,Mr)).execute()}catch(t){console.error("incrementEmailsReceived error:",t)}}o(Io,"incrementEmailsReceived");async function $o(r,e=1){try{await Tn(r),await r.update(le).set({totalAddressesCreated:f`${le.totalAddressesCreated} + ${e}`,updatedAt:new Date}).where(W(le.id,Mr)).execute()}catch(t){console.error("incrementAddressesCreated error:",t)}}o($o,"incrementAddressesCreated");async function Mo(r,e=1){try{await Tn(r),await r.update(le).set({totalApiKeysCreated:f`${le.totalApiKeysCreated} + ${e}`,updatedAt:new Date}).where(W(le.id,Mr)).execute()}catch(t){console.error("incrementApiKeysCreated error:",t)}}o(Mo,"incrementApiKeysCreated");async function Lo(r,e=1){try{await Tn(r),await r.update(le).set({totalApiCalls:f`${le.totalApiCalls} + ${e}`,updatedAt:new Date}).where(W(le.id,Mr)).execute()}catch(t){console.error("incrementApiCalls error:",t)}}o(Lo,"incrementApiCalls");var Wh,Lr=class extends Nr{constructor(e,t,s,n={}){super(t),this.client=e,this.schema=s,this.options=n,this.logger=n.logger??new gr}logger;prepareQuery(e,t,s,n){let i=this.client.prepare(e.sql);return new Bs(i,e,this.logger,t,s,n)}async batch(e){let t=[],s=[];for(let i of e){let a=i._prepare(),u=a.getQuery();if(t.push(a),u.params.length>0)s.push(a.stmt.bind(...u.params));else{let l=a.getQuery();s.push(this.client.prepare(l.sql).bind(...l.params))}}return(await this.client.batch(s)).map((i,a)=>t[a].mapResult(i,!0))}extractRawAllValueFromBatchResult(e){return e.results}extractRawGetValueFromBatchResult(e){return e.results[0]}extractRawValuesValueFromBatchResult(e){return _i(e.results)}async transaction(e,t){let s=new Os("async",this.dialect,this,this.schema);await this.run(f.raw(`begin${t?.behavior?" "+t.behavior:""}`));try{let n=await e(s);return await this.run(f`commit`),n}catch(n){throw await this.run(f`rollback`),n}}};o(Lr,"SQLiteD1Session"),Wh=p,h(Lr,Wh,"SQLiteD1Session");var Jh,Ei=class extends kr{async transaction(e){let t=`sp${this.nestedIndex}`,s=new Ei("async",this.dialect,this.session,this.schema,this.nestedIndex+1);await this.session.run(f.raw(`savepoint ${t}`));try{let n=await e(s);return await this.session.run(f.raw(`release savepoint ${t}`)),n}catch(n){throw await this.session.run(f.raw(`rollback to savepoint ${t}`)),n}}},Os=Ei;o(Os,"D1Transaction"),Jh=p,h(Os,Jh,"D1Transaction");function _i(r){let e=[];for(let t of r){let s=Object.keys(t).map(n=>t[n]);e.push(s)}return e}o(_i,"d1ToRawMapping");var Yh,Bs=class extends Tr{constructor(e,t,s,n,i,a){super("async",i,t),this.logger=s,this.customResultMapper=a,this.fields=n,this.stmt=e}customResultMapper;fields;stmt;run(e){let t=Yr(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.bind(...t).run()}async all(e){let{fields:t,query:s,logger:n,stmt:i,customResultMapper:a}=this;if(!t&&!a){let l=Yr(s.params,e??{});return n.logQuery(s.sql,l),i.bind(...l).all().then(({results:c})=>this.mapAllResult(c))}let u=await this.values(e);return this.mapAllResult(u)}mapAllResult(e,t){return t&&(e=_i(e.results)),!this.fields&&!this.customResultMapper?e:this.customResultMapper?this.customResultMapper(e):e.map(s=>cn(this.fields,s,this.joinsNotNullableMap))}async get(e){let{fields:t,joinsNotNullableMap:s,query:n,logger:i,stmt:a,customResultMapper:u}=this;if(!t&&!u){let c=Yr(n.params,e??{});return i.logQuery(n.sql,c),a.bind(...c).all().then(({results:d})=>d[0])}let l=await this.values(e);if(l[0])return u?u(l):cn(t,l[0],s)}mapGetResult(e,t){return t&&(e=_i(e.results)[0]),!this.fields&&!this.customResultMapper?e:this.customResultMapper?this.customResultMapper([e]):cn(this.fields,e,this.joinsNotNullableMap)}values(e){let t=Yr(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.bind(...t).raw()}};o(Bs,"D1PreparedQuery"),Yh=p,h(Bs,Yh,"D1PreparedQuery");var Xh,qs=class extends ut{async batch(e){return this.session.batch(e)}};o(qs,"DrizzleD1Database"),Xh=p,h(qs,Xh,"LibSQLDatabase");function Po(r,e={}){let t=new Ar,s;e.logger===!0?s=new mr:e.logger!==!1&&(s=e.logger);let n;if(e.schema){let a=so(e.schema,io);n={fullSchema:e.schema,schema:a.tables,tableNamesMap:a.tableNamesMap}}let i=new Lr(r,t,n,{logger:s});return new qs("async",t,i,n)}o(Po,"drizzle");function ce(r){return Po(r)}o(ce,"getD1DB");var Zh="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Fs=o((r=21)=>{let e="",t=r|0;for(;t--;)e+=Zh[Math.random()*64|0];return e},"nanoid");var Dt=new TextEncoder,zo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Is=new Uint8Array(256);for(js=0;js>4,i[s++]=(l&15)<<4|c>>2,i[s++]=(c&3)<<6|d&63}return n}o(Nn,"decodeBase64");function Pr(r){r=r||"utf8";let e;try{e=new TextDecoder(r)}catch{e=new TextDecoder("windows-1252")}return e}o(Pr,"getDecoder");async function _t(r){if("arrayBuffer"in r)return await r.arrayBuffer();let e=new FileReader;return new Promise((t,s)=>{e.onload=function(n){t(n.target.result)},e.onerror=function(n){s(e.error)},e.readAsArrayBuffer(r)})}o(_t,"blobToArrayBuffer");function Ko(r){return r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70?String.fromCharCode(r):!1}o(Ko,"getHex");function ep(r,e,t){let s=r.indexOf("*");s>=0&&(r=r.substr(0,s)),e=e.toUpperCase();let n;if(e==="Q"){t=t.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let i=Dt.encode(t),a=[];for(let l=0,c=i.length;le&&a===l&&u.length%4===0&&!/=$/.test(u)?i+"__\0JOIN\0__":n).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,(n,i,a,u)=>e&&a===u?i+"__\0JOIN\0__":n).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,(n,i,a,u)=>ep(i,a,u));if(e&&s.indexOf("\uFFFD")>=0)e=!1;else return s}}o(Zt,"decodeWords");function tp(r,e){e=e||"utf-8";let t=[];for(let i=0;i126){a=Dt.encode(a);for(let u=0;u{let s=t.match(/\*((\d+)\*?)?$/);if(!s)return;let n=t.substr(0,s.index).toLowerCase(),i=Number(s[2])||0,a;e.has(n)?a=e.get(n):(a={charset:!1,values:[]},e.set(n,a));let u=r.params[t];i===0&&s[0].charAt(s[0].length-1)==="*"&&(s=u.match(/^([^']*)'[^']*'(.*)$/))&&(a.charset=s[1]||"utf-8",u=s[2]),a.values.push({nr:i,value:u}),delete r.params[t]}),e.forEach((t,s)=>{r.params[s]=tp(t.values.sort((n,i)=>n.nr-i.nr).map(n=>n.value).join(""),t.charset)})}o(Uo,"decodeParameterValueContinuations");var zr=class{constructor(){this.chunks=[]}update(e){this.chunks.push(e),this.chunks.push(` -`)}finalize(){return _t(new Blob(this.chunks,{type:"application/octet-stream"}))}};o(zr,"PassThroughDecoder");var Kr=class{constructor(e){e=e||{},this.decoder=e.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.chunks=[],this.remainder=""}update(e){let t=this.decoder.decode(e);if(/[^a-zA-Z0-9+\/]/.test(t)&&(t=t.replace(/[^a-zA-Z0-9+\/]+/g,"")),this.remainder+=t,this.remainder.length>=this.maxChunkSize){let s=Math.floor(this.remainder.length/4)*4,n;s===this.remainder.length?(n=this.remainder,this.remainder=""):(n=this.remainder.substr(0,s),this.remainder=this.remainder.substr(s)),n.length&&this.chunks.push(Nn(n))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(Nn(this.remainder)),_t(new Blob(this.chunks,{type:"application/octet-stream"}))}};o(Kr,"Base64Decoder");var Vo=/^=[a-f0-9]{2}$/i,rp=/(?==[a-f0-9]{2})/i,sp=/=\r?\n/g,np=/=[a-fA-F0-9]?$/,Ur=class{constructor(e){e=e||{},this.decoder=e.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.remainder="",this.chunks=[]}decodeQPBytes(e){let t=new ArrayBuffer(e.length),s=new DataView(t);for(let n=0,i=e.length;n3){let i=n.substr(0,3);Vo.test(i)?(s.push(n.substr(1,2)),this.chunks.push(this.decodeQPBytes(s)),s=[],n=n.substr(3),this.chunks.push(n)):(s.length&&(this.chunks.push(this.decodeQPBytes(s)),s=[]),this.chunks.push(n))}}s.length&&(this.chunks.push(this.decodeQPBytes(s)),s=[])}update(e){let t=this.decoder.decode(e)+` -`;if(t=this.remainder+t,t.lengththis.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0,this.contentType={value:"text/plain",default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(e){/base64/i.test(e)?this.contentDecoder=new Kr:/quoted-printable/i.test(e)?this.contentDecoder=new Ur({decoder:Pr(this.contentType.parsed.params.charset)}):this.contentDecoder=new zr}async finalize(){if(this.state==="finished")return;this.state==="header"&&this.processHeaders();let e=this.postalMime.boundaries;for(let t=e.length-1;t>=0;t--)if(e[t].node===this){e.splice(t,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.state="finished"}async finalizeChildNodes(){for(let e of this.childNodes)await e.finalize()}parseStructuredHeader(e){let t={value:!1,params:{}},s=!1,n="",i="value",a=!1,u=!1,l;for(let c=0,d=e.length;c/ $/.test(s)&&!/(^|\n)-- $/.test(s)?t?s.slice(0,-1)+n:s+n:s+` -`+n).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let e=Pr(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(e=this.decodeFlowedText(e,/^yes$/i.test(this.contentType.parsed.params.delsp))),e}processHeaders(){for(let e=this.headerLines.length-1;e>=0;e--){let t=this.headerLines[e];if(e&&/^\s/.test(t))this.headerLines[e-1]+=` -`+t,this.headerLines.splice(e,1);else{t=t.replace(/\s+/g," ");let s=t.indexOf(":"),n=s<0?t.trim():t.substr(0,s).trim(),i=s<0?"":t.substr(s+1).trim();switch(this.headers.push({key:n.toLowerCase(),originalKey:n,value:i}),n.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:i,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:i,parsed:{}};break;case"content-disposition":this.contentDisposition={value:i,parsed:{}};break;case"content-id":this.contentId=i;break;case"content-description":this.contentDescription=i;break}}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=/^multipart\//i.test(this.contentType.parsed.value)?this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1):!1,this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:Dt.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(e){switch(this.state){case"header":if(!e.length)return this.state="body",this.processHeaders();if(this.headerSize+=e.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(Pr().decode(e));break;case"body":this.contentDecoder.update(e)}}};o(er,"MimeNode");var ip={"Æ":"\xC6","Æ":"\xC6","&":"&","&":"&","Á":"\xC1","Á":"\xC1","Ă":"\u0102","Â":"\xC2","Â":"\xC2","А":"\u0410","𝔄":"\u{1D504}","À":"\xC0","À":"\xC0","Α":"\u0391","Ā":"\u0100","⩓":"\u2A53","Ą":"\u0104","𝔸":"\u{1D538}","⁡":"\u2061","Å":"\xC5","Å":"\xC5","𝒜":"\u{1D49C}","≔":"\u2254","Ã":"\xC3","Ã":"\xC3","Ä":"\xC4","Ä":"\xC4","∖":"\u2216","⫧":"\u2AE7","⌆":"\u2306","Б":"\u0411","∵":"\u2235","ℬ":"\u212C","Β":"\u0392","𝔅":"\u{1D505}","𝔹":"\u{1D539}","˘":"\u02D8","ℬ":"\u212C","≎":"\u224E","Ч":"\u0427","©":"\xA9","©":"\xA9","Ć":"\u0106","⋒":"\u22D2","ⅅ":"\u2145","ℭ":"\u212D","Č":"\u010C","Ç":"\xC7","Ç":"\xC7","Ĉ":"\u0108","∰":"\u2230","Ċ":"\u010A","¸":"\xB8","·":"\xB7","ℭ":"\u212D","Χ":"\u03A7","⊙":"\u2299","⊖":"\u2296","⊕":"\u2295","⊗":"\u2297","∲":"\u2232","”":"\u201D","’":"\u2019","∷":"\u2237","⩴":"\u2A74","≡":"\u2261","∯":"\u222F","∮":"\u222E","ℂ":"\u2102","∐":"\u2210","∳":"\u2233","⨯":"\u2A2F","𝒞":"\u{1D49E}","⋓":"\u22D3","≍":"\u224D","ⅅ":"\u2145","⤑":"\u2911","Ђ":"\u0402","Ѕ":"\u0405","Џ":"\u040F","‡":"\u2021","↡":"\u21A1","⫤":"\u2AE4","Ď":"\u010E","Д":"\u0414","∇":"\u2207","Δ":"\u0394","𝔇":"\u{1D507}","´":"\xB4","˙":"\u02D9","˝":"\u02DD","`":"`","˜":"\u02DC","⋄":"\u22C4","ⅆ":"\u2146","𝔻":"\u{1D53B}","¨":"\xA8","⃜":"\u20DC","≐":"\u2250","∯":"\u222F","¨":"\xA8","⇓":"\u21D3","⇐":"\u21D0","⇔":"\u21D4","⫤":"\u2AE4","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","⇒":"\u21D2","⊨":"\u22A8","⇑":"\u21D1","⇕":"\u21D5","∥":"\u2225","↓":"\u2193","⤓":"\u2913","⇵":"\u21F5","̑":"\u0311","⥐":"\u2950","⥞":"\u295E","↽":"\u21BD","⥖":"\u2956","⥟":"\u295F","⇁":"\u21C1","⥗":"\u2957","⊤":"\u22A4","↧":"\u21A7","⇓":"\u21D3","𝒟":"\u{1D49F}","Đ":"\u0110","Ŋ":"\u014A","Ð":"\xD0","Ð":"\xD0","É":"\xC9","É":"\xC9","Ě":"\u011A","Ê":"\xCA","Ê":"\xCA","Э":"\u042D","Ė":"\u0116","𝔈":"\u{1D508}","È":"\xC8","È":"\xC8","∈":"\u2208","Ē":"\u0112","◻":"\u25FB","▫":"\u25AB","Ę":"\u0118","𝔼":"\u{1D53C}","Ε":"\u0395","⩵":"\u2A75","≂":"\u2242","⇌":"\u21CC","ℰ":"\u2130","⩳":"\u2A73","Η":"\u0397","Ë":"\xCB","Ë":"\xCB","∃":"\u2203","ⅇ":"\u2147","Ф":"\u0424","𝔉":"\u{1D509}","◼":"\u25FC","▪":"\u25AA","𝔽":"\u{1D53D}","∀":"\u2200","ℱ":"\u2131","ℱ":"\u2131","Ѓ":"\u0403",">":">",">":">","Γ":"\u0393","Ϝ":"\u03DC","Ğ":"\u011E","Ģ":"\u0122","Ĝ":"\u011C","Г":"\u0413","Ġ":"\u0120","𝔊":"\u{1D50A}","⋙":"\u22D9","𝔾":"\u{1D53E}","≥":"\u2265","⋛":"\u22DB","≧":"\u2267","⪢":"\u2AA2","≷":"\u2277","⩾":"\u2A7E","≳":"\u2273","𝒢":"\u{1D4A2}","≫":"\u226B","Ъ":"\u042A","ˇ":"\u02C7","^":"^","Ĥ":"\u0124","ℌ":"\u210C","ℋ":"\u210B","ℍ":"\u210D","─":"\u2500","ℋ":"\u210B","Ħ":"\u0126","≎":"\u224E","≏":"\u224F","Е":"\u0415","IJ":"\u0132","Ё":"\u0401","Í":"\xCD","Í":"\xCD","Î":"\xCE","Î":"\xCE","И":"\u0418","İ":"\u0130","ℑ":"\u2111","Ì":"\xCC","Ì":"\xCC","ℑ":"\u2111","Ī":"\u012A","ⅈ":"\u2148","⇒":"\u21D2","∬":"\u222C","∫":"\u222B","⋂":"\u22C2","⁣":"\u2063","⁢":"\u2062","Į":"\u012E","𝕀":"\u{1D540}","Ι":"\u0399","ℐ":"\u2110","Ĩ":"\u0128","І":"\u0406","Ï":"\xCF","Ï":"\xCF","Ĵ":"\u0134","Й":"\u0419","𝔍":"\u{1D50D}","𝕁":"\u{1D541}","𝒥":"\u{1D4A5}","Ј":"\u0408","Є":"\u0404","Х":"\u0425","Ќ":"\u040C","Κ":"\u039A","Ķ":"\u0136","К":"\u041A","𝔎":"\u{1D50E}","𝕂":"\u{1D542}","𝒦":"\u{1D4A6}","Љ":"\u0409","<":"<","<":"<","Ĺ":"\u0139","Λ":"\u039B","⟪":"\u27EA","ℒ":"\u2112","↞":"\u219E","Ľ":"\u013D","Ļ":"\u013B","Л":"\u041B","⟨":"\u27E8","←":"\u2190","⇤":"\u21E4","⇆":"\u21C6","⌈":"\u2308","⟦":"\u27E6","⥡":"\u2961","⇃":"\u21C3","⥙":"\u2959","⌊":"\u230A","↔":"\u2194","⥎":"\u294E","⊣":"\u22A3","↤":"\u21A4","⥚":"\u295A","⊲":"\u22B2","⧏":"\u29CF","⊴":"\u22B4","⥑":"\u2951","⥠":"\u2960","↿":"\u21BF","⥘":"\u2958","↼":"\u21BC","⥒":"\u2952","⇐":"\u21D0","⇔":"\u21D4","⋚":"\u22DA","≦":"\u2266","≶":"\u2276","⪡":"\u2AA1","⩽":"\u2A7D","≲":"\u2272","𝔏":"\u{1D50F}","⋘":"\u22D8","⇚":"\u21DA","Ŀ":"\u013F","⟵":"\u27F5","⟷":"\u27F7","⟶":"\u27F6","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","𝕃":"\u{1D543}","↙":"\u2199","↘":"\u2198","ℒ":"\u2112","↰":"\u21B0","Ł":"\u0141","≪":"\u226A","⤅":"\u2905","М":"\u041C"," ":"\u205F","ℳ":"\u2133","𝔐":"\u{1D510}","∓":"\u2213","𝕄":"\u{1D544}","ℳ":"\u2133","Μ":"\u039C","Њ":"\u040A","Ń":"\u0143","Ň":"\u0147","Ņ":"\u0145","Н":"\u041D","​":"\u200B","​":"\u200B","​":"\u200B","​":"\u200B","≫":"\u226B","≪":"\u226A"," ":` -`,"𝔑":"\u{1D511}","⁠":"\u2060"," ":"\xA0","ℕ":"\u2115","⫬":"\u2AEC","≢":"\u2262","≭":"\u226D","∦":"\u2226","∉":"\u2209","≠":"\u2260","≂̸":"\u2242\u0338","∄":"\u2204","≯":"\u226F","≱":"\u2271","≧̸":"\u2267\u0338","≫̸":"\u226B\u0338","≹":"\u2279","⩾̸":"\u2A7E\u0338","≵":"\u2275","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⋪":"\u22EA","⧏̸":"\u29CF\u0338","⋬":"\u22EC","≮":"\u226E","≰":"\u2270","≸":"\u2278","≪̸":"\u226A\u0338","⩽̸":"\u2A7D\u0338","≴":"\u2274","⪢̸":"\u2AA2\u0338","⪡̸":"\u2AA1\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⋠":"\u22E0","∌":"\u220C","⋫":"\u22EB","⧐̸":"\u29D0\u0338","⋭":"\u22ED","⊏̸":"\u228F\u0338","⋢":"\u22E2","⊐̸":"\u2290\u0338","⋣":"\u22E3","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⋡":"\u22E1","≿̸":"\u227F\u0338","⊃⃒":"\u2283\u20D2","⊉":"\u2289","≁":"\u2241","≄":"\u2244","≇":"\u2247","≉":"\u2249","∤":"\u2224","𝒩":"\u{1D4A9}","Ñ":"\xD1","Ñ":"\xD1","Ν":"\u039D","Œ":"\u0152","Ó":"\xD3","Ó":"\xD3","Ô":"\xD4","Ô":"\xD4","О":"\u041E","Ő":"\u0150","𝔒":"\u{1D512}","Ò":"\xD2","Ò":"\xD2","Ō":"\u014C","Ω":"\u03A9","Ο":"\u039F","𝕆":"\u{1D546}","“":"\u201C","‘":"\u2018","⩔":"\u2A54","𝒪":"\u{1D4AA}","Ø":"\xD8","Ø":"\xD8","Õ":"\xD5","Õ":"\xD5","⨷":"\u2A37","Ö":"\xD6","Ö":"\xD6","‾":"\u203E","⏞":"\u23DE","⎴":"\u23B4","⏜":"\u23DC","∂":"\u2202","П":"\u041F","𝔓":"\u{1D513}","Φ":"\u03A6","Π":"\u03A0","±":"\xB1","ℌ":"\u210C","ℙ":"\u2119","⪻":"\u2ABB","≺":"\u227A","⪯":"\u2AAF","≼":"\u227C","≾":"\u227E","″":"\u2033","∏":"\u220F","∷":"\u2237","∝":"\u221D","𝒫":"\u{1D4AB}","Ψ":"\u03A8",""":'"',""":'"',"𝔔":"\u{1D514}","ℚ":"\u211A","𝒬":"\u{1D4AC}","⤐":"\u2910","®":"\xAE","®":"\xAE","Ŕ":"\u0154","⟫":"\u27EB","↠":"\u21A0","⤖":"\u2916","Ř":"\u0158","Ŗ":"\u0156","Р":"\u0420","ℜ":"\u211C","∋":"\u220B","⇋":"\u21CB","⥯":"\u296F","ℜ":"\u211C","Ρ":"\u03A1","⟩":"\u27E9","→":"\u2192","⇥":"\u21E5","⇄":"\u21C4","⌉":"\u2309","⟧":"\u27E7","⥝":"\u295D","⇂":"\u21C2","⥕":"\u2955","⌋":"\u230B","⊢":"\u22A2","↦":"\u21A6","⥛":"\u295B","⊳":"\u22B3","⧐":"\u29D0","⊵":"\u22B5","⥏":"\u294F","⥜":"\u295C","↾":"\u21BE","⥔":"\u2954","⇀":"\u21C0","⥓":"\u2953","⇒":"\u21D2","ℝ":"\u211D","⥰":"\u2970","⇛":"\u21DB","ℛ":"\u211B","↱":"\u21B1","⧴":"\u29F4","Щ":"\u0429","Ш":"\u0428","Ь":"\u042C","Ś":"\u015A","⪼":"\u2ABC","Š":"\u0160","Ş":"\u015E","Ŝ":"\u015C","С":"\u0421","𝔖":"\u{1D516}","↓":"\u2193","←":"\u2190","→":"\u2192","↑":"\u2191","Σ":"\u03A3","∘":"\u2218","𝕊":"\u{1D54A}","√":"\u221A","□":"\u25A1","⊓":"\u2293","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊔":"\u2294","𝒮":"\u{1D4AE}","⋆":"\u22C6","⋐":"\u22D0","⋐":"\u22D0","⊆":"\u2286","≻":"\u227B","⪰":"\u2AB0","≽":"\u227D","≿":"\u227F","∋":"\u220B","∑":"\u2211","⋑":"\u22D1","⊃":"\u2283","⊇":"\u2287","⋑":"\u22D1","Þ":"\xDE","Þ":"\xDE","™":"\u2122","Ћ":"\u040B","Ц":"\u0426"," ":" ","Τ":"\u03A4","Ť":"\u0164","Ţ":"\u0162","Т":"\u0422","𝔗":"\u{1D517}","∴":"\u2234","Θ":"\u0398","  ":"\u205F\u200A"," ":"\u2009","∼":"\u223C","≃":"\u2243","≅":"\u2245","≈":"\u2248","𝕋":"\u{1D54B}","⃛":"\u20DB","𝒯":"\u{1D4AF}","Ŧ":"\u0166","Ú":"\xDA","Ú":"\xDA","↟":"\u219F","⥉":"\u2949","Ў":"\u040E","Ŭ":"\u016C","Û":"\xDB","Û":"\xDB","У":"\u0423","Ű":"\u0170","𝔘":"\u{1D518}","Ù":"\xD9","Ù":"\xD9","Ū":"\u016A","_":"_","⏟":"\u23DF","⎵":"\u23B5","⏝":"\u23DD","⋃":"\u22C3","⊎":"\u228E","Ų":"\u0172","𝕌":"\u{1D54C}","↑":"\u2191","⤒":"\u2912","⇅":"\u21C5","↕":"\u2195","⥮":"\u296E","⊥":"\u22A5","↥":"\u21A5","⇑":"\u21D1","⇕":"\u21D5","↖":"\u2196","↗":"\u2197","ϒ":"\u03D2","Υ":"\u03A5","Ů":"\u016E","𝒰":"\u{1D4B0}","Ũ":"\u0168","Ü":"\xDC","Ü":"\xDC","⊫":"\u22AB","⫫":"\u2AEB","В":"\u0412","⊩":"\u22A9","⫦":"\u2AE6","⋁":"\u22C1","‖":"\u2016","‖":"\u2016","∣":"\u2223","|":"|","❘":"\u2758","≀":"\u2240"," ":"\u200A","𝔙":"\u{1D519}","𝕍":"\u{1D54D}","𝒱":"\u{1D4B1}","⊪":"\u22AA","Ŵ":"\u0174","⋀":"\u22C0","𝔚":"\u{1D51A}","𝕎":"\u{1D54E}","𝒲":"\u{1D4B2}","𝔛":"\u{1D51B}","Ξ":"\u039E","𝕏":"\u{1D54F}","𝒳":"\u{1D4B3}","Я":"\u042F","Ї":"\u0407","Ю":"\u042E","Ý":"\xDD","Ý":"\xDD","Ŷ":"\u0176","Ы":"\u042B","𝔜":"\u{1D51C}","𝕐":"\u{1D550}","𝒴":"\u{1D4B4}","Ÿ":"\u0178","Ж":"\u0416","Ź":"\u0179","Ž":"\u017D","З":"\u0417","Ż":"\u017B","​":"\u200B","Ζ":"\u0396","ℨ":"\u2128","ℤ":"\u2124","𝒵":"\u{1D4B5}","á":"\xE1","á":"\xE1","ă":"\u0103","∾":"\u223E","∾̳":"\u223E\u0333","∿":"\u223F","â":"\xE2","â":"\xE2","´":"\xB4","´":"\xB4","а":"\u0430","æ":"\xE6","æ":"\xE6","⁡":"\u2061","𝔞":"\u{1D51E}","à":"\xE0","à":"\xE0","ℵ":"\u2135","ℵ":"\u2135","α":"\u03B1","ā":"\u0101","⨿":"\u2A3F","&":"&","&":"&","∧":"\u2227","⩕":"\u2A55","⩜":"\u2A5C","⩘":"\u2A58","⩚":"\u2A5A","∠":"\u2220","⦤":"\u29A4","∠":"\u2220","∡":"\u2221","⦨":"\u29A8","⦩":"\u29A9","⦪":"\u29AA","⦫":"\u29AB","⦬":"\u29AC","⦭":"\u29AD","⦮":"\u29AE","⦯":"\u29AF","∟":"\u221F","⊾":"\u22BE","⦝":"\u299D","∢":"\u2222","Å":"\xC5","⍼":"\u237C","ą":"\u0105","𝕒":"\u{1D552}","≈":"\u2248","⩰":"\u2A70","⩯":"\u2A6F","≊":"\u224A","≋":"\u224B","'":"'","≈":"\u2248","≊":"\u224A","å":"\xE5","å":"\xE5","𝒶":"\u{1D4B6}","*":"*","≈":"\u2248","≍":"\u224D","ã":"\xE3","ã":"\xE3","ä":"\xE4","ä":"\xE4","∳":"\u2233","⨑":"\u2A11","⫭":"\u2AED","≌":"\u224C","϶":"\u03F6","‵":"\u2035","∽":"\u223D","⋍":"\u22CD","⊽":"\u22BD","⌅":"\u2305","⌅":"\u2305","⎵":"\u23B5","⎶":"\u23B6","≌":"\u224C","б":"\u0431","„":"\u201E","∵":"\u2235","∵":"\u2235","⦰":"\u29B0","϶":"\u03F6","ℬ":"\u212C","β":"\u03B2","ℶ":"\u2136","≬":"\u226C","𝔟":"\u{1D51F}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","⨀":"\u2A00","⨁":"\u2A01","⨂":"\u2A02","⨆":"\u2A06","★":"\u2605","▽":"\u25BD","△":"\u25B3","⨄":"\u2A04","⋁":"\u22C1","⋀":"\u22C0","⤍":"\u290D","⧫":"\u29EB","▪":"\u25AA","▴":"\u25B4","▾":"\u25BE","◂":"\u25C2","▸":"\u25B8","␣":"\u2423","▒":"\u2592","░":"\u2591","▓":"\u2593","█":"\u2588","=⃥":"=\u20E5","≡⃥":"\u2261\u20E5","⌐":"\u2310","𝕓":"\u{1D553}","⊥":"\u22A5","⊥":"\u22A5","⋈":"\u22C8","╗":"\u2557","╔":"\u2554","╖":"\u2556","╓":"\u2553","═":"\u2550","╦":"\u2566","╩":"\u2569","╤":"\u2564","╧":"\u2567","╝":"\u255D","╚":"\u255A","╜":"\u255C","╙":"\u2559","║":"\u2551","╬":"\u256C","╣":"\u2563","╠":"\u2560","╫":"\u256B","╢":"\u2562","╟":"\u255F","⧉":"\u29C9","╕":"\u2555","╒":"\u2552","┐":"\u2510","┌":"\u250C","─":"\u2500","╥":"\u2565","╨":"\u2568","┬":"\u252C","┴":"\u2534","⊟":"\u229F","⊞":"\u229E","⊠":"\u22A0","╛":"\u255B","╘":"\u2558","┘":"\u2518","└":"\u2514","│":"\u2502","╪":"\u256A","╡":"\u2561","╞":"\u255E","┼":"\u253C","┤":"\u2524","├":"\u251C","‵":"\u2035","˘":"\u02D8","¦":"\xA6","¦":"\xA6","𝒷":"\u{1D4B7}","⁏":"\u204F","∽":"\u223D","⋍":"\u22CD","\":"\\","⧅":"\u29C5","⟈":"\u27C8","•":"\u2022","•":"\u2022","≎":"\u224E","⪮":"\u2AAE","≏":"\u224F","≏":"\u224F","ć":"\u0107","∩":"\u2229","⩄":"\u2A44","⩉":"\u2A49","⩋":"\u2A4B","⩇":"\u2A47","⩀":"\u2A40","∩︀":"\u2229\uFE00","⁁":"\u2041","ˇ":"\u02C7","⩍":"\u2A4D","č":"\u010D","ç":"\xE7","ç":"\xE7","ĉ":"\u0109","⩌":"\u2A4C","⩐":"\u2A50","ċ":"\u010B","¸":"\xB8","¸":"\xB8","⦲":"\u29B2","¢":"\xA2","¢":"\xA2","·":"\xB7","𝔠":"\u{1D520}","ч":"\u0447","✓":"\u2713","✓":"\u2713","χ":"\u03C7","○":"\u25CB","⧃":"\u29C3","ˆ":"\u02C6","≗":"\u2257","↺":"\u21BA","↻":"\u21BB","®":"\xAE","Ⓢ":"\u24C8","⊛":"\u229B","⊚":"\u229A","⊝":"\u229D","≗":"\u2257","⨐":"\u2A10","⫯":"\u2AEF","⧂":"\u29C2","♣":"\u2663","♣":"\u2663",":":":","≔":"\u2254","≔":"\u2254",",":",","@":"@","∁":"\u2201","∘":"\u2218","∁":"\u2201","ℂ":"\u2102","≅":"\u2245","⩭":"\u2A6D","∮":"\u222E","𝕔":"\u{1D554}","∐":"\u2210","©":"\xA9","©":"\xA9","℗":"\u2117","↵":"\u21B5","✗":"\u2717","𝒸":"\u{1D4B8}","⫏":"\u2ACF","⫑":"\u2AD1","⫐":"\u2AD0","⫒":"\u2AD2","⋯":"\u22EF","⤸":"\u2938","⤵":"\u2935","⋞":"\u22DE","⋟":"\u22DF","↶":"\u21B6","⤽":"\u293D","∪":"\u222A","⩈":"\u2A48","⩆":"\u2A46","⩊":"\u2A4A","⊍":"\u228D","⩅":"\u2A45","∪︀":"\u222A\uFE00","↷":"\u21B7","⤼":"\u293C","⋞":"\u22DE","⋟":"\u22DF","⋎":"\u22CE","⋏":"\u22CF","¤":"\xA4","¤":"\xA4","↶":"\u21B6","↷":"\u21B7","⋎":"\u22CE","⋏":"\u22CF","∲":"\u2232","∱":"\u2231","⌭":"\u232D","⇓":"\u21D3","⥥":"\u2965","†":"\u2020","ℸ":"\u2138","↓":"\u2193","‐":"\u2010","⊣":"\u22A3","⤏":"\u290F","˝":"\u02DD","ď":"\u010F","д":"\u0434","ⅆ":"\u2146","‡":"\u2021","⇊":"\u21CA","⩷":"\u2A77","°":"\xB0","°":"\xB0","δ":"\u03B4","⦱":"\u29B1","⥿":"\u297F","𝔡":"\u{1D521}","⇃":"\u21C3","⇂":"\u21C2","⋄":"\u22C4","⋄":"\u22C4","♦":"\u2666","♦":"\u2666","¨":"\xA8","ϝ":"\u03DD","⋲":"\u22F2","÷":"\xF7","÷":"\xF7","÷":"\xF7","⋇":"\u22C7","⋇":"\u22C7","ђ":"\u0452","⌞":"\u231E","⌍":"\u230D","$":"$","𝕕":"\u{1D555}","˙":"\u02D9","≐":"\u2250","≑":"\u2251","∸":"\u2238","∔":"\u2214","⊡":"\u22A1","⌆":"\u2306","↓":"\u2193","⇊":"\u21CA","⇃":"\u21C3","⇂":"\u21C2","⤐":"\u2910","⌟":"\u231F","⌌":"\u230C","𝒹":"\u{1D4B9}","ѕ":"\u0455","⧶":"\u29F6","đ":"\u0111","⋱":"\u22F1","▿":"\u25BF","▾":"\u25BE","⇵":"\u21F5","⥯":"\u296F","⦦":"\u29A6","џ":"\u045F","⟿":"\u27FF","⩷":"\u2A77","≑":"\u2251","é":"\xE9","é":"\xE9","⩮":"\u2A6E","ě":"\u011B","≖":"\u2256","ê":"\xEA","ê":"\xEA","≕":"\u2255","э":"\u044D","ė":"\u0117","ⅇ":"\u2147","≒":"\u2252","𝔢":"\u{1D522}","⪚":"\u2A9A","è":"\xE8","è":"\xE8","⪖":"\u2A96","⪘":"\u2A98","⪙":"\u2A99","⏧":"\u23E7","ℓ":"\u2113","⪕":"\u2A95","⪗":"\u2A97","ē":"\u0113","∅":"\u2205","∅":"\u2205","∅":"\u2205"," ":"\u2004"," ":"\u2005"," ":"\u2003","ŋ":"\u014B"," ":"\u2002","ę":"\u0119","𝕖":"\u{1D556}","⋕":"\u22D5","⧣":"\u29E3","⩱":"\u2A71","ε":"\u03B5","ε":"\u03B5","ϵ":"\u03F5","≖":"\u2256","≕":"\u2255","≂":"\u2242","⪖":"\u2A96","⪕":"\u2A95","=":"=","≟":"\u225F","≡":"\u2261","⩸":"\u2A78","⧥":"\u29E5","≓":"\u2253","⥱":"\u2971","ℯ":"\u212F","≐":"\u2250","≂":"\u2242","η":"\u03B7","ð":"\xF0","ð":"\xF0","ë":"\xEB","ë":"\xEB","€":"\u20AC","!":"!","∃":"\u2203","ℰ":"\u2130","ⅇ":"\u2147","≒":"\u2252","ф":"\u0444","♀":"\u2640","ffi":"\uFB03","ff":"\uFB00","ffl":"\uFB04","𝔣":"\u{1D523}","fi":"\uFB01","fj":"fj","♭":"\u266D","fl":"\uFB02","▱":"\u25B1","ƒ":"\u0192","𝕗":"\u{1D557}","∀":"\u2200","⋔":"\u22D4","⫙":"\u2AD9","⨍":"\u2A0D","½":"\xBD","½":"\xBD","⅓":"\u2153","¼":"\xBC","¼":"\xBC","⅕":"\u2155","⅙":"\u2159","⅛":"\u215B","⅔":"\u2154","⅖":"\u2156","¾":"\xBE","¾":"\xBE","⅗":"\u2157","⅜":"\u215C","⅘":"\u2158","⅚":"\u215A","⅝":"\u215D","⅞":"\u215E","⁄":"\u2044","⌢":"\u2322","𝒻":"\u{1D4BB}","≧":"\u2267","⪌":"\u2A8C","ǵ":"\u01F5","γ":"\u03B3","ϝ":"\u03DD","⪆":"\u2A86","ğ":"\u011F","ĝ":"\u011D","г":"\u0433","ġ":"\u0121","≥":"\u2265","⋛":"\u22DB","≥":"\u2265","≧":"\u2267","⩾":"\u2A7E","⩾":"\u2A7E","⪩":"\u2AA9","⪀":"\u2A80","⪂":"\u2A82","⪄":"\u2A84","⋛︀":"\u22DB\uFE00","⪔":"\u2A94","𝔤":"\u{1D524}","≫":"\u226B","⋙":"\u22D9","ℷ":"\u2137","ѓ":"\u0453","≷":"\u2277","⪒":"\u2A92","⪥":"\u2AA5","⪤":"\u2AA4","≩":"\u2269","⪊":"\u2A8A","⪊":"\u2A8A","⪈":"\u2A88","⪈":"\u2A88","≩":"\u2269","⋧":"\u22E7","𝕘":"\u{1D558}","`":"`","ℊ":"\u210A","≳":"\u2273","⪎":"\u2A8E","⪐":"\u2A90",">":">",">":">","⪧":"\u2AA7","⩺":"\u2A7A","⋗":"\u22D7","⦕":"\u2995","⩼":"\u2A7C","⪆":"\u2A86","⥸":"\u2978","⋗":"\u22D7","⋛":"\u22DB","⪌":"\u2A8C","≷":"\u2277","≳":"\u2273","≩︀":"\u2269\uFE00","≩︀":"\u2269\uFE00","⇔":"\u21D4"," ":"\u200A","½":"\xBD","ℋ":"\u210B","ъ":"\u044A","↔":"\u2194","⥈":"\u2948","↭":"\u21AD","ℏ":"\u210F","ĥ":"\u0125","♥":"\u2665","♥":"\u2665","…":"\u2026","⊹":"\u22B9","𝔥":"\u{1D525}","⤥":"\u2925","⤦":"\u2926","⇿":"\u21FF","∻":"\u223B","↩":"\u21A9","↪":"\u21AA","𝕙":"\u{1D559}","―":"\u2015","𝒽":"\u{1D4BD}","ℏ":"\u210F","ħ":"\u0127","⁃":"\u2043","‐":"\u2010","í":"\xED","í":"\xED","⁣":"\u2063","î":"\xEE","î":"\xEE","и":"\u0438","е":"\u0435","¡":"\xA1","¡":"\xA1","⇔":"\u21D4","𝔦":"\u{1D526}","ì":"\xEC","ì":"\xEC","ⅈ":"\u2148","⨌":"\u2A0C","∭":"\u222D","⧜":"\u29DC","℩":"\u2129","ij":"\u0133","ī":"\u012B","ℑ":"\u2111","ℐ":"\u2110","ℑ":"\u2111","ı":"\u0131","⊷":"\u22B7","Ƶ":"\u01B5","∈":"\u2208","℅":"\u2105","∞":"\u221E","⧝":"\u29DD","ı":"\u0131","∫":"\u222B","⊺":"\u22BA","ℤ":"\u2124","⊺":"\u22BA","⨗":"\u2A17","⨼":"\u2A3C","ё":"\u0451","į":"\u012F","𝕚":"\u{1D55A}","ι":"\u03B9","⨼":"\u2A3C","¿":"\xBF","¿":"\xBF","𝒾":"\u{1D4BE}","∈":"\u2208","⋹":"\u22F9","⋵":"\u22F5","⋴":"\u22F4","⋳":"\u22F3","∈":"\u2208","⁢":"\u2062","ĩ":"\u0129","і":"\u0456","ï":"\xEF","ï":"\xEF","ĵ":"\u0135","й":"\u0439","𝔧":"\u{1D527}","ȷ":"\u0237","𝕛":"\u{1D55B}","𝒿":"\u{1D4BF}","ј":"\u0458","є":"\u0454","κ":"\u03BA","ϰ":"\u03F0","ķ":"\u0137","к":"\u043A","𝔨":"\u{1D528}","ĸ":"\u0138","х":"\u0445","ќ":"\u045C","𝕜":"\u{1D55C}","𝓀":"\u{1D4C0}","⇚":"\u21DA","⇐":"\u21D0","⤛":"\u291B","⤎":"\u290E","≦":"\u2266","⪋":"\u2A8B","⥢":"\u2962","ĺ":"\u013A","⦴":"\u29B4","ℒ":"\u2112","λ":"\u03BB","⟨":"\u27E8","⦑":"\u2991","⟨":"\u27E8","⪅":"\u2A85","«":"\xAB","«":"\xAB","←":"\u2190","⇤":"\u21E4","⤟":"\u291F","⤝":"\u291D","↩":"\u21A9","↫":"\u21AB","⤹":"\u2939","⥳":"\u2973","↢":"\u21A2","⪫":"\u2AAB","⤙":"\u2919","⪭":"\u2AAD","⪭︀":"\u2AAD\uFE00","⤌":"\u290C","❲":"\u2772","{":"{","[":"[","⦋":"\u298B","⦏":"\u298F","⦍":"\u298D","ľ":"\u013E","ļ":"\u013C","⌈":"\u2308","{":"{","л":"\u043B","⤶":"\u2936","“":"\u201C","„":"\u201E","⥧":"\u2967","⥋":"\u294B","↲":"\u21B2","≤":"\u2264","←":"\u2190","↢":"\u21A2","↽":"\u21BD","↼":"\u21BC","⇇":"\u21C7","↔":"\u2194","⇆":"\u21C6","⇋":"\u21CB","↭":"\u21AD","⋋":"\u22CB","⋚":"\u22DA","≤":"\u2264","≦":"\u2266","⩽":"\u2A7D","⩽":"\u2A7D","⪨":"\u2AA8","⩿":"\u2A7F","⪁":"\u2A81","⪃":"\u2A83","⋚︀":"\u22DA\uFE00","⪓":"\u2A93","⪅":"\u2A85","⋖":"\u22D6","⋚":"\u22DA","⪋":"\u2A8B","≶":"\u2276","≲":"\u2272","⥼":"\u297C","⌊":"\u230A","𝔩":"\u{1D529}","≶":"\u2276","⪑":"\u2A91","↽":"\u21BD","↼":"\u21BC","⥪":"\u296A","▄":"\u2584","љ":"\u0459","≪":"\u226A","⇇":"\u21C7","⌞":"\u231E","⥫":"\u296B","◺":"\u25FA","ŀ":"\u0140","⎰":"\u23B0","⎰":"\u23B0","≨":"\u2268","⪉":"\u2A89","⪉":"\u2A89","⪇":"\u2A87","⪇":"\u2A87","≨":"\u2268","⋦":"\u22E6","⟬":"\u27EC","⇽":"\u21FD","⟦":"\u27E6","⟵":"\u27F5","⟷":"\u27F7","⟼":"\u27FC","⟶":"\u27F6","↫":"\u21AB","↬":"\u21AC","⦅":"\u2985","𝕝":"\u{1D55D}","⨭":"\u2A2D","⨴":"\u2A34","∗":"\u2217","_":"_","◊":"\u25CA","◊":"\u25CA","⧫":"\u29EB","(":"(","⦓":"\u2993","⇆":"\u21C6","⌟":"\u231F","⇋":"\u21CB","⥭":"\u296D","‎":"\u200E","⊿":"\u22BF","‹":"\u2039","𝓁":"\u{1D4C1}","↰":"\u21B0","≲":"\u2272","⪍":"\u2A8D","⪏":"\u2A8F","[":"[","‘":"\u2018","‚":"\u201A","ł":"\u0142","<":"<","<":"<","⪦":"\u2AA6","⩹":"\u2A79","⋖":"\u22D6","⋋":"\u22CB","⋉":"\u22C9","⥶":"\u2976","⩻":"\u2A7B","⦖":"\u2996","◃":"\u25C3","⊴":"\u22B4","◂":"\u25C2","⥊":"\u294A","⥦":"\u2966","≨︀":"\u2268\uFE00","≨︀":"\u2268\uFE00","∺":"\u223A","¯":"\xAF","¯":"\xAF","♂":"\u2642","✠":"\u2720","✠":"\u2720","↦":"\u21A6","↦":"\u21A6","↧":"\u21A7","↤":"\u21A4","↥":"\u21A5","▮":"\u25AE","⨩":"\u2A29","м":"\u043C","—":"\u2014","∡":"\u2221","𝔪":"\u{1D52A}","℧":"\u2127","µ":"\xB5","µ":"\xB5","∣":"\u2223","*":"*","⫰":"\u2AF0","·":"\xB7","·":"\xB7","−":"\u2212","⊟":"\u229F","∸":"\u2238","⨪":"\u2A2A","⫛":"\u2ADB","…":"\u2026","∓":"\u2213","⊧":"\u22A7","𝕞":"\u{1D55E}","∓":"\u2213","𝓂":"\u{1D4C2}","∾":"\u223E","μ":"\u03BC","⊸":"\u22B8","⊸":"\u22B8","⋙̸":"\u22D9\u0338","≫⃒":"\u226B\u20D2","≫̸":"\u226B\u0338","⇍":"\u21CD","⇎":"\u21CE","⋘̸":"\u22D8\u0338","≪⃒":"\u226A\u20D2","≪̸":"\u226A\u0338","⇏":"\u21CF","⊯":"\u22AF","⊮":"\u22AE","∇":"\u2207","ń":"\u0144","∠⃒":"\u2220\u20D2","≉":"\u2249","⩰̸":"\u2A70\u0338","≋̸":"\u224B\u0338","ʼn":"\u0149","≉":"\u2249","♮":"\u266E","♮":"\u266E","ℕ":"\u2115"," ":"\xA0"," ":"\xA0","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⩃":"\u2A43","ň":"\u0148","ņ":"\u0146","≇":"\u2247","⩭̸":"\u2A6D\u0338","⩂":"\u2A42","н":"\u043D","–":"\u2013","≠":"\u2260","⇗":"\u21D7","⤤":"\u2924","↗":"\u2197","↗":"\u2197","≐̸":"\u2250\u0338","≢":"\u2262","⤨":"\u2928","≂̸":"\u2242\u0338","∄":"\u2204","∄":"\u2204","𝔫":"\u{1D52B}","≧̸":"\u2267\u0338","≱":"\u2271","≱":"\u2271","≧̸":"\u2267\u0338","⩾̸":"\u2A7E\u0338","⩾̸":"\u2A7E\u0338","≵":"\u2275","≯":"\u226F","≯":"\u226F","⇎":"\u21CE","↮":"\u21AE","⫲":"\u2AF2","∋":"\u220B","⋼":"\u22FC","⋺":"\u22FA","∋":"\u220B","њ":"\u045A","⇍":"\u21CD","≦̸":"\u2266\u0338","↚":"\u219A","‥":"\u2025","≰":"\u2270","↚":"\u219A","↮":"\u21AE","≰":"\u2270","≦̸":"\u2266\u0338","⩽̸":"\u2A7D\u0338","⩽̸":"\u2A7D\u0338","≮":"\u226E","≴":"\u2274","≮":"\u226E","⋪":"\u22EA","⋬":"\u22EC","∤":"\u2224","𝕟":"\u{1D55F}","¬":"\xAC","¬":"\xAC","∉":"\u2209","⋹̸":"\u22F9\u0338","⋵̸":"\u22F5\u0338","∉":"\u2209","⋷":"\u22F7","⋶":"\u22F6","∌":"\u220C","∌":"\u220C","⋾":"\u22FE","⋽":"\u22FD","∦":"\u2226","∦":"\u2226","⫽⃥":"\u2AFD\u20E5","∂̸":"\u2202\u0338","⨔":"\u2A14","⊀":"\u2280","⋠":"\u22E0","⪯̸":"\u2AAF\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⇏":"\u21CF","↛":"\u219B","⤳̸":"\u2933\u0338","↝̸":"\u219D\u0338","↛":"\u219B","⋫":"\u22EB","⋭":"\u22ED","⊁":"\u2281","⋡":"\u22E1","⪰̸":"\u2AB0\u0338","𝓃":"\u{1D4C3}","∤":"\u2224","∦":"\u2226","≁":"\u2241","≄":"\u2244","≄":"\u2244","∤":"\u2224","∦":"\u2226","⋢":"\u22E2","⋣":"\u22E3","⊄":"\u2284","⫅̸":"\u2AC5\u0338","⊈":"\u2288","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⫅̸":"\u2AC5\u0338","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⊅":"\u2285","⫆̸":"\u2AC6\u0338","⊉":"\u2289","⊃⃒":"\u2283\u20D2","⊉":"\u2289","⫆̸":"\u2AC6\u0338","≹":"\u2279","ñ":"\xF1","ñ":"\xF1","≸":"\u2278","⋪":"\u22EA","⋬":"\u22EC","⋫":"\u22EB","⋭":"\u22ED","ν":"\u03BD","#":"#","№":"\u2116"," ":"\u2007","⊭":"\u22AD","⤄":"\u2904","≍⃒":"\u224D\u20D2","⊬":"\u22AC","≥⃒":"\u2265\u20D2",">⃒":">\u20D2","⧞":"\u29DE","⤂":"\u2902","≤⃒":"\u2264\u20D2","<⃒":"<\u20D2","⊴⃒":"\u22B4\u20D2","⤃":"\u2903","⊵⃒":"\u22B5\u20D2","∼⃒":"\u223C\u20D2","⇖":"\u21D6","⤣":"\u2923","↖":"\u2196","↖":"\u2196","⤧":"\u2927","Ⓢ":"\u24C8","ó":"\xF3","ó":"\xF3","⊛":"\u229B","⊚":"\u229A","ô":"\xF4","ô":"\xF4","о":"\u043E","⊝":"\u229D","ő":"\u0151","⨸":"\u2A38","⊙":"\u2299","⦼":"\u29BC","œ":"\u0153","⦿":"\u29BF","𝔬":"\u{1D52C}","˛":"\u02DB","ò":"\xF2","ò":"\xF2","⧁":"\u29C1","⦵":"\u29B5","Ω":"\u03A9","∮":"\u222E","↺":"\u21BA","⦾":"\u29BE","⦻":"\u29BB","‾":"\u203E","⧀":"\u29C0","ō":"\u014D","ω":"\u03C9","ο":"\u03BF","⦶":"\u29B6","⊖":"\u2296","𝕠":"\u{1D560}","⦷":"\u29B7","⦹":"\u29B9","⊕":"\u2295","∨":"\u2228","↻":"\u21BB","⩝":"\u2A5D","ℴ":"\u2134","ℴ":"\u2134","ª":"\xAA","ª":"\xAA","º":"\xBA","º":"\xBA","⊶":"\u22B6","⩖":"\u2A56","⩗":"\u2A57","⩛":"\u2A5B","ℴ":"\u2134","ø":"\xF8","ø":"\xF8","⊘":"\u2298","õ":"\xF5","õ":"\xF5","⊗":"\u2297","⨶":"\u2A36","ö":"\xF6","ö":"\xF6","⌽":"\u233D","∥":"\u2225","¶":"\xB6","¶":"\xB6","∥":"\u2225","⫳":"\u2AF3","⫽":"\u2AFD","∂":"\u2202","п":"\u043F","%":"%",".":".","‰":"\u2030","⊥":"\u22A5","‱":"\u2031","𝔭":"\u{1D52D}","φ":"\u03C6","ϕ":"\u03D5","ℳ":"\u2133","☎":"\u260E","π":"\u03C0","⋔":"\u22D4","ϖ":"\u03D6","ℏ":"\u210F","ℎ":"\u210E","ℏ":"\u210F","+":"+","⨣":"\u2A23","⊞":"\u229E","⨢":"\u2A22","∔":"\u2214","⨥":"\u2A25","⩲":"\u2A72","±":"\xB1","±":"\xB1","⨦":"\u2A26","⨧":"\u2A27","±":"\xB1","⨕":"\u2A15","𝕡":"\u{1D561}","£":"\xA3","£":"\xA3","≺":"\u227A","⪳":"\u2AB3","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","≺":"\u227A","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","⪹":"\u2AB9","⪵":"\u2AB5","⋨":"\u22E8","≾":"\u227E","′":"\u2032","ℙ":"\u2119","⪵":"\u2AB5","⪹":"\u2AB9","⋨":"\u22E8","∏":"\u220F","⌮":"\u232E","⌒":"\u2312","⌓":"\u2313","∝":"\u221D","∝":"\u221D","≾":"\u227E","⊰":"\u22B0","𝓅":"\u{1D4C5}","ψ":"\u03C8"," ":"\u2008","𝔮":"\u{1D52E}","⨌":"\u2A0C","𝕢":"\u{1D562}","⁗":"\u2057","𝓆":"\u{1D4C6}","ℍ":"\u210D","⨖":"\u2A16","?":"?","≟":"\u225F",""":'"',""":'"',"⇛":"\u21DB","⇒":"\u21D2","⤜":"\u291C","⤏":"\u290F","⥤":"\u2964","∽̱":"\u223D\u0331","ŕ":"\u0155","√":"\u221A","⦳":"\u29B3","⟩":"\u27E9","⦒":"\u2992","⦥":"\u29A5","⟩":"\u27E9","»":"\xBB","»":"\xBB","→":"\u2192","⥵":"\u2975","⇥":"\u21E5","⤠":"\u2920","⤳":"\u2933","⤞":"\u291E","↪":"\u21AA","↬":"\u21AC","⥅":"\u2945","⥴":"\u2974","↣":"\u21A3","↝":"\u219D","⤚":"\u291A","∶":"\u2236","ℚ":"\u211A","⤍":"\u290D","❳":"\u2773","}":"}","]":"]","⦌":"\u298C","⦎":"\u298E","⦐":"\u2990","ř":"\u0159","ŗ":"\u0157","⌉":"\u2309","}":"}","р":"\u0440","⤷":"\u2937","⥩":"\u2969","”":"\u201D","”":"\u201D","↳":"\u21B3","ℜ":"\u211C","ℛ":"\u211B","ℜ":"\u211C","ℝ":"\u211D","▭":"\u25AD","®":"\xAE","®":"\xAE","⥽":"\u297D","⌋":"\u230B","𝔯":"\u{1D52F}","⇁":"\u21C1","⇀":"\u21C0","⥬":"\u296C","ρ":"\u03C1","ϱ":"\u03F1","→":"\u2192","↣":"\u21A3","⇁":"\u21C1","⇀":"\u21C0","⇄":"\u21C4","⇌":"\u21CC","⇉":"\u21C9","↝":"\u219D","⋌":"\u22CC","˚":"\u02DA","≓":"\u2253","⇄":"\u21C4","⇌":"\u21CC","‏":"\u200F","⎱":"\u23B1","⎱":"\u23B1","⫮":"\u2AEE","⟭":"\u27ED","⇾":"\u21FE","⟧":"\u27E7","⦆":"\u2986","𝕣":"\u{1D563}","⨮":"\u2A2E","⨵":"\u2A35",")":")","⦔":"\u2994","⨒":"\u2A12","⇉":"\u21C9","›":"\u203A","𝓇":"\u{1D4C7}","↱":"\u21B1","]":"]","’":"\u2019","’":"\u2019","⋌":"\u22CC","⋊":"\u22CA","▹":"\u25B9","⊵":"\u22B5","▸":"\u25B8","⧎":"\u29CE","⥨":"\u2968","℞":"\u211E","ś":"\u015B","‚":"\u201A","≻":"\u227B","⪴":"\u2AB4","⪸":"\u2AB8","š":"\u0161","≽":"\u227D","⪰":"\u2AB0","ş":"\u015F","ŝ":"\u015D","⪶":"\u2AB6","⪺":"\u2ABA","⋩":"\u22E9","⨓":"\u2A13","≿":"\u227F","с":"\u0441","⋅":"\u22C5","⊡":"\u22A1","⩦":"\u2A66","⇘":"\u21D8","⤥":"\u2925","↘":"\u2198","↘":"\u2198","§":"\xA7","§":"\xA7",";":";","⤩":"\u2929","∖":"\u2216","∖":"\u2216","✶":"\u2736","𝔰":"\u{1D530}","⌢":"\u2322","♯":"\u266F","щ":"\u0449","ш":"\u0448","∣":"\u2223","∥":"\u2225","­":"\xAD","­":"\xAD","σ":"\u03C3","ς":"\u03C2","ς":"\u03C2","∼":"\u223C","⩪":"\u2A6A","≃":"\u2243","≃":"\u2243","⪞":"\u2A9E","⪠":"\u2AA0","⪝":"\u2A9D","⪟":"\u2A9F","≆":"\u2246","⨤":"\u2A24","⥲":"\u2972","←":"\u2190","∖":"\u2216","⨳":"\u2A33","⧤":"\u29E4","∣":"\u2223","⌣":"\u2323","⪪":"\u2AAA","⪬":"\u2AAC","⪬︀":"\u2AAC\uFE00","ь":"\u044C","/":"/","⧄":"\u29C4","⌿":"\u233F","𝕤":"\u{1D564}","♠":"\u2660","♠":"\u2660","∥":"\u2225","⊓":"\u2293","⊓︀":"\u2293\uFE00","⊔":"\u2294","⊔︀":"\u2294\uFE00","⊏":"\u228F","⊑":"\u2291","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊐":"\u2290","⊒":"\u2292","□":"\u25A1","□":"\u25A1","▪":"\u25AA","▪":"\u25AA","→":"\u2192","𝓈":"\u{1D4C8}","∖":"\u2216","⌣":"\u2323","⋆":"\u22C6","☆":"\u2606","★":"\u2605","ϵ":"\u03F5","ϕ":"\u03D5","¯":"\xAF","⊂":"\u2282","⫅":"\u2AC5","⪽":"\u2ABD","⊆":"\u2286","⫃":"\u2AC3","⫁":"\u2AC1","⫋":"\u2ACB","⊊":"\u228A","⪿":"\u2ABF","⥹":"\u2979","⊂":"\u2282","⊆":"\u2286","⫅":"\u2AC5","⊊":"\u228A","⫋":"\u2ACB","⫇":"\u2AC7","⫕":"\u2AD5","⫓":"\u2AD3","≻":"\u227B","⪸":"\u2AB8","≽":"\u227D","⪰":"\u2AB0","⪺":"\u2ABA","⪶":"\u2AB6","⋩":"\u22E9","≿":"\u227F","∑":"\u2211","♪":"\u266A","¹":"\xB9","¹":"\xB9","²":"\xB2","²":"\xB2","³":"\xB3","³":"\xB3","⊃":"\u2283","⫆":"\u2AC6","⪾":"\u2ABE","⫘":"\u2AD8","⊇":"\u2287","⫄":"\u2AC4","⟉":"\u27C9","⫗":"\u2AD7","⥻":"\u297B","⫂":"\u2AC2","⫌":"\u2ACC","⊋":"\u228B","⫀":"\u2AC0","⊃":"\u2283","⊇":"\u2287","⫆":"\u2AC6","⊋":"\u228B","⫌":"\u2ACC","⫈":"\u2AC8","⫔":"\u2AD4","⫖":"\u2AD6","⇙":"\u21D9","⤦":"\u2926","↙":"\u2199","↙":"\u2199","⤪":"\u292A","ß":"\xDF","ß":"\xDF","⌖":"\u2316","τ":"\u03C4","⎴":"\u23B4","ť":"\u0165","ţ":"\u0163","т":"\u0442","⃛":"\u20DB","⌕":"\u2315","𝔱":"\u{1D531}","∴":"\u2234","∴":"\u2234","θ":"\u03B8","ϑ":"\u03D1","ϑ":"\u03D1","≈":"\u2248","∼":"\u223C"," ":"\u2009","≈":"\u2248","∼":"\u223C","þ":"\xFE","þ":"\xFE","˜":"\u02DC","×":"\xD7","×":"\xD7","⊠":"\u22A0","⨱":"\u2A31","⨰":"\u2A30","∭":"\u222D","⤨":"\u2928","⊤":"\u22A4","⌶":"\u2336","⫱":"\u2AF1","𝕥":"\u{1D565}","⫚":"\u2ADA","⤩":"\u2929","‴":"\u2034","™":"\u2122","▵":"\u25B5","▿":"\u25BF","◃":"\u25C3","⊴":"\u22B4","≜":"\u225C","▹":"\u25B9","⊵":"\u22B5","◬":"\u25EC","≜":"\u225C","⨺":"\u2A3A","⨹":"\u2A39","⧍":"\u29CD","⨻":"\u2A3B","⏢":"\u23E2","𝓉":"\u{1D4C9}","ц":"\u0446","ћ":"\u045B","ŧ":"\u0167","≬":"\u226C","↞":"\u219E","↠":"\u21A0","⇑":"\u21D1","⥣":"\u2963","ú":"\xFA","ú":"\xFA","↑":"\u2191","ў":"\u045E","ŭ":"\u016D","û":"\xFB","û":"\xFB","у":"\u0443","⇅":"\u21C5","ű":"\u0171","⥮":"\u296E","⥾":"\u297E","𝔲":"\u{1D532}","ù":"\xF9","ù":"\xF9","↿":"\u21BF","↾":"\u21BE","▀":"\u2580","⌜":"\u231C","⌜":"\u231C","⌏":"\u230F","◸":"\u25F8","ū":"\u016B","¨":"\xA8","¨":"\xA8","ų":"\u0173","𝕦":"\u{1D566}","↑":"\u2191","↕":"\u2195","↿":"\u21BF","↾":"\u21BE","⊎":"\u228E","υ":"\u03C5","ϒ":"\u03D2","υ":"\u03C5","⇈":"\u21C8","⌝":"\u231D","⌝":"\u231D","⌎":"\u230E","ů":"\u016F","◹":"\u25F9","𝓊":"\u{1D4CA}","⋰":"\u22F0","ũ":"\u0169","▵":"\u25B5","▴":"\u25B4","⇈":"\u21C8","ü":"\xFC","ü":"\xFC","⦧":"\u29A7","⇕":"\u21D5","⫨":"\u2AE8","⫩":"\u2AE9","⊨":"\u22A8","⦜":"\u299C","ϵ":"\u03F5","ϰ":"\u03F0","∅":"\u2205","ϕ":"\u03D5","ϖ":"\u03D6","∝":"\u221D","↕":"\u2195","ϱ":"\u03F1","ς":"\u03C2","⊊︀":"\u228A\uFE00","⫋︀":"\u2ACB\uFE00","⊋︀":"\u228B\uFE00","⫌︀":"\u2ACC\uFE00","ϑ":"\u03D1","⊲":"\u22B2","⊳":"\u22B3","в":"\u0432","⊢":"\u22A2","∨":"\u2228","⊻":"\u22BB","≚":"\u225A","⋮":"\u22EE","|":"|","|":"|","𝔳":"\u{1D533}","⊲":"\u22B2","⊂⃒":"\u2282\u20D2","⊃⃒":"\u2283\u20D2","𝕧":"\u{1D567}","∝":"\u221D","⊳":"\u22B3","𝓋":"\u{1D4CB}","⫋︀":"\u2ACB\uFE00","⊊︀":"\u228A\uFE00","⫌︀":"\u2ACC\uFE00","⊋︀":"\u228B\uFE00","⦚":"\u299A","ŵ":"\u0175","⩟":"\u2A5F","∧":"\u2227","≙":"\u2259","℘":"\u2118","𝔴":"\u{1D534}","𝕨":"\u{1D568}","℘":"\u2118","≀":"\u2240","≀":"\u2240","𝓌":"\u{1D4CC}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","▽":"\u25BD","𝔵":"\u{1D535}","⟺":"\u27FA","⟷":"\u27F7","ξ":"\u03BE","⟸":"\u27F8","⟵":"\u27F5","⟼":"\u27FC","⋻":"\u22FB","⨀":"\u2A00","𝕩":"\u{1D569}","⨁":"\u2A01","⨂":"\u2A02","⟹":"\u27F9","⟶":"\u27F6","𝓍":"\u{1D4CD}","⨆":"\u2A06","⨄":"\u2A04","△":"\u25B3","⋁":"\u22C1","⋀":"\u22C0","ý":"\xFD","ý":"\xFD","я":"\u044F","ŷ":"\u0177","ы":"\u044B","¥":"\xA5","¥":"\xA5","𝔶":"\u{1D536}","ї":"\u0457","𝕪":"\u{1D56A}","𝓎":"\u{1D4CE}","ю":"\u044E","ÿ":"\xFF","ÿ":"\xFF","ź":"\u017A","ž":"\u017E","з":"\u0437","ż":"\u017C","ℨ":"\u2128","ζ":"\u03B6","𝔷":"\u{1D537}","ж":"\u0436","⇝":"\u21DD","𝕫":"\u{1D56B}","𝓏":"\u{1D4CF}","‍":"\u200D","‌":"\u200C"},Ci=ip;function ap(r){return r.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(e,t)=>{if(typeof Ci[e]=="string")return Ci[e];if(t.charAt(0)!=="#"||e.charAt(e.length-1)!==";")return e;let s;t.charAt(1)==="x"?s=parseInt(t.substr(2),16):s=parseInt(t.substr(1),10);var n="";return s>=55296&&s<=57343||s>1114111?"\uFFFD":(s>65535&&(s-=65536,n+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),n+=String.fromCharCode(s),n)})}o(ap,"decodeHTMLEntities");function tr(r){return r.trim().replace(/[<>"'?&]/g,e=>{let t=e.charCodeAt(0).toString(16);return t.length<2&&(t="0"+t),"&#x"+t.toUpperCase()+";"})}o(tr,"escapeHtml");function Ho(r){return"
"+tr(r).replace(/\n/g,"
")+"
"}o(Ho,"textToHtml");function Qo(r){return r=r.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/]*>/gi,` -`).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,` - -`).replace(/]*>.*?<\/script\b[^>]*>/gi," ").replace(/^.*]*>/i,"").replace(/^.*<\/head\b[^>]*>/i,"").replace(/^.*<\!doctype\b[^>]*>/i,"").replace(/<\/body\b[^>]*>.*$/i,"").replace(/<\/html\b[^>]*>.*$/i,"").replace(/]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi," ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi,"").replace(/]*>[\n\u0001\s]*/gi,"* ").replace(/]*>/g,` -------------- -`).replace(/<[^>]*>/g," ").replace(/\u0001/g,` -`).replace(/[ \t]+/g," ").replace(/^\s+$/gm,"").replace(/\n\n+/g,` - -`).replace(/^\n+/,` -`).replace(/\n+$/,` -`),r=ap(r),r}o(Qo,"htmlToText");function Go(r){return[].concat(r.name||[]).concat(r.name?`<${r.address}>`:r.address).join(" ")}o(Go,"formatTextAddress");function Si(r){let e=[],t=o((s,n)=>{if(n&&e.push(", "),s.group){let i=`${s.name}:`,a=";";e.push(i),s.group.forEach(t),e.push(a)}else e.push(Go(s))},"processAddress");return r.forEach(t),e.join("")}o(Si,"formatTextAddresses");function Wo(r){return``}o(Wo,"formatHtmlAddress");function Ti(r){let e=[],t=o((s,n)=>{if(n&&e.push(''),s.group){let i=``,a='';e.push(i),s.group.forEach(t),e.push(a)}else e.push(Wo(s))},"processAddress");return r.forEach(t),e.join(" ")}o(Ti,"formatHtmlAddresses");function op(r,e,t){r=(r||"").toString(),e=e||76;let s=0,n=r.length,i="",a,u;for(;s"u"?r.date:new Intl.DateTimeFormat("default",a).format(new Date(r.date));e.push({key:"Date",val:u})}r.to&&r.to.length&&e.push({key:"To",val:Si(r.to)}),r.cc&&r.cc.length&&e.push({key:"Cc",val:Si(r.cc)}),r.bcc&&r.bcc.length&&e.push({key:"Bcc",val:Si(r.bcc)});let t=e.map(a=>a.key.length).reduce((a,u)=>u>a?u:a,0);e=e.flatMap(a=>{let u=t-a.key.length,l=`${a.key}: ${" ".repeat(u)}`,c=`${" ".repeat(a.key.length+1)} ${" ".repeat(u)}`;return op(a.val,80,!0).split(/\r?\n/).map(m=>m.trim()).map((m,x)=>`${x?c:l}${m}`)});let s=e.map(a=>a.length).reduce((a,u)=>u>a?u:a,0),n="-".repeat(s);return` -${n} -${e.join(` -`)} -${n} -`}o(Ni,"formatTextHeader");function ki(r){let e=[];if(r.from&&e.push(``),r.subject&&e.push(``),r.date){let s={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},n=typeof Intl>"u"?r.date:new Intl.DateTimeFormat("default",s).format(new Date(r.date));e.push(``)}return r.to&&r.to.length&&e.push(``),r.cc&&r.cc.length&&e.push(``),r.bcc&&r.bcc.length&&e.push(``),``}o(ki,"formatHtmlHeader");function up(r){let e=!1,t="text",s,n=[],i={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,u,l=!1;for(a=0,u=r.length;a{m.group?c=c.concat(m.group):c.push(m)}),n.push({name:Zt(i.text||s&&s.name),group:c})}else{if(!i.address.length&&i.text.length){for(a=i.text.length-1;a>=0;a--)if(!i.textWasQuoted[a]&&i.text[a].match(/^[^@\s]+@[^@\s]+$/)){i.address=i.text.splice(a,1),i.textWasQuoted.splice(a,1);break}let c=o(function(d){return i.address.length?d:(i.address=[d.trim()]," ")},"_regexHandler");if(!i.address.length)for(a=i.text.length-1;a>=0&&!(!i.textWasQuoted[a]&&(i.text[a]=i.text[a].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,c).trim(),i.address.length));a--);}if(!i.text.length&&i.comment.length&&(i.text=i.comment,i.comment=[]),i.address.length>1&&(i.text=i.text.concat(i.address.splice(1))),i.text=i.text.join(" "),i.address=i.address.join(" "),!i.address&&/^=\?[^=]+?=$/.test(i.text.trim())){let c=Ri(Zt(i.text));if(c&&c.length)return c}if(!i.address&&e)return[];s={address:i.address||i.text||"",name:Zt(i.text||i.address||"")},s.address===s.name&&((s.address||"").match(/@/)?s.name="":s.address=""),n.push(s)}return n}o(up,"_handleAddress");var kn=class{constructor(e){this.str=(e||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let e=[];for(let t=0,s=this.str.length;t{t.value=(t.value||"").toString().trim(),t.value&&e.push(t)}),e}checkChar(e,t){if(!this.escaped){if(e===this.operatorExpecting){this.node={type:"operator",value:e},t&&![" "," ","\r",` -`,",",";"].includes(t)&&(this.node.noBreak=!0),this.list.push(this.node),this.node=null,this.operatorExpecting="",this.escaped=!1;return}else if(!this.operatorExpecting&&e in this.operators){this.node={type:"operator",value:e},this.list.push(this.node),this.node=null,this.operatorExpecting=this.operators[e],this.escaped=!1;return}else if(['"',"'"].includes(this.operatorExpecting)&&e==="\\"){this.escaped=!0;return}}this.node||(this.node={type:"text",value:""},this.list.push(this.node)),e===` -`&&(e=" "),(e.charCodeAt(0)>=33||[" "," "].includes(e))&&(this.node.value+=e),this.escaped=!1}};o(kn,"Tokenizer");function Ri(r,e){e=e||{};let s=new kn(r).tokenize(),n=[],i=[],a=[];if(s.forEach(u=>{u.type==="operator"&&(u.value===","||u.value===";")?(i.length&&n.push(i),i=[]):i.push(u)}),i.length&&n.push(i),n.forEach(u=>{u=up(u),u.length&&(a=a.concat(u))}),e.flatten){let u=[],l=o(c=>{c.forEach(d=>{if(d.group)return l(d.group);u.push(d)})},"walkAddressList");return l(a),u}return a}o(Ri,"addressParser");var Rn=Ri;function Jo(r){for(var e="",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=new Uint8Array(r),n=s.byteLength,i=n%3,a=n-i,u,l,c,d,m,x=0;x>18,l=(m&258048)>>12,c=(m&4032)>>6,d=m&63,e+=t[u]+t[l]+t[c]+t[d];return i==1?(m=s[a],u=(m&252)>>2,l=(m&3)<<4,e+=t[u]+t[l]+"=="):i==2&&(m=s[a]<<8|s[a+1],u=(m&64512)>>10,l=(m&1008)>>4,c=(m&15)<<2,e+=t[u]+t[l]+t[c]+"="),e}o(Jo,"base64ArrayBuffer");var lp=256,cp=2*1024*1024,rt=class{static parse(e,t){return new rt(t).parse(e)}constructor(e){this.options=e||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||lp,maxHeadersSize:this.options.maxHeadersSize||cp},this.root=this.currentNode=new er({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(e,t){let s=this.boundaries;if(s.length&&e.length>2&&e[0]===45&&e[1]===45)for(let n=s.length-1;n>=0;n--){let i=s[n];if(e.length!==i.value.length+2&&e.length!==i.value.length+4)continue;let a=e.length===i.value.length+4;if(a&&(e[e.length-2]!==45||e[e.length-1]!==45))continue;let u=!0;for(let l=0;l({bytes:new Uint8Array(this.buf,e,t-e),done:this.readPos>=this.av.length}),"res");for(;this.readPos{if(u=u||!1,l=l||!1,a.contentType.multipart)a.contentType.multipart==="alternative"?u=a:a.contentType.multipart==="related"&&(l=a);else if(this.isInlineMessageRfc822(a)&&!n){let c=new rt;a.subMessage=await c.parse(a.content),s.has(a)||s.set(a,{});let d=s.get(a);(a.subMessage.text||!a.subMessage.html)&&(d.plain=d.plain||[],d.plain.push({type:"subMessage",value:a.subMessage}),t.add("plain")),a.subMessage.html&&(d.html=d.html||[],d.html.push({type:"subMessage",value:a.subMessage}),t.add("html")),c.textMap&&c.textMap.forEach((m,x)=>{s.set(x,m)});for(let m of a.subMessage.attachments||[])this.attachments.push(m)}else if(this.isInlineTextNode(a)){let c=a.contentType.parsed.value.substr(a.contentType.parsed.value.indexOf("/")+1),d=u||a;s.has(d)||s.set(d,{});let m=s.get(d);m[c]=m[c]||[],m[c].push({type:"text",value:a.getTextContent()}),t.add(c)}else if(a.content){let c=a.contentDisposition.parsed.params.filename||a.contentType.parsed.params.name||null,d={filename:c?Zt(c):null,mimeType:a.contentType.parsed.value,disposition:a.contentDisposition.parsed.value||null};switch(l&&a.contentId&&(d.related=!0),a.contentDescription&&(d.description=a.contentDescription),a.contentId&&(d.contentId=a.contentId),a.contentType.parsed.value){case"text/calendar":case"application/ics":{a.contentType.parsed.params.method&&(d.method=a.contentType.parsed.params.method.toString().toUpperCase().trim());let m=a.getTextContent().replace(/\r?\n/g,` -`).replace(/\n*$/,` -`);d.content=Dt.encode(m);break}default:d.content=a.content}this.attachments.push(d)}for(let c of a.childNodes)await i(c,u,l)},"walk");await i(this.root,!1,[]),s.forEach(a=>{t.forEach(u=>{if(e[u]||(e[u]=[]),a[u])a[u].forEach(l=>{switch(l.type){case"text":e[u].push(l.value);break;case"subMessage":switch(u){case"html":e[u].push(ki(l.value));break;case"plain":e[u].push(Ni(l.value));break}break}});else{let l;switch(u){case"html":l="plain";break;case"plain":l="html";break}(a[l]||[]).forEach(c=>{switch(c.type){case"text":switch(u){case"html":e[u].push(Ho(c.value));break;case"plain":e[u].push(Qo(c.value));break}break;case"subMessage":switch(u){case"html":e[u].push(ki(c.value));break;case"plain":e[u].push(Ni(c.value));break}break}})}})}),Object.keys(e).forEach(a=>{e[a]=e[a].join(` -`)}),this.textContent=e}isInlineTextNode(e){if(e.contentDisposition.parsed.value==="attachment")return!1;switch(e.contentType.parsed.value){case"text/html":case"text/plain":return!0;case"text/calendar":case"text/csv":default:return!1}}isInlineMessageRfc822(e){return e.contentType.parsed.value!=="message/rfc822"?!1:(e.contentDisposition.parsed.value||(this.options.rfc822Attachments?"attachment":"inline"))==="inline"}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let e=!1,t=o(s=>{s.contentType.multipart||["message/delivery-status","message/feedback-report"].includes(s.contentType.parsed.value)&&(e=!0);for(let n of s.childNodes)t(n)},"walk");return t(this.root),e}async resolveStream(e){let t=0,s=[],n=e.getReader();for(;;){let{done:u,value:l}=await n.read();if(u)break;s.push(l),t+=l.length}let i=new Uint8Array(t),a=0;for(let u of s)i.set(u,a),a+=u.length;return i}async parse(e){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,e&&typeof e.getReader=="function"&&(e=await this.resolveStream(e)),e=e||new ArrayBuffer(0),typeof e=="string"&&(e=Dt.encode(e)),(e instanceof Blob||Object.prototype.toString.call(e)==="[object Blob]")&&(e=await _t(e)),e.buffer instanceof ArrayBuffer&&(e=new Uint8Array(e).buffer),this.buf=e,this.av=new Uint8Array(e),this.readPos=0;this.readPos({key:n.key,value:n.value})).reverse()};for(let n of["from","sender"]){let i=this.root.headers.find(a=>a.key===n);if(i&&i.value){let a=Rn(i.value);a&&a.length&&(t[n]=a[0])}}for(let n of["delivered-to","return-path"]){let i=this.root.headers.find(a=>a.key===n);if(i&&i.value){let a=Rn(i.value);if(a&&a.length&&a[0].address){let u=n.replace(/\-(.)/g,(l,c)=>c.toUpperCase());t[u]=a[0].address}}}for(let n of["to","cc","bcc","reply-to"]){let i=this.root.headers.filter(u=>u.key===n),a=[];if(i.filter(u=>u&&u.value).map(u=>Rn(u.value)).forEach(u=>a=a.concat(u||[])),a&&a.length){let u=n.replace(/\-(.)/g,(l,c)=>c.toUpperCase());t[u]=a}}for(let n of["subject","message-id","in-reply-to","references"]){let i=this.root.headers.find(a=>a.key===n);if(i&&i.value){let a=n.replace(/\-(.)/g,(u,l)=>l.toUpperCase());t[a]=Zt(i.value)}}let s=this.root.headers.find(n=>n.key==="date");if(s){let n=new Date(s.value);!n||n.toString()==="Invalid Date"?n=s.value:n=n.toISOString(),t.date=n}switch(this.textContent?.html&&(t.html=this.textContent.html),this.textContent?.plain&&(t.text=this.textContent.plain),t.attachments=this.attachments,this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let i of t.attachments||[])i?.content&&(i.content=Jo(i.content),i.encoding="base64");break;case"utf8":let n=new TextDecoder("utf8");for(let i of t.attachments||[])i?.content&&(i.content=n.decode(i.content),i.encoding="utf8");break;default:throw new Error("Unknwon attachment encoding")}return t}};o(rt,"PostalMime");function Yo(r,e){let t=atob(r),s="";for(let n=0;n{let t=r.req.header("X-API-Key");if(!t){let i=r.req.header("Authorization");i?.startsWith("Bearer ")&&(t=i.substring(7))}if(!t)return r.json({error:{code:"UNAUTHORIZED",message:"Missing API Key. Provide it via X-API-Key header or Authorization: Bearer "}},401);let s=ce(r.env.DB),n=await No(s,t);if(!n)return r.json({error:{code:"UNAUTHORIZED",message:"Invalid API Key"}},401);if(!n.isActive)return r.json({error:{code:"FORBIDDEN",message:"API Key is disabled"}},403);if(n.expiresAt&&n.expiresAt{let e=ce(r.env.DB),t=r.get("apiKey"),s={};try{s=await r.req.json()}catch{}let n=r.env.EMAIL_DOMAIN?r.env.EMAIL_DOMAIN.split(",").map(x=>x.trim()):[];if(n.length===0)return r.json({error:{code:"CONFIGURATION_ERROR",message:"No email domains configured"}},500);let i=s.domain||n[0];if(!n.includes(i))return r.json({error:{code:"VALIDATION_ERROR",message:`Invalid domain. Available domains: ${n.join(", ")}`,details:{field:"domain",allowed:n}}},400);let u=`${s.localPart||dp()}@${i}`,l=s.expiresIn||24*60*60,c=new Date(Date.now()+l*1e3),d=new Date,m={id:Fs(),address:u,domain:i,expiresAt:c,apiKeyId:t.id,createdAt:d,updatedAt:d};try{return await Oo(e,m),await $o(e),r.json({data:{id:m.id,address:m.address,domain:m.domain,expiresAt:m.expiresAt.toISOString(),createdAt:m.createdAt.toISOString()}},201)}catch(x){return x.message?.includes("UNIQUE constraint failed")?r.json({error:{code:"CONFLICT",message:"Email address already exists"}},409):(console.error("Create mailbox error:",x),r.json({error:{code:"INTERNAL_ERROR",message:"Failed to create mailbox"}},500))}});Vr.get("/:id",async r=>{let e=ce(r.env.DB),t=r.get("apiKey"),{id:s}=r.req.param(),n=await Rs(e,s);if(!n)return r.json({error:{code:"NOT_FOUND",message:"Mailbox not found"}},404);if(n.apiKeyId!==t.id)return r.json({error:{code:"FORBIDDEN",message:"You do not have access to this mailbox"}},403);let i=await jo(e,n.address);return r.json({data:{id:n.id,address:n.address,domain:n.domain,expiresAt:n.expiresAt?.toISOString()||null,createdAt:n.createdAt.toISOString(),messageCount:i}})});Vr.get("/:id/messages",async r=>{let e=ce(r.env.DB),t=r.get("apiKey"),{id:s}=r.req.param(),n=await Rs(e,s);if(!n)return r.json({error:{code:"NOT_FOUND",message:"Mailbox not found"}},404);if(n.apiKeyId!==t.id)return r.json({error:{code:"FORBIDDEN",message:"You do not have access to this mailbox"}},403);let i=Math.max(1,parseInt(r.req.query("page")||"1",10)),a=Math.min(100,Math.max(1,parseInt(r.req.query("limit")||"20",10))),u=r.req.query("sort")==="asc"?"asc":"desc",{messages:l,total:c,totalPages:d}=await Bo(e,n.address,{page:i,limit:a,sort:u});return r.json({data:l.map(m=>({id:m.id,from:m.from,subject:m.subject,preview:m.text?.substring(0,100)||null,receivedAt:m.createdAt.toISOString()})),pagination:{page:i,limit:a,total:c,totalPages:d,hasMore:i{let e=ce(r.env.DB),t=r.get("apiKey"),{id:s,messageId:n}=r.req.param(),i=await Rs(e,s);if(!i)return r.json({error:{code:"NOT_FOUND",message:"Mailbox not found"}},404);if(i.apiKeyId!==t.id)return r.json({error:{code:"FORBIDDEN",message:"You do not have access to this mailbox"}},403);let a=await qo(e,i.address,n);return a?r.json({data:{id:a.id,messageId:a.messageId,from:a.from,to:a.to,cc:a.cc,bcc:a.bcc,replyTo:a.replyTo,subject:a.subject,text:a.text,html:a.html,headers:a.headers,receivedAt:a.createdAt.toISOString()}}):r.json({error:{code:"NOT_FOUND",message:"Message not found"}},404)});Vr.delete("/:id/messages/:messageId",async r=>{let e=ce(r.env.DB),t=r.get("apiKey"),{id:s,messageId:n}=r.req.param(),i=await Rs(e,s);return i?i.apiKeyId!==t.id?r.json({error:{code:"FORBIDDEN",message:"You do not have access to this mailbox"}},403):await Fo(e,i.address,n)?r.json({data:{deleted:!0,id:n}}):r.json({error:{code:"NOT_FOUND",message:"Message not found"}},404):r.json({error:{code:"NOT_FOUND",message:"Mailbox not found"}},404)});var Zo=Vr;var On=new Nt;On.use("/*",en());On.use("/*",Xo);On.route("/mailboxes",Zo);var eu=On;var rr=new Nt;rr.use("/api/*",en());var tu=o(async(r,e)=>{let t;try{t=await r.req.json()}catch(l){return console.error("\u8BF7\u6C42\u4F53\u89E3\u6790\u4E3AJSON\u65F6\u51FA\u9519:",l),r.json({message:"\u9519\u8BEF\u7684\u8BF7\u6C42\uFF1A\u8BF7\u6C42\u4F53\u65E0\u6548\u6216\u4E3A\u7A7A\u3002"},400)}r.set("parsedBody",t);let s=t.token||r.req.header("cf-turnstile-token"),n=r.req.header("CF-Connecting-IP");if(!s)return r.json({message:"\u7F3A\u5C11 turnstile token"},400);let i=new URLSearchParams;i.append("secret",r.env.TURNSTILE_SECRET),i.append("response",s),n&&i.append("remoteip",n);let u=await(await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString()})).json();if(!u.success)return console.error("Turnstile \u9A8C\u8BC1\u5931\u8D25:",u["error-codes"]),r.json({message:"token \u65E0\u6548"},400);await e()},"turnstile"),sr=rr.basePath("/api");sr.post("/verify",tu,async r=>r.json({success:!0}));function fp(){let r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e="vmail_";for(let t=0;t<32;t++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}o(fp,"generateApiKey");sr.post("/api-keys",tu,async r=>{let e=ce(r.env.DB),t=r.get("parsedBody"),s=new Date,n=fp(),i=n.substring(0,12)+"...",a={id:Fs(),key:n,keyPrefix:i,name:t?.name||null,rateLimit:100,isActive:!0,lastUsedAt:null,expiresAt:null,createdAt:s,updatedAt:s};try{return await Ro(e,a),await Mo(e),r.json({data:{id:a.id,key:n,keyPrefix:i,name:a.name,createdAt:s.toISOString()},message:"API Key created successfully. Please save it now, it will not be shown again!"},201)}catch(u){return console.error("Create API Key error:",u),r.json({error:{code:"INTERNAL_ERROR",message:"Failed to create API Key"}},500)}});sr.post("/emails",async r=>{let e=ce(r.env.DB),t;try{t=await r.req.json()}catch{return r.json({message:"\u9519\u8BEF\u7684\u8BF7\u6C42\uFF1A\u8BF7\u6C42\u4F53\u65E0\u6548\u6216\u4E3A\u7A7A\u3002"},400)}let s=t?.address;if(!s)return r.json({message:"address is required"},400);let n=await Co(e,s);return r.json(n)});sr.get("/emails/:id",async r=>{let e=ce(r.env.DB),{id:t}=r.req.param(),s=await Eo(e,t);return s?r.json(s):r.json({message:"Email not found"},404)});sr.post("/delete-emails",async r=>{let e=ce(r.env.DB),s=(await r.req.json())?.ids;if(!s||!Array.isArray(s)||s.length===0)return r.json({message:"ids are required"},400);let n=await So(e,s);return r.json(n)});sr.post("/login",async r=>{let t=(await r.req.json())?.password;if(!t)return r.json({message:"Password is required"},400);try{let s=Yo(t,r.env.COOKIES_SECRET);return!s||typeof s!="string"||!s.includes("@")?(console.error("\u89E3\u5BC6\u540E\u7684\u5730\u5740\u683C\u5F0F\u65E0\u6548:",s),r.json({message:"Invalid password"},400)):r.json({address:s})}catch(s){return console.error("Login error:",s),r.json({message:"Invalid password"},400)}});rr.get("/config",r=>{let e=r.env.EMAIL_DOMAIN?r.env.EMAIL_DOMAIN.split(",").map(t=>t.trim()):[];return r.json({emailDomain:e,turnstileKey:r.env.TURNSTILE_KEY,cookiesSecret:r.env.COOKIES_SECRET})});sr.get("/stats",async r=>{let e=ce(r.env.DB),t=await Di(e);return t?r.json({totalAddressesCreated:t.totalAddressesCreated,totalEmailsReceived:t.totalEmailsReceived,totalApiCalls:t.totalApiCalls,totalApiKeysCreated:t.totalApiKeysCreated}):r.json({totalAddressesCreated:0,totalEmailsReceived:0,totalApiCalls:0,totalApiKeysCreated:0})});rr.route("/api/v1",eu);rr.get("/*",Zs({root:"./"}));rr.get("/assets/*",Zs({root:"./"}));var ru={async email(r,e,t){try{let s=ce(e.DB),n=await new Response(r.raw).text(),i=await new rt().parse(n),a=new Date,u={id:Fs(),messageFrom:r.from,messageTo:r.to,headers:i.headers||[],from:i.from,sender:i.sender,replyTo:i.replyTo,deliveredTo:i.deliveredTo,returnPath:i.returnPath,to:i.to,cc:i.cc,bcc:i.bcc,subject:i.subject,messageId:i.messageId,inReplyTo:i.inReplyTo,references:i.references,date:i.date,html:i.html,text:i.text,createdAt:a,updatedAt:a},l=Do.parse(u);await _o(s,l),await Io(s)}catch(s){console.error("\u5904\u7406\u90AE\u4EF6\u5931\u8D25:",s),r.setReject(`\u90AE\u4EF6\u5904\u7406\u5931\u8D25: ${s.message}`)}},async fetch(r,e,t){let s=new URL(r.url);if(s.pathname.startsWith("/api/")||s.pathname==="/config")return rr.fetch(r,e,t);let n=await e.ASSETS.fetch(r);if(n.status===404){let i=new Request(new URL("/",r.url).toString(),r);return e.ASSETS.fetch(i)}return n},async scheduled(r,e,t){let s=ce(e.DB),n=new Date(Date.now()-1e3*60*60*24);await To(s,n),console.log(`\u5DF2\u6E05\u7406 ${n.toISOString()} \u4E4B\u524D\u7684\u8FC7\u671F\u90AE\u4EF6`)}};var hp=o(async(r,e,t,s)=>{try{return await s.next(r,e)}finally{try{if(r.body!==null&&!r.bodyUsed){let n=r.body.getReader();for(;!(await n.read()).done;);}}catch(n){console.error("Failed to drain the unused request body.",n)}}},"drainBody"),su=hp;function nu(r){return{name:r?.name,message:r?.message??String(r),stack:r?.stack,cause:r?.cause===void 0?void 0:nu(r.cause)}}o(nu,"reduceError");var mp=o(async(r,e,t,s)=>{try{return await s.next(r,e)}catch(n){let i=nu(n);return Response.json(i,{status:500,headers:{"MF-Experimental-Error-Stack":"true"}})}},"jsonError"),iu=mp;var nr=[su,iu],$s=ru;var au=[];function Oi(...r){au.push(...r.flat())}o(Oi,"__facade_register__");function ou(r,e,t,s,n){let[i,...a]=n;return i(r,e,t,{dispatch:s,next(l,c){return ou(l,c,t,s,a)}})}o(ou,"__facade_invokeChain__");function Bi(r,e,t,s,n){return ou(r,e,t,s,[...au,n])}o(Bi,"__facade_invoke__");var ir=class{constructor(e,t,s){this.scheduledTime=e;this.cron=t;this.#e=s}#e;noRetry(){if(!(this instanceof ir))throw new TypeError("Illegal invocation");this.#e()}};o(ir,"__Facade_ScheduledController__");function yp(r){if(nr===void 0||nr.length===0)return r;for(let t of nr)Oi(t);let e=o(function(t,s,n){if(r.fetch===void 0)throw new Error("Handler does not export a fetch() function.");return r.fetch(t,s,n)},"fetchDispatcher");return{...r,fetch(t,s,n){return Bi(t,s,n,o(function(a,u){if(a==="scheduled"&&r.scheduled!==void 0){let l=new ir(Date.now(),u.cron??"",()=>{});return r.scheduled(l,s,n)}},"dispatcher"),e)}}}o(yp,"wrapExportedHandler");function bp(r){if(nr===void 0||nr.length===0)return r;for(let e of nr)Oi(e);return class extends r{#e=(e,t,s)=>{if(this.env=t,this.ctx=s,super.fetch===void 0)throw new Error("Entrypoint class does not define a fetch() function.");return super.fetch(e)};#t=(e,t)=>{if(e==="scheduled"&&super.scheduled!==void 0){let s=new ir(Date.now(),t.cron??"",()=>{});return super.scheduled(s)}};fetch(e){return Bi(e,this.env,this.ctx,this.#t,this.#e)}}}o(bp,"wrapWorkerEntrypoint");var qi;typeof $s=="object"?qi=yp($s):typeof $s=="function"&&(qi=bp($s));var XR=qi;export{nr as __INTERNAL_WRANGLER_MIDDLEWARE__,XR as default}; -//# sourceMappingURL=index.js.map diff --git a/.wrangler/tmp/dev-PnrrLK/index.js.map b/.wrangler/tmp/dev-PnrrLK/index.js.map deleted file mode 100644 index 687c3fe..0000000 --- a/.wrangler/tmp/dev-PnrrLK/index.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["../bundle-nk20cv/strip-cf-connecting-ip-header.js", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/_internal/utils.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/internal/perf_hooks/performance.mjs", "../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.0.2_unenv@2.0.0-rc.14_workerd@1.20250718.0/node_modules/@cloudflare/unenv-preset/dist/runtime/polyfill/performance.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/console.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/mock/noop.mjs", "../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.0.2_unenv@2.0.0-rc.14_workerd@1.20250718.0/node_modules/@cloudflare/unenv-preset/dist/runtime/node/console.mjs", "../../../node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-console", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/internal/process/hrtime.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/internal/process/process.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/internal/tty/read-stream.mjs", "../../../node_modules/.pnpm/unenv@2.0.0-rc.14/node_modules/unenv/dist/runtime/node/internal/tty/write-stream.mjs", "../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.0.2_unenv@2.0.0-rc.14_workerd@1.20250718.0/node_modules/@cloudflare/unenv-preset/dist/runtime/node/process.mjs", "../../../node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-process", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/compose.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/request/constants.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/body.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/url.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/request.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/html.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/context.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/constants.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/hono-base.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/reg-exp-router/matcher.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/reg-exp-router/node.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/reg-exp-router/trie.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/reg-exp-router/router.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/smart-router/router.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/trie-router/node.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/router/trie-router/router.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/hono.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/compress.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/utils/mime.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/middleware/serve-static/path.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/middleware/serve-static/index.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/adapter/cloudflare-workers/utils.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/helper/websocket/index.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js", "../../../node_modules/.pnpm/hono@4.9.12/node_modules/hono/dist/middleware/cors/index.js", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/entity.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/column.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/subquery.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/tracing-utils.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/drizzle-orm/version.js", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/tracing.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/view-common.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/table.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sql/sql.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/alias.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/column-builder.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/errors.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sql/expressions/conditions.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sql/expressions/select.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/logger.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/query-promise.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/table.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/primary-keys.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/relations.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sql/functions/aggregate.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/utils.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/table.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/foreign-keys.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/unique-constraint.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/columns/common.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/columns/integer.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/columns/text.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/selection-proxy.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/delete.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/insert.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/view-base.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/dialect.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/query-builders/query-builder.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/select.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/query-builder.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/update.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/query.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/query-builders/raw.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/db.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/sqlite-core/session.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/table.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/foreign-keys.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/unique-constraint.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/columns/common.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/columns/char.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/columns/varbinary.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/mysql-core/columns/varchar.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/foreign-keys.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/unique-constraint.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/utils/array.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/columns/common.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/columns/char.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/columns/uuid.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/pg-core/columns/varchar.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js", "../../../node_modules/.pnpm/drizzle-zod@0.5.1_drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0__zod@3.25.76/node_modules/src/index.ts", "../../../worker/src/database/schema.ts", "../../../worker/src/database/dao.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/d1/session.ts", "../../../node_modules/.pnpm/drizzle-orm@0.29.5_@libsql+client@0.4.0-pre.7_@types+react@18.3.26_react@18.2.0/node_modules/src/d1/driver.ts", "../../../worker/src/database/db.ts", "../../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/non-secure/index.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/decode-strings.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/pass-through-decoder.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/base64-decoder.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/qp-decoder.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/mime-node.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/html-entities.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/text-format.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/address-parser.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/base64-encoder.js", "../../../node_modules/.pnpm/postal-mime@2.4.7/node_modules/postal-mime/src/postal-mime.js", "../../../worker/src/utils.ts", "../../../worker/src/api/v1/middleware/apiKeyAuth.ts", "../../../worker/src/api/v1/routes/mailboxes.ts", "../../../worker/src/api/v1/index.ts", "../../../worker/src/index.ts", "../../../node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-nk20cv/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts", "../bundle-nk20cv/middleware-loader.entry.ts"], - "sourceRoot": "/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/dev-PnrrLK", - "sourcesContent": ["function stripCfConnectingIPHeader(input, init) {\n\tconst request = new Request(input, init);\n\trequest.headers.delete(\"CF-Connecting-IP\");\n\treturn request;\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\treturn Reflect.apply(target, thisArg, [\n\t\t\tstripCfConnectingIPHeader.apply(null, argArray),\n\t\t]);\n\t},\n});\n", "/*@__NO_SIDE_EFFECTS__*/ export function rawHeaders(headers) {\n\tconst rawHeaders = [];\n\tfor (const key in headers) {\n\t\tif (Array.isArray(headers[key])) {\n\t\t\tfor (const h of headers[key]) {\n\t\t\t\trawHeaders.push(key, h);\n\t\t\t}\n\t\t} else {\n\t\t\trawHeaders.push(key, headers[key]);\n\t\t}\n\t}\n\treturn rawHeaders;\n}\n/*@__NO_SIDE_EFFECTS__*/ export function mergeFns(...functions) {\n\treturn function(...args) {\n\t\tfor (const fn of functions) {\n\t\t\tfn(...args);\n\t\t}\n\t};\n}\n/*@__NO_SIDE_EFFECTS__*/ export function createNotImplementedError(name) {\n\treturn new Error(`[unenv] ${name} is not implemented yet!`);\n}\n/*@__NO_SIDE_EFFECTS__*/ export function notImplemented(name) {\n\tconst fn = () => {\n\t\tthrow createNotImplementedError(name);\n\t};\n\treturn Object.assign(fn, { __unenv__: true });\n}\n/*@__NO_SIDE_EFFECTS__*/ export function notImplementedAsync(name) {\n\tconst fn = notImplemented(name);\n\tfn.__promisify__ = () => notImplemented(name + \".__promisify__\");\n\tfn.native = fn;\n\treturn fn;\n}\n/*@__NO_SIDE_EFFECTS__*/ export function notImplementedClass(name) {\n\treturn class {\n\t\t__unenv__ = true;\n\t\tconstructor() {\n\t\t\tthrow new Error(`[unenv] ${name} is not implemented yet!`);\n\t\t}\n\t};\n}\n", "import { createNotImplementedError } from \"../../../_internal/utils.mjs\";\nconst _timeOrigin = globalThis.performance?.timeOrigin ?? Date.now();\nconst _performanceNow = globalThis.performance?.now ? globalThis.performance.now.bind(globalThis.performance) : () => Date.now() - _timeOrigin;\nconst nodeTiming = {\n\tname: \"node\",\n\tentryType: \"node\",\n\tstartTime: 0,\n\tduration: 0,\n\tnodeStart: 0,\n\tv8Start: 0,\n\tbootstrapComplete: 0,\n\tenvironment: 0,\n\tloopStart: 0,\n\tloopExit: 0,\n\tidleTime: 0,\n\tuvMetricsInfo: {\n\t\tloopCount: 0,\n\t\tevents: 0,\n\t\teventsWaiting: 0\n\t},\n\tdetail: undefined,\n\ttoJSON() {\n\t\treturn this;\n\t}\n};\nexport class PerformanceEntry {\n\t__unenv__ = true;\n\tdetail;\n\tentryType = \"event\";\n\tname;\n\tstartTime;\n\tconstructor(name, options) {\n\t\tthis.name = name;\n\t\tthis.startTime = options?.startTime || _performanceNow();\n\t\tthis.detail = options?.detail;\n\t}\n\tget duration() {\n\t\treturn _performanceNow() - this.startTime;\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tentryType: this.entryType,\n\t\t\tstartTime: this.startTime,\n\t\t\tduration: this.duration,\n\t\t\tdetail: this.detail\n\t\t};\n\t}\n}\nexport const PerformanceMark = class PerformanceMark extends PerformanceEntry {\n\tentryType = \"mark\";\n\tconstructor() {\n\t\tsuper(...arguments);\n\t}\n\tget duration() {\n\t\treturn 0;\n\t}\n};\nexport class PerformanceMeasure extends PerformanceEntry {\n\tentryType = \"measure\";\n}\nexport class PerformanceResourceTiming extends PerformanceEntry {\n\tentryType = \"resource\";\n\tserverTiming = [];\n\tconnectEnd = 0;\n\tconnectStart = 0;\n\tdecodedBodySize = 0;\n\tdomainLookupEnd = 0;\n\tdomainLookupStart = 0;\n\tencodedBodySize = 0;\n\tfetchStart = 0;\n\tinitiatorType = \"\";\n\tname = \"\";\n\tnextHopProtocol = \"\";\n\tredirectEnd = 0;\n\tredirectStart = 0;\n\trequestStart = 0;\n\tresponseEnd = 0;\n\tresponseStart = 0;\n\tsecureConnectionStart = 0;\n\tstartTime = 0;\n\ttransferSize = 0;\n\tworkerStart = 0;\n\tresponseStatus = 0;\n}\nexport class PerformanceObserverEntryList {\n\t__unenv__ = true;\n\tgetEntries() {\n\t\treturn [];\n\t}\n\tgetEntriesByName(_name, _type) {\n\t\treturn [];\n\t}\n\tgetEntriesByType(type) {\n\t\treturn [];\n\t}\n}\nexport class Performance {\n\t__unenv__ = true;\n\ttimeOrigin = _timeOrigin;\n\teventCounts = new Map();\n\t_entries = [];\n\t_resourceTimingBufferSize = 0;\n\tnavigation = undefined;\n\ttiming = undefined;\n\ttimerify(_fn, _options) {\n\t\tthrow createNotImplementedError(\"Performance.timerify\");\n\t}\n\tget nodeTiming() {\n\t\treturn nodeTiming;\n\t}\n\teventLoopUtilization() {\n\t\treturn {};\n\t}\n\tmarkResourceTiming() {\n\t\treturn new PerformanceResourceTiming(\"\");\n\t}\n\tonresourcetimingbufferfull = null;\n\tnow() {\n\t\tif (this.timeOrigin === _timeOrigin) {\n\t\t\treturn _performanceNow();\n\t\t}\n\t\treturn Date.now() - this.timeOrigin;\n\t}\n\tclearMarks(markName) {\n\t\tthis._entries = markName ? this._entries.filter((e) => e.name !== markName) : this._entries.filter((e) => e.entryType !== \"mark\");\n\t}\n\tclearMeasures(measureName) {\n\t\tthis._entries = measureName ? this._entries.filter((e) => e.name !== measureName) : this._entries.filter((e) => e.entryType !== \"measure\");\n\t}\n\tclearResourceTimings() {\n\t\tthis._entries = this._entries.filter((e) => e.entryType !== \"resource\" || e.entryType !== \"navigation\");\n\t}\n\tgetEntries() {\n\t\treturn this._entries;\n\t}\n\tgetEntriesByName(name, type) {\n\t\treturn this._entries.filter((e) => e.name === name && (!type || e.entryType === type));\n\t}\n\tgetEntriesByType(type) {\n\t\treturn this._entries.filter((e) => e.entryType === type);\n\t}\n\tmark(name, options) {\n\t\tconst entry = new PerformanceMark(name, options);\n\t\tthis._entries.push(entry);\n\t\treturn entry;\n\t}\n\tmeasure(measureName, startOrMeasureOptions, endMark) {\n\t\tlet start;\n\t\tlet end;\n\t\tif (typeof startOrMeasureOptions === \"string\") {\n\t\t\tstart = this.getEntriesByName(startOrMeasureOptions, \"mark\")[0]?.startTime;\n\t\t\tend = this.getEntriesByName(endMark, \"mark\")[0]?.startTime;\n\t\t} else {\n\t\t\tstart = Number.parseFloat(startOrMeasureOptions?.start) || this.now();\n\t\t\tend = Number.parseFloat(startOrMeasureOptions?.end) || this.now();\n\t\t}\n\t\tconst entry = new PerformanceMeasure(measureName, {\n\t\t\tstartTime: start,\n\t\t\tdetail: {\n\t\t\t\tstart,\n\t\t\t\tend\n\t\t\t}\n\t\t});\n\t\tthis._entries.push(entry);\n\t\treturn entry;\n\t}\n\tsetResourceTimingBufferSize(maxSize) {\n\t\tthis._resourceTimingBufferSize = maxSize;\n\t}\n\taddEventListener(type, listener, options) {\n\t\tthrow createNotImplementedError(\"Performance.addEventListener\");\n\t}\n\tremoveEventListener(type, listener, options) {\n\t\tthrow createNotImplementedError(\"Performance.removeEventListener\");\n\t}\n\tdispatchEvent(event) {\n\t\tthrow createNotImplementedError(\"Performance.dispatchEvent\");\n\t}\n\ttoJSON() {\n\t\treturn this;\n\t}\n}\nexport class PerformanceObserver {\n\t__unenv__ = true;\n\tstatic supportedEntryTypes = [];\n\t_callback = null;\n\tconstructor(callback) {\n\t\tthis._callback = callback;\n\t}\n\ttakeRecords() {\n\t\treturn [];\n\t}\n\tdisconnect() {\n\t\tthrow createNotImplementedError(\"PerformanceObserver.disconnect\");\n\t}\n\tobserve(options) {\n\t\tthrow createNotImplementedError(\"PerformanceObserver.observe\");\n\t}\n\tbind(fn) {\n\t\treturn fn;\n\t}\n\trunInAsyncScope(fn, thisArg, ...args) {\n\t\treturn fn.call(thisArg, ...args);\n\t}\n\tasyncId() {\n\t\treturn 0;\n\t}\n\ttriggerAsyncId() {\n\t\treturn 0;\n\t}\n\temitDestroy() {\n\t\treturn this;\n\t}\n}\nexport const performance = globalThis.performance && \"addEventListener\" in globalThis.performance ? globalThis.performance : new Performance();\n", "import {\n performance,\n Performance,\n PerformanceEntry,\n PerformanceMark,\n PerformanceMeasure,\n PerformanceObserver,\n PerformanceObserverEntryList,\n PerformanceResourceTiming\n} from \"node:perf_hooks\";\nglobalThis.performance = performance;\nglobalThis.Performance = Performance;\nglobalThis.PerformanceEntry = PerformanceEntry;\nglobalThis.PerformanceMark = PerformanceMark;\nglobalThis.PerformanceMeasure = PerformanceMeasure;\nglobalThis.PerformanceObserver = PerformanceObserver;\nglobalThis.PerformanceObserverEntryList = PerformanceObserverEntryList;\nglobalThis.PerformanceResourceTiming = PerformanceResourceTiming;\n", "import { Writable } from \"node:stream\";\nimport noop from \"../mock/noop.mjs\";\nimport { notImplemented, notImplementedClass } from \"../_internal/utils.mjs\";\nconst _console = globalThis.console;\nexport const _ignoreErrors = true;\nexport const _stderr = new Writable();\nexport const _stdout = new Writable();\nexport const log = _console?.log ?? noop;\nexport const info = _console?.info ?? log;\nexport const trace = _console?.trace ?? info;\nexport const debug = _console?.debug ?? log;\nexport const table = _console?.table ?? log;\nexport const error = _console?.error ?? log;\nexport const warn = _console?.warn ?? error;\nexport const createTask = _console?.createTask ?? /*@__PURE__*/ notImplemented(\"console.createTask\");\nexport const assert = /*@__PURE__*/ notImplemented(\"console.assert\");\nexport const clear = _console?.clear ?? noop;\nexport const count = _console?.count ?? noop;\nexport const countReset = _console?.countReset ?? noop;\nexport const dir = _console?.dir ?? noop;\nexport const dirxml = _console?.dirxml ?? noop;\nexport const group = _console?.group ?? noop;\nexport const groupEnd = _console?.groupEnd ?? noop;\nexport const groupCollapsed = _console?.groupCollapsed ?? noop;\nexport const profile = _console?.profile ?? noop;\nexport const profileEnd = _console?.profileEnd ?? noop;\nexport const time = _console?.time ?? noop;\nexport const timeEnd = _console?.timeEnd ?? noop;\nexport const timeLog = _console?.timeLog ?? noop;\nexport const timeStamp = _console?.timeStamp ?? noop;\nexport const Console = _console?.Console ?? /*@__PURE__*/ notImplementedClass(\"console.Console\");\nexport const _times = /*@__PURE__*/ new Map();\nexport function context() {\n\treturn _console;\n}\nexport const _stdoutErrorHandler = noop;\nexport const _stderrErrorHandler = noop;\nexport default {\n\t_times,\n\t_ignoreErrors,\n\t_stdoutErrorHandler,\n\t_stderrErrorHandler,\n\t_stdout,\n\t_stderr,\n\tassert,\n\tclear,\n\tConsole,\n\tcount,\n\tcountReset,\n\tdebug,\n\tdir,\n\tdirxml,\n\terror,\n\tcontext,\n\tcreateTask,\n\tgroup,\n\tgroupEnd,\n\tgroupCollapsed,\n\tinfo,\n\tlog,\n\tprofile,\n\tprofileEnd,\n\ttable,\n\ttime,\n\ttimeEnd,\n\ttimeLog,\n\ttimeStamp,\n\ttrace,\n\twarn\n};\n", "export default Object.assign(() => {}, { __unenv__: true });\n", "import {\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times,\n Console\n} from \"unenv/node/console\";\nexport {\n Console,\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times\n} from \"unenv/node/console\";\nconst workerdConsole = globalThis[\"console\"];\nexport const {\n assert,\n clear,\n // @ts-expect-error undocumented public API\n context,\n count,\n countReset,\n // @ts-expect-error undocumented public API\n createTask,\n debug,\n dir,\n dirxml,\n error,\n group,\n groupCollapsed,\n groupEnd,\n info,\n log,\n profile,\n profileEnd,\n table,\n time,\n timeEnd,\n timeLog,\n timeStamp,\n trace,\n warn\n} = workerdConsole;\nObject.assign(workerdConsole, {\n Console,\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times\n});\nexport default workerdConsole;\n", "import { default as defaultExport } from \"@cloudflare/unenv-preset/node/console\";\nglobalThis.console = defaultExport;", "export const hrtime = /*@__PURE__*/ Object.assign(function hrtime(startTime) {\n\tconst now = Date.now();\n\tconst seconds = Math.trunc(now / 1e3);\n\tconst nanos = now % 1e3 * 1e6;\n\tif (startTime) {\n\t\tlet diffSeconds = seconds - startTime[0];\n\t\tlet diffNanos = nanos - startTime[0];\n\t\tif (diffNanos < 0) {\n\t\t\tdiffSeconds = diffSeconds - 1;\n\t\t\tdiffNanos = 1e9 + diffNanos;\n\t\t}\n\t\treturn [diffSeconds, diffNanos];\n\t}\n\treturn [seconds, nanos];\n}, { bigint: function bigint() {\n\treturn BigInt(Date.now() * 1e6);\n} });\n", "import { EventEmitter } from \"node:events\";\nimport { ReadStream, WriteStream } from \"node:tty\";\nimport { notImplemented, createNotImplementedError } from \"../../../_internal/utils.mjs\";\nexport class Process extends EventEmitter {\n\tenv;\n\thrtime;\n\tnextTick;\n\tconstructor(impl) {\n\t\tsuper();\n\t\tthis.env = impl.env;\n\t\tthis.hrtime = impl.hrtime;\n\t\tthis.nextTick = impl.nextTick;\n\t\tfor (const prop of [...Object.getOwnPropertyNames(Process.prototype), ...Object.getOwnPropertyNames(EventEmitter.prototype)]) {\n\t\t\tconst value = this[prop];\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tthis[prop] = value.bind(this);\n\t\t\t}\n\t\t}\n\t}\n\temitWarning(warning, type, code) {\n\t\tconsole.warn(`${code ? `[${code}] ` : \"\"}${type ? `${type}: ` : \"\"}${warning}`);\n\t}\n\temit(...args) {\n\t\treturn super.emit(...args);\n\t}\n\tlisteners(eventName) {\n\t\treturn super.listeners(eventName);\n\t}\n\t#stdin;\n\t#stdout;\n\t#stderr;\n\tget stdin() {\n\t\treturn this.#stdin ??= new ReadStream(0);\n\t}\n\tget stdout() {\n\t\treturn this.#stdout ??= new WriteStream(1);\n\t}\n\tget stderr() {\n\t\treturn this.#stderr ??= new WriteStream(2);\n\t}\n\t#cwd = \"/\";\n\tchdir(cwd) {\n\t\tthis.#cwd = cwd;\n\t}\n\tcwd() {\n\t\treturn this.#cwd;\n\t}\n\tarch = \"\";\n\tplatform = \"\";\n\targv = [];\n\targv0 = \"\";\n\texecArgv = [];\n\texecPath = \"\";\n\ttitle = \"\";\n\tpid = 200;\n\tppid = 100;\n\tget version() {\n\t\treturn \"\";\n\t}\n\tget versions() {\n\t\treturn {};\n\t}\n\tget allowedNodeEnvironmentFlags() {\n\t\treturn new Set();\n\t}\n\tget sourceMapsEnabled() {\n\t\treturn false;\n\t}\n\tget debugPort() {\n\t\treturn 0;\n\t}\n\tget throwDeprecation() {\n\t\treturn false;\n\t}\n\tget traceDeprecation() {\n\t\treturn false;\n\t}\n\tget features() {\n\t\treturn {};\n\t}\n\tget release() {\n\t\treturn {};\n\t}\n\tget connected() {\n\t\treturn false;\n\t}\n\tget config() {\n\t\treturn {};\n\t}\n\tget moduleLoadList() {\n\t\treturn [];\n\t}\n\tconstrainedMemory() {\n\t\treturn 0;\n\t}\n\tavailableMemory() {\n\t\treturn 0;\n\t}\n\tuptime() {\n\t\treturn 0;\n\t}\n\tresourceUsage() {\n\t\treturn {};\n\t}\n\tref() {}\n\tunref() {}\n\tumask() {\n\t\tthrow createNotImplementedError(\"process.umask\");\n\t}\n\tgetBuiltinModule() {\n\t\treturn undefined;\n\t}\n\tgetActiveResourcesInfo() {\n\t\tthrow createNotImplementedError(\"process.getActiveResourcesInfo\");\n\t}\n\texit() {\n\t\tthrow createNotImplementedError(\"process.exit\");\n\t}\n\treallyExit() {\n\t\tthrow createNotImplementedError(\"process.reallyExit\");\n\t}\n\tkill() {\n\t\tthrow createNotImplementedError(\"process.kill\");\n\t}\n\tabort() {\n\t\tthrow createNotImplementedError(\"process.abort\");\n\t}\n\tdlopen() {\n\t\tthrow createNotImplementedError(\"process.dlopen\");\n\t}\n\tsetSourceMapsEnabled() {\n\t\tthrow createNotImplementedError(\"process.setSourceMapsEnabled\");\n\t}\n\tloadEnvFile() {\n\t\tthrow createNotImplementedError(\"process.loadEnvFile\");\n\t}\n\tdisconnect() {\n\t\tthrow createNotImplementedError(\"process.disconnect\");\n\t}\n\tcpuUsage() {\n\t\tthrow createNotImplementedError(\"process.cpuUsage\");\n\t}\n\tsetUncaughtExceptionCaptureCallback() {\n\t\tthrow createNotImplementedError(\"process.setUncaughtExceptionCaptureCallback\");\n\t}\n\thasUncaughtExceptionCaptureCallback() {\n\t\tthrow createNotImplementedError(\"process.hasUncaughtExceptionCaptureCallback\");\n\t}\n\tinitgroups() {\n\t\tthrow createNotImplementedError(\"process.initgroups\");\n\t}\n\topenStdin() {\n\t\tthrow createNotImplementedError(\"process.openStdin\");\n\t}\n\tassert() {\n\t\tthrow createNotImplementedError(\"process.assert\");\n\t}\n\tbinding() {\n\t\tthrow createNotImplementedError(\"process.binding\");\n\t}\n\tpermission = { has: /*@__PURE__*/ notImplemented(\"process.permission.has\") };\n\treport = {\n\t\tdirectory: \"\",\n\t\tfilename: \"\",\n\t\tsignal: \"SIGUSR2\",\n\t\tcompact: false,\n\t\treportOnFatalError: false,\n\t\treportOnSignal: false,\n\t\treportOnUncaughtException: false,\n\t\tgetReport: /*@__PURE__*/ notImplemented(\"process.report.getReport\"),\n\t\twriteReport: /*@__PURE__*/ notImplemented(\"process.report.writeReport\")\n\t};\n\tfinalization = {\n\t\tregister: /*@__PURE__*/ notImplemented(\"process.finalization.register\"),\n\t\tunregister: /*@__PURE__*/ notImplemented(\"process.finalization.unregister\"),\n\t\tregisterBeforeExit: /*@__PURE__*/ notImplemented(\"process.finalization.registerBeforeExit\")\n\t};\n\tmemoryUsage = Object.assign(() => ({\n\t\tarrayBuffers: 0,\n\t\trss: 0,\n\t\texternal: 0,\n\t\theapTotal: 0,\n\t\theapUsed: 0\n\t}), { rss: () => 0 });\n\tmainModule = undefined;\n\tdomain = undefined;\n\tsend = undefined;\n\texitCode = undefined;\n\tchannel = undefined;\n\tgetegid = undefined;\n\tgeteuid = undefined;\n\tgetgid = undefined;\n\tgetgroups = undefined;\n\tgetuid = undefined;\n\tsetegid = undefined;\n\tseteuid = undefined;\n\tsetgid = undefined;\n\tsetgroups = undefined;\n\tsetuid = undefined;\n\t_events = undefined;\n\t_eventsCount = undefined;\n\t_exiting = undefined;\n\t_maxListeners = undefined;\n\t_debugEnd = undefined;\n\t_debugProcess = undefined;\n\t_fatalException = undefined;\n\t_getActiveHandles = undefined;\n\t_getActiveRequests = undefined;\n\t_kill = undefined;\n\t_preload_modules = undefined;\n\t_rawDebug = undefined;\n\t_startProfilerIdleNotifier = undefined;\n\t_stopProfilerIdleNotifier = undefined;\n\t_tickCallback = undefined;\n\t_disconnect = undefined;\n\t_handleQueue = undefined;\n\t_pendingMessage = undefined;\n\t_channel = undefined;\n\t_send = undefined;\n\t_linkedBinding = undefined;\n}\n", "import { Socket } from \"node:net\";\nexport class ReadStream extends Socket {\n\tfd;\n\tconstructor(fd) {\n\t\tsuper();\n\t\tthis.fd = fd;\n\t}\n\tisRaw = false;\n\tsetRawMode(mode) {\n\t\tthis.isRaw = mode;\n\t\treturn this;\n\t}\n\tisTTY = false;\n}\n", "import { Socket } from \"node:net\";\nexport class WriteStream extends Socket {\n\tfd;\n\tconstructor(fd) {\n\t\tsuper();\n\t\tthis.fd = fd;\n\t}\n\tclearLine(dir, callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tclearScreenDown(callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tcursorTo(x, y, callback) {\n\t\tcallback && typeof callback === \"function\" && callback();\n\t\treturn false;\n\t}\n\tmoveCursor(dx, dy, callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tgetColorDepth(env) {\n\t\treturn 1;\n\t}\n\thasColors(count, env) {\n\t\treturn false;\n\t}\n\tgetWindowSize() {\n\t\treturn [this.columns, this.rows];\n\t}\n\tcolumns = 80;\n\trows = 24;\n\tisTTY = false;\n}\n", "import { hrtime as UnenvHrTime } from \"unenv/node/internal/process/hrtime\";\nimport { Process as UnenvProcess } from \"unenv/node/internal/process/process\";\nconst globalProcess = globalThis[\"process\"];\nexport const getBuiltinModule = globalProcess.getBuiltinModule;\nexport const { exit, platform, nextTick } = getBuiltinModule(\n \"node:process\"\n);\nconst unenvProcess = new UnenvProcess({\n env: globalProcess.env,\n hrtime: UnenvHrTime,\n nextTick\n});\nexport const {\n abort,\n addListener,\n allowedNodeEnvironmentFlags,\n hasUncaughtExceptionCaptureCallback,\n setUncaughtExceptionCaptureCallback,\n loadEnvFile,\n sourceMapsEnabled,\n arch,\n argv,\n argv0,\n chdir,\n config,\n connected,\n constrainedMemory,\n availableMemory,\n cpuUsage,\n cwd,\n debugPort,\n dlopen,\n disconnect,\n emit,\n emitWarning,\n env,\n eventNames,\n execArgv,\n execPath,\n finalization,\n features,\n getActiveResourcesInfo,\n getMaxListeners,\n hrtime,\n kill,\n listeners,\n listenerCount,\n memoryUsage,\n on,\n off,\n once,\n pid,\n ppid,\n prependListener,\n prependOnceListener,\n rawListeners,\n release,\n removeAllListeners,\n removeListener,\n report,\n resourceUsage,\n setMaxListeners,\n setSourceMapsEnabled,\n stderr,\n stdin,\n stdout,\n title,\n throwDeprecation,\n traceDeprecation,\n umask,\n uptime,\n version,\n versions,\n domain,\n initgroups,\n moduleLoadList,\n reallyExit,\n openStdin,\n assert,\n binding,\n send,\n exitCode,\n channel,\n getegid,\n geteuid,\n getgid,\n getgroups,\n getuid,\n setegid,\n seteuid,\n setgid,\n setgroups,\n setuid,\n permission,\n mainModule,\n _events,\n _eventsCount,\n _exiting,\n _maxListeners,\n _debugEnd,\n _debugProcess,\n _fatalException,\n _getActiveHandles,\n _getActiveRequests,\n _kill,\n _preload_modules,\n _rawDebug,\n _startProfilerIdleNotifier,\n _stopProfilerIdleNotifier,\n _tickCallback,\n _disconnect,\n _handleQueue,\n _pendingMessage,\n _channel,\n _send,\n _linkedBinding\n} = unenvProcess;\nconst _process = {\n abort,\n addListener,\n allowedNodeEnvironmentFlags,\n hasUncaughtExceptionCaptureCallback,\n setUncaughtExceptionCaptureCallback,\n loadEnvFile,\n sourceMapsEnabled,\n arch,\n argv,\n argv0,\n chdir,\n config,\n connected,\n constrainedMemory,\n availableMemory,\n cpuUsage,\n cwd,\n debugPort,\n dlopen,\n disconnect,\n emit,\n emitWarning,\n env,\n eventNames,\n execArgv,\n execPath,\n exit,\n finalization,\n features,\n getBuiltinModule,\n getActiveResourcesInfo,\n getMaxListeners,\n hrtime,\n kill,\n listeners,\n listenerCount,\n memoryUsage,\n nextTick,\n on,\n off,\n once,\n pid,\n platform,\n ppid,\n prependListener,\n prependOnceListener,\n rawListeners,\n release,\n removeAllListeners,\n removeListener,\n report,\n resourceUsage,\n setMaxListeners,\n setSourceMapsEnabled,\n stderr,\n stdin,\n stdout,\n title,\n throwDeprecation,\n traceDeprecation,\n umask,\n uptime,\n version,\n versions,\n // @ts-expect-error old API\n domain,\n initgroups,\n moduleLoadList,\n reallyExit,\n openStdin,\n assert,\n binding,\n send,\n exitCode,\n channel,\n getegid,\n geteuid,\n getgid,\n getgroups,\n getuid,\n setegid,\n seteuid,\n setgid,\n setgroups,\n setuid,\n permission,\n mainModule,\n _events,\n _eventsCount,\n _exiting,\n _maxListeners,\n _debugEnd,\n _debugProcess,\n _fatalException,\n _getActiveHandles,\n _getActiveRequests,\n _kill,\n _preload_modules,\n _rawDebug,\n _startProfilerIdleNotifier,\n _stopProfilerIdleNotifier,\n _tickCallback,\n _disconnect,\n _handleQueue,\n _pendingMessage,\n _channel,\n _send,\n _linkedBinding\n};\nexport default _process;\n", "import { default as defaultExport } from \"@cloudflare/unenv-preset/node/process\";\nglobalThis.process = defaultExport;", "// src/compose.ts\nvar compose = (middleware, onError, onNotFound) => {\n return (context, next) => {\n let index = -1;\n return dispatch(0);\n async function dispatch(i) {\n if (i <= index) {\n throw new Error(\"next() called multiple times\");\n }\n index = i;\n let res;\n let isError = false;\n let handler;\n if (middleware[i]) {\n handler = middleware[i][0][0];\n context.req.routeIndex = i;\n } else {\n handler = i === middleware.length && next || void 0;\n }\n if (handler) {\n try {\n res = await handler(context, () => dispatch(i + 1));\n } catch (err) {\n if (err instanceof Error && onError) {\n context.error = err;\n res = await onError(err, context);\n isError = true;\n } else {\n throw err;\n }\n }\n } else {\n if (context.finalized === false && onNotFound) {\n res = await onNotFound(context);\n }\n }\n if (res && (context.finalized === false || isError)) {\n context.res = res;\n }\n return context;\n }\n };\n};\nexport {\n compose\n};\n", "// src/request/constants.ts\nvar GET_MATCH_RESULT = Symbol();\nexport {\n GET_MATCH_RESULT\n};\n", "// src/utils/body.ts\nimport { HonoRequest } from \"../request.js\";\nvar parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {\n const { all = false, dot = false } = options;\n const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;\n const contentType = headers.get(\"Content-Type\");\n if (contentType?.startsWith(\"multipart/form-data\") || contentType?.startsWith(\"application/x-www-form-urlencoded\")) {\n return parseFormData(request, { all, dot });\n }\n return {};\n};\nasync function parseFormData(request, options) {\n const formData = await request.formData();\n if (formData) {\n return convertFormDataToBodyData(formData, options);\n }\n return {};\n}\nfunction convertFormDataToBodyData(formData, options) {\n const form = /* @__PURE__ */ Object.create(null);\n formData.forEach((value, key) => {\n const shouldParseAllValues = options.all || key.endsWith(\"[]\");\n if (!shouldParseAllValues) {\n form[key] = value;\n } else {\n handleParsingAllValues(form, key, value);\n }\n });\n if (options.dot) {\n Object.entries(form).forEach(([key, value]) => {\n const shouldParseDotValues = key.includes(\".\");\n if (shouldParseDotValues) {\n handleParsingNestedValues(form, key, value);\n delete form[key];\n }\n });\n }\n return form;\n}\nvar handleParsingAllValues = (form, key, value) => {\n if (form[key] !== void 0) {\n if (Array.isArray(form[key])) {\n ;\n form[key].push(value);\n } else {\n form[key] = [form[key], value];\n }\n } else {\n if (!key.endsWith(\"[]\")) {\n form[key] = value;\n } else {\n form[key] = [value];\n }\n }\n};\nvar handleParsingNestedValues = (form, key, value) => {\n let nestedForm = form;\n const keys = key.split(\".\");\n keys.forEach((key2, index) => {\n if (index === keys.length - 1) {\n nestedForm[key2] = value;\n } else {\n if (!nestedForm[key2] || typeof nestedForm[key2] !== \"object\" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {\n nestedForm[key2] = /* @__PURE__ */ Object.create(null);\n }\n nestedForm = nestedForm[key2];\n }\n });\n};\nexport {\n parseBody\n};\n", "// src/utils/url.ts\nvar splitPath = (path) => {\n const paths = path.split(\"/\");\n if (paths[0] === \"\") {\n paths.shift();\n }\n return paths;\n};\nvar splitRoutingPath = (routePath) => {\n const { groups, path } = extractGroupsFromPath(routePath);\n const paths = splitPath(path);\n return replaceGroupMarks(paths, groups);\n};\nvar extractGroupsFromPath = (path) => {\n const groups = [];\n path = path.replace(/\\{[^}]+\\}/g, (match, index) => {\n const mark = `@${index}`;\n groups.push([mark, match]);\n return mark;\n });\n return { groups, path };\n};\nvar replaceGroupMarks = (paths, groups) => {\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = paths.length - 1; j >= 0; j--) {\n if (paths[j].includes(mark)) {\n paths[j] = paths[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n return paths;\n};\nvar patternCache = {};\nvar getPattern = (label, next) => {\n if (label === \"*\") {\n return \"*\";\n }\n const match = label.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n if (match) {\n const cacheKey = `${label}#${next}`;\n if (!patternCache[cacheKey]) {\n if (match[2]) {\n patternCache[cacheKey] = next && next[0] !== \":\" && next[0] !== \"*\" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];\n } else {\n patternCache[cacheKey] = [label, match[1], true];\n }\n }\n return patternCache[cacheKey];\n }\n return null;\n};\nvar tryDecode = (str, decoder) => {\n try {\n return decoder(str);\n } catch {\n return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {\n try {\n return decoder(match);\n } catch {\n return match;\n }\n });\n }\n};\nvar tryDecodeURI = (str) => tryDecode(str, decodeURI);\nvar getPath = (request) => {\n const url = request.url;\n const start = url.indexOf(\"/\", url.indexOf(\":\") + 4);\n let i = start;\n for (; i < url.length; i++) {\n const charCode = url.charCodeAt(i);\n if (charCode === 37) {\n const queryIndex = url.indexOf(\"?\", i);\n const path = url.slice(start, queryIndex === -1 ? void 0 : queryIndex);\n return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n } else if (charCode === 63) {\n break;\n }\n }\n return url.slice(start, i);\n};\nvar getQueryStrings = (url) => {\n const queryIndex = url.indexOf(\"?\", 8);\n return queryIndex === -1 ? \"\" : \"?\" + url.slice(queryIndex + 1);\n};\nvar getPathNoStrict = (request) => {\n const result = getPath(request);\n return result.length > 1 && result.at(-1) === \"/\" ? result.slice(0, -1) : result;\n};\nvar mergePath = (base, sub, ...rest) => {\n if (rest.length) {\n sub = mergePath(sub, ...rest);\n }\n return `${base?.[0] === \"/\" ? \"\" : \"/\"}${base}${sub === \"/\" ? \"\" : `${base?.at(-1) === \"/\" ? \"\" : \"/\"}${sub?.[0] === \"/\" ? sub.slice(1) : sub}`}`;\n};\nvar checkOptionalParameter = (path) => {\n if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(\":\")) {\n return null;\n }\n const segments = path.split(\"/\");\n const results = [];\n let basePath = \"\";\n segments.forEach((segment) => {\n if (segment !== \"\" && !/\\:/.test(segment)) {\n basePath += \"/\" + segment;\n } else if (/\\:/.test(segment)) {\n if (/\\?/.test(segment)) {\n if (results.length === 0 && basePath === \"\") {\n results.push(\"/\");\n } else {\n results.push(basePath);\n }\n const optionalSegment = segment.replace(\"?\", \"\");\n basePath += \"/\" + optionalSegment;\n results.push(basePath);\n } else {\n basePath += \"/\" + segment;\n }\n }\n });\n return results.filter((v, i, a) => a.indexOf(v) === i);\n};\nvar _decodeURI = (value) => {\n if (!/[%+]/.test(value)) {\n return value;\n }\n if (value.indexOf(\"+\") !== -1) {\n value = value.replace(/\\+/g, \" \");\n }\n return value.indexOf(\"%\") !== -1 ? tryDecode(value, decodeURIComponent_) : value;\n};\nvar _getQueryParam = (url, key, multiple) => {\n let encoded;\n if (!multiple && key && !/[%+]/.test(key)) {\n let keyIndex2 = url.indexOf(`?${key}`, 8);\n if (keyIndex2 === -1) {\n keyIndex2 = url.indexOf(`&${key}`, 8);\n }\n while (keyIndex2 !== -1) {\n const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);\n if (trailingKeyCode === 61) {\n const valueIndex = keyIndex2 + key.length + 2;\n const endIndex = url.indexOf(\"&\", valueIndex);\n return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));\n } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {\n return \"\";\n }\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n encoded = /[%+]/.test(url);\n if (!encoded) {\n return void 0;\n }\n }\n const results = {};\n encoded ??= /[%+]/.test(url);\n let keyIndex = url.indexOf(\"?\", 8);\n while (keyIndex !== -1) {\n const nextKeyIndex = url.indexOf(\"&\", keyIndex + 1);\n let valueIndex = url.indexOf(\"=\", keyIndex);\n if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {\n valueIndex = -1;\n }\n let name = url.slice(\n keyIndex + 1,\n valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex\n );\n if (encoded) {\n name = _decodeURI(name);\n }\n keyIndex = nextKeyIndex;\n if (name === \"\") {\n continue;\n }\n let value;\n if (valueIndex === -1) {\n value = \"\";\n } else {\n value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);\n if (encoded) {\n value = _decodeURI(value);\n }\n }\n if (multiple) {\n if (!(results[name] && Array.isArray(results[name]))) {\n results[name] = [];\n }\n ;\n results[name].push(value);\n } else {\n results[name] ??= value;\n }\n }\n return key ? results[key] : results;\n};\nvar getQueryParam = _getQueryParam;\nvar getQueryParams = (url, key) => {\n return _getQueryParam(url, key, true);\n};\nvar decodeURIComponent_ = decodeURIComponent;\nexport {\n checkOptionalParameter,\n decodeURIComponent_,\n getPath,\n getPathNoStrict,\n getPattern,\n getQueryParam,\n getQueryParams,\n getQueryStrings,\n mergePath,\n splitPath,\n splitRoutingPath,\n tryDecode\n};\n", "// src/request.ts\nimport { GET_MATCH_RESULT } from \"./request/constants.js\";\nimport { parseBody } from \"./utils/body.js\";\nimport { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from \"./utils/url.js\";\nvar tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);\nvar HonoRequest = class {\n raw;\n #validatedData;\n #matchResult;\n routeIndex = 0;\n path;\n bodyCache = {};\n constructor(request, path = \"/\", matchResult = [[]]) {\n this.raw = request;\n this.path = path;\n this.#matchResult = matchResult;\n this.#validatedData = {};\n }\n param(key) {\n return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();\n }\n #getDecodedParam(key) {\n const paramKey = this.#matchResult[0][this.routeIndex][1][key];\n const param = this.#getParamValue(paramKey);\n return param && /\\%/.test(param) ? tryDecodeURIComponent(param) : param;\n }\n #getAllDecodedParams() {\n const decoded = {};\n const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);\n for (const key of keys) {\n const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);\n if (value !== void 0) {\n decoded[key] = /\\%/.test(value) ? tryDecodeURIComponent(value) : value;\n }\n }\n return decoded;\n }\n #getParamValue(paramKey) {\n return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;\n }\n query(key) {\n return getQueryParam(this.url, key);\n }\n queries(key) {\n return getQueryParams(this.url, key);\n }\n header(name) {\n if (name) {\n return this.raw.headers.get(name) ?? void 0;\n }\n const headerData = {};\n this.raw.headers.forEach((value, key) => {\n headerData[key] = value;\n });\n return headerData;\n }\n async parseBody(options) {\n return this.bodyCache.parsedBody ??= await parseBody(this, options);\n }\n #cachedBody = (key) => {\n const { bodyCache, raw } = this;\n const cachedBody = bodyCache[key];\n if (cachedBody) {\n return cachedBody;\n }\n const anyCachedKey = Object.keys(bodyCache)[0];\n if (anyCachedKey) {\n return bodyCache[anyCachedKey].then((body) => {\n if (anyCachedKey === \"json\") {\n body = JSON.stringify(body);\n }\n return new Response(body)[key]();\n });\n }\n return bodyCache[key] = raw[key]();\n };\n json() {\n return this.#cachedBody(\"text\").then((text) => JSON.parse(text));\n }\n text() {\n return this.#cachedBody(\"text\");\n }\n arrayBuffer() {\n return this.#cachedBody(\"arrayBuffer\");\n }\n blob() {\n return this.#cachedBody(\"blob\");\n }\n formData() {\n return this.#cachedBody(\"formData\");\n }\n addValidatedData(target, data) {\n this.#validatedData[target] = data;\n }\n valid(target) {\n return this.#validatedData[target];\n }\n get url() {\n return this.raw.url;\n }\n get method() {\n return this.raw.method;\n }\n get [GET_MATCH_RESULT]() {\n return this.#matchResult;\n }\n get matchedRoutes() {\n return this.#matchResult[0].map(([[, route]]) => route);\n }\n get routePath() {\n return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;\n }\n};\nexport {\n HonoRequest\n};\n", "// src/utils/html.ts\nvar HtmlEscapedCallbackPhase = {\n Stringify: 1,\n BeforeStream: 2,\n Stream: 3\n};\nvar raw = (value, callbacks) => {\n const escapedString = new String(value);\n escapedString.isEscaped = true;\n escapedString.callbacks = callbacks;\n return escapedString;\n};\nvar escapeRe = /[&<>'\"]/;\nvar stringBufferToString = async (buffer, callbacks) => {\n let str = \"\";\n callbacks ||= [];\n const resolvedBuffer = await Promise.all(buffer);\n for (let i = resolvedBuffer.length - 1; ; i--) {\n str += resolvedBuffer[i];\n i--;\n if (i < 0) {\n break;\n }\n let r = resolvedBuffer[i];\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n const isEscaped = r.isEscaped;\n r = await (typeof r === \"object\" ? r.toString() : r);\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n if (r.isEscaped ?? isEscaped) {\n str += r;\n } else {\n const buf = [str];\n escapeToBuffer(r, buf);\n str = buf[0];\n }\n }\n return raw(str, callbacks);\n};\nvar escapeToBuffer = (str, buffer) => {\n const match = str.search(escapeRe);\n if (match === -1) {\n buffer[0] += str;\n return;\n }\n let escape;\n let index;\n let lastIndex = 0;\n for (index = match; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escape = \""\";\n break;\n case 39:\n escape = \"'\";\n break;\n case 38:\n escape = \"&\";\n break;\n case 60:\n escape = \"<\";\n break;\n case 62:\n escape = \">\";\n break;\n default:\n continue;\n }\n buffer[0] += str.substring(lastIndex, index) + escape;\n lastIndex = index + 1;\n }\n buffer[0] += str.substring(lastIndex, index);\n};\nvar resolveCallbackSync = (str) => {\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return str;\n }\n const buffer = [str];\n const context = {};\n callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));\n return buffer[0];\n};\nvar resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {\n if (typeof str === \"object\" && !(str instanceof String)) {\n if (!(str instanceof Promise)) {\n str = str.toString();\n }\n if (str instanceof Promise) {\n str = await str;\n }\n }\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return Promise.resolve(str);\n }\n if (buffer) {\n buffer[0] += str;\n } else {\n buffer = [str];\n }\n const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(\n (res) => Promise.all(\n res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))\n ).then(() => buffer[0])\n );\n if (preserveCallbacks) {\n return raw(await resStr, callbacks);\n } else {\n return resStr;\n }\n};\nexport {\n HtmlEscapedCallbackPhase,\n escapeToBuffer,\n raw,\n resolveCallback,\n resolveCallbackSync,\n stringBufferToString\n};\n", "// src/context.ts\nimport { HonoRequest } from \"./request.js\";\nimport { HtmlEscapedCallbackPhase, resolveCallback } from \"./utils/html.js\";\nvar TEXT_PLAIN = \"text/plain; charset=UTF-8\";\nvar setDefaultContentType = (contentType, headers) => {\n return {\n \"Content-Type\": contentType,\n ...headers\n };\n};\nvar Context = class {\n #rawRequest;\n #req;\n env = {};\n #var;\n finalized = false;\n error;\n #status;\n #executionCtx;\n #res;\n #layout;\n #renderer;\n #notFoundHandler;\n #preparedHeaders;\n #matchResult;\n #path;\n constructor(req, options) {\n this.#rawRequest = req;\n if (options) {\n this.#executionCtx = options.executionCtx;\n this.env = options.env;\n this.#notFoundHandler = options.notFoundHandler;\n this.#path = options.path;\n this.#matchResult = options.matchResult;\n }\n }\n get req() {\n this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);\n return this.#req;\n }\n get event() {\n if (this.#executionCtx && \"respondWith\" in this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no FetchEvent\");\n }\n }\n get executionCtx() {\n if (this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no ExecutionContext\");\n }\n }\n get res() {\n return this.#res ||= new Response(null, {\n headers: this.#preparedHeaders ??= new Headers()\n });\n }\n set res(_res) {\n if (this.#res && _res) {\n _res = new Response(_res.body, _res);\n for (const [k, v] of this.#res.headers.entries()) {\n if (k === \"content-type\") {\n continue;\n }\n if (k === \"set-cookie\") {\n const cookies = this.#res.headers.getSetCookie();\n _res.headers.delete(\"set-cookie\");\n for (const cookie of cookies) {\n _res.headers.append(\"set-cookie\", cookie);\n }\n } else {\n _res.headers.set(k, v);\n }\n }\n }\n this.#res = _res;\n this.finalized = true;\n }\n render = (...args) => {\n this.#renderer ??= (content) => this.html(content);\n return this.#renderer(...args);\n };\n setLayout = (layout) => this.#layout = layout;\n getLayout = () => this.#layout;\n setRenderer = (renderer) => {\n this.#renderer = renderer;\n };\n header = (name, value, options) => {\n if (this.finalized) {\n this.#res = new Response(this.#res.body, this.#res);\n }\n const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();\n if (value === void 0) {\n headers.delete(name);\n } else if (options?.append) {\n headers.append(name, value);\n } else {\n headers.set(name, value);\n }\n };\n status = (status) => {\n this.#status = status;\n };\n set = (key, value) => {\n this.#var ??= /* @__PURE__ */ new Map();\n this.#var.set(key, value);\n };\n get = (key) => {\n return this.#var ? this.#var.get(key) : void 0;\n };\n get var() {\n if (!this.#var) {\n return {};\n }\n return Object.fromEntries(this.#var);\n }\n #newResponse(data, arg, headers) {\n const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();\n if (typeof arg === \"object\" && \"headers\" in arg) {\n const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);\n for (const [key, value] of argHeaders) {\n if (key.toLowerCase() === \"set-cookie\") {\n responseHeaders.append(key, value);\n } else {\n responseHeaders.set(key, value);\n }\n }\n }\n if (headers) {\n for (const [k, v] of Object.entries(headers)) {\n if (typeof v === \"string\") {\n responseHeaders.set(k, v);\n } else {\n responseHeaders.delete(k);\n for (const v2 of v) {\n responseHeaders.append(k, v2);\n }\n }\n }\n }\n const status = typeof arg === \"number\" ? arg : arg?.status ?? this.#status;\n return new Response(data, { status, headers: responseHeaders });\n }\n newResponse = (...args) => this.#newResponse(...args);\n body = (data, arg, headers) => this.#newResponse(data, arg, headers);\n text = (text, arg, headers) => {\n return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(\n text,\n arg,\n setDefaultContentType(TEXT_PLAIN, headers)\n );\n };\n json = (object, arg, headers) => {\n return this.#newResponse(\n JSON.stringify(object),\n arg,\n setDefaultContentType(\"application/json\", headers)\n );\n };\n html = (html, arg, headers) => {\n const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType(\"text/html; charset=UTF-8\", headers));\n return typeof html === \"object\" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);\n };\n redirect = (location, status) => {\n const locationString = String(location);\n this.header(\n \"Location\",\n !/[^\\x00-\\xFF]/.test(locationString) ? locationString : encodeURI(locationString)\n );\n return this.newResponse(null, status ?? 302);\n };\n notFound = () => {\n this.#notFoundHandler ??= () => new Response();\n return this.#notFoundHandler(this);\n };\n};\nexport {\n Context,\n TEXT_PLAIN\n};\n", "// src/router.ts\nvar METHOD_NAME_ALL = \"ALL\";\nvar METHOD_NAME_ALL_LOWERCASE = \"all\";\nvar METHODS = [\"get\", \"post\", \"put\", \"delete\", \"options\", \"patch\"];\nvar MESSAGE_MATCHER_IS_ALREADY_BUILT = \"Can not add a route since the matcher is already built.\";\nvar UnsupportedPathError = class extends Error {\n};\nexport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHODS,\n METHOD_NAME_ALL,\n METHOD_NAME_ALL_LOWERCASE,\n UnsupportedPathError\n};\n", "// src/utils/constants.ts\nvar COMPOSED_HANDLER = \"__COMPOSED_HANDLER\";\nexport {\n COMPOSED_HANDLER\n};\n", "// src/hono-base.ts\nimport { compose } from \"./compose.js\";\nimport { Context } from \"./context.js\";\nimport { METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE } from \"./router.js\";\nimport { COMPOSED_HANDLER } from \"./utils/constants.js\";\nimport { getPath, getPathNoStrict, mergePath } from \"./utils/url.js\";\nvar notFoundHandler = (c) => {\n return c.text(\"404 Not Found\", 404);\n};\nvar errorHandler = (err, c) => {\n if (\"getResponse\" in err) {\n const res = err.getResponse();\n return c.newResponse(res.body, res);\n }\n console.error(err);\n return c.text(\"Internal Server Error\", 500);\n};\nvar Hono = class {\n get;\n post;\n put;\n delete;\n options;\n patch;\n all;\n on;\n use;\n router;\n getPath;\n _basePath = \"/\";\n #path = \"/\";\n routes = [];\n constructor(options = {}) {\n const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE];\n allMethods.forEach((method) => {\n this[method] = (args1, ...args) => {\n if (typeof args1 === \"string\") {\n this.#path = args1;\n } else {\n this.#addRoute(method, this.#path, args1);\n }\n args.forEach((handler) => {\n this.#addRoute(method, this.#path, handler);\n });\n return this;\n };\n });\n this.on = (method, path, ...handlers) => {\n for (const p of [path].flat()) {\n this.#path = p;\n for (const m of [method].flat()) {\n handlers.map((handler) => {\n this.#addRoute(m.toUpperCase(), this.#path, handler);\n });\n }\n }\n return this;\n };\n this.use = (arg1, ...handlers) => {\n if (typeof arg1 === \"string\") {\n this.#path = arg1;\n } else {\n this.#path = \"*\";\n handlers.unshift(arg1);\n }\n handlers.forEach((handler) => {\n this.#addRoute(METHOD_NAME_ALL, this.#path, handler);\n });\n return this;\n };\n const { strict, ...optionsWithoutStrict } = options;\n Object.assign(this, optionsWithoutStrict);\n this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;\n }\n #clone() {\n const clone = new Hono({\n router: this.router,\n getPath: this.getPath\n });\n clone.errorHandler = this.errorHandler;\n clone.#notFoundHandler = this.#notFoundHandler;\n clone.routes = this.routes;\n return clone;\n }\n #notFoundHandler = notFoundHandler;\n errorHandler = errorHandler;\n route(path, app) {\n const subApp = this.basePath(path);\n app.routes.map((r) => {\n let handler;\n if (app.errorHandler === errorHandler) {\n handler = r.handler;\n } else {\n handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;\n handler[COMPOSED_HANDLER] = r.handler;\n }\n subApp.#addRoute(r.method, r.path, handler);\n });\n return this;\n }\n basePath(path) {\n const subApp = this.#clone();\n subApp._basePath = mergePath(this._basePath, path);\n return subApp;\n }\n onError = (handler) => {\n this.errorHandler = handler;\n return this;\n };\n notFound = (handler) => {\n this.#notFoundHandler = handler;\n return this;\n };\n mount(path, applicationHandler, options) {\n let replaceRequest;\n let optionHandler;\n if (options) {\n if (typeof options === \"function\") {\n optionHandler = options;\n } else {\n optionHandler = options.optionHandler;\n if (options.replaceRequest === false) {\n replaceRequest = (request) => request;\n } else {\n replaceRequest = options.replaceRequest;\n }\n }\n }\n const getOptions = optionHandler ? (c) => {\n const options2 = optionHandler(c);\n return Array.isArray(options2) ? options2 : [options2];\n } : (c) => {\n let executionContext = void 0;\n try {\n executionContext = c.executionCtx;\n } catch {\n }\n return [c.env, executionContext];\n };\n replaceRequest ||= (() => {\n const mergedPath = mergePath(this._basePath, path);\n const pathPrefixLength = mergedPath === \"/\" ? 0 : mergedPath.length;\n return (request) => {\n const url = new URL(request.url);\n url.pathname = url.pathname.slice(pathPrefixLength) || \"/\";\n return new Request(url, request);\n };\n })();\n const handler = async (c, next) => {\n const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));\n if (res) {\n return res;\n }\n await next();\n };\n this.#addRoute(METHOD_NAME_ALL, mergePath(path, \"*\"), handler);\n return this;\n }\n #addRoute(method, path, handler) {\n method = method.toUpperCase();\n path = mergePath(this._basePath, path);\n const r = { basePath: this._basePath, path, method, handler };\n this.router.add(method, path, [handler, r]);\n this.routes.push(r);\n }\n #handleError(err, c) {\n if (err instanceof Error) {\n return this.errorHandler(err, c);\n }\n throw err;\n }\n #dispatch(request, executionCtx, env, method) {\n if (method === \"HEAD\") {\n return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, \"GET\")))();\n }\n const path = this.getPath(request, { env });\n const matchResult = this.router.match(method, path);\n const c = new Context(request, {\n path,\n matchResult,\n env,\n executionCtx,\n notFoundHandler: this.#notFoundHandler\n });\n if (matchResult[0].length === 1) {\n let res;\n try {\n res = matchResult[0][0][0][0](c, async () => {\n c.res = await this.#notFoundHandler(c);\n });\n } catch (err) {\n return this.#handleError(err, c);\n }\n return res instanceof Promise ? res.then(\n (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))\n ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);\n }\n const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);\n return (async () => {\n try {\n const context = await composed(c);\n if (!context.finalized) {\n throw new Error(\n \"Context is not finalized. Did you forget to return a Response object or `await next()`?\"\n );\n }\n return context.res;\n } catch (err) {\n return this.#handleError(err, c);\n }\n })();\n }\n fetch = (request, ...rest) => {\n return this.#dispatch(request, rest[1], rest[0], request.method);\n };\n request = (input, requestInit, Env, executionCtx) => {\n if (input instanceof Request) {\n return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);\n }\n input = input.toString();\n return this.fetch(\n new Request(\n /^https?:\\/\\//.test(input) ? input : `http://localhost${mergePath(\"/\", input)}`,\n requestInit\n ),\n Env,\n executionCtx\n );\n };\n fire = () => {\n addEventListener(\"fetch\", (event) => {\n event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));\n });\n };\n};\nexport {\n Hono as HonoBase\n};\n", "// src/router/reg-exp-router/matcher.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nvar emptyParam = [];\nfunction match(method, path) {\n const matchers = this.buildAllMatchers();\n const match2 = (method2, path2) => {\n const matcher = matchers[method2] || matchers[METHOD_NAME_ALL];\n const staticMatch = matcher[2][path2];\n if (staticMatch) {\n return staticMatch;\n }\n const match3 = path2.match(matcher[0]);\n if (!match3) {\n return [[], emptyParam];\n }\n const index = match3.indexOf(\"\", 1);\n return [matcher[1][index], match3];\n };\n this.match = match2;\n return match2(method, path);\n}\nexport {\n emptyParam,\n match\n};\n", "// src/router/reg-exp-router/node.ts\nvar LABEL_REG_EXP_STR = \"[^/]+\";\nvar ONLY_WILDCARD_REG_EXP_STR = \".*\";\nvar TAIL_WILDCARD_REG_EXP_STR = \"(?:|/.*)\";\nvar PATH_ERROR = Symbol();\nvar regExpMetaChars = new Set(\".\\\\+*[^]$()\");\nfunction compareKey(a, b) {\n if (a.length === 1) {\n return b.length === 1 ? a < b ? -1 : 1 : -1;\n }\n if (b.length === 1) {\n return 1;\n }\n if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) {\n return 1;\n } else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) {\n return -1;\n }\n if (a === LABEL_REG_EXP_STR) {\n return 1;\n } else if (b === LABEL_REG_EXP_STR) {\n return -1;\n }\n return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;\n}\nvar Node = class {\n #index;\n #varIndex;\n #children = /* @__PURE__ */ Object.create(null);\n insert(tokens, index, paramMap, context, pathErrorCheckOnly) {\n if (tokens.length === 0) {\n if (this.#index !== void 0) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n this.#index = index;\n return;\n }\n const [token, ...restTokens] = tokens;\n const pattern = token === \"*\" ? restTokens.length === 0 ? [\"\", \"\", ONLY_WILDCARD_REG_EXP_STR] : [\"\", \"\", LABEL_REG_EXP_STR] : token === \"/*\" ? [\"\", \"\", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n let node;\n if (pattern) {\n const name = pattern[1];\n let regexpStr = pattern[2] || LABEL_REG_EXP_STR;\n if (name && pattern[2]) {\n if (regexpStr === \".*\") {\n throw PATH_ERROR;\n }\n regexpStr = regexpStr.replace(/^\\((?!\\?:)(?=[^)]+\\)$)/, \"(?:\");\n if (/\\((?!\\?:)/.test(regexpStr)) {\n throw PATH_ERROR;\n }\n }\n node = this.#children[regexpStr];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[regexpStr] = new Node();\n if (name !== \"\") {\n node.#varIndex = context.varIndex++;\n }\n }\n if (!pathErrorCheckOnly && name !== \"\") {\n paramMap.push([name, node.#varIndex]);\n }\n } else {\n node = this.#children[token];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[token] = new Node();\n }\n }\n node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly);\n }\n buildRegExpStr() {\n const childKeys = Object.keys(this.#children).sort(compareKey);\n const strList = childKeys.map((k) => {\n const c = this.#children[k];\n return (typeof c.#varIndex === \"number\" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\\\${k}` : k) + c.buildRegExpStr();\n });\n if (typeof this.#index === \"number\") {\n strList.unshift(`#${this.#index}`);\n }\n if (strList.length === 0) {\n return \"\";\n }\n if (strList.length === 1) {\n return strList[0];\n }\n return \"(?:\" + strList.join(\"|\") + \")\";\n }\n};\nexport {\n Node,\n PATH_ERROR\n};\n", "// src/router/reg-exp-router/trie.ts\nimport { Node } from \"./node.js\";\nvar Trie = class {\n #context = { varIndex: 0 };\n #root = new Node();\n insert(path, index, pathErrorCheckOnly) {\n const paramAssoc = [];\n const groups = [];\n for (let i = 0; ; ) {\n let replaced = false;\n path = path.replace(/\\{[^}]+\\}/g, (m) => {\n const mark = `@\\\\${i}`;\n groups[i] = [mark, m];\n i++;\n replaced = true;\n return mark;\n });\n if (!replaced) {\n break;\n }\n }\n const tokens = path.match(/(?::[^\\/]+)|(?:\\/\\*$)|./g) || [];\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = tokens.length - 1; j >= 0; j--) {\n if (tokens[j].indexOf(mark) !== -1) {\n tokens[j] = tokens[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly);\n return paramAssoc;\n }\n buildRegExp() {\n let regexp = this.#root.buildRegExpStr();\n if (regexp === \"\") {\n return [/^$/, [], []];\n }\n let captureIndex = 0;\n const indexReplacementMap = [];\n const paramReplacementMap = [];\n regexp = regexp.replace(/#(\\d+)|@(\\d+)|\\.\\*\\$/g, (_, handlerIndex, paramIndex) => {\n if (handlerIndex !== void 0) {\n indexReplacementMap[++captureIndex] = Number(handlerIndex);\n return \"$()\";\n }\n if (paramIndex !== void 0) {\n paramReplacementMap[Number(paramIndex)] = ++captureIndex;\n return \"\";\n }\n return \"\";\n });\n return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap];\n }\n};\nexport {\n Trie\n};\n", "// src/router/reg-exp-router/router.ts\nimport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHOD_NAME_ALL,\n UnsupportedPathError\n} from \"../../router.js\";\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { match, emptyParam } from \"./matcher.js\";\nimport { PATH_ERROR } from \"./node.js\";\nimport { Trie } from \"./trie.js\";\nvar nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];\nvar wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\nfunction buildWildcardRegExp(path) {\n return wildcardRegExpCache[path] ??= new RegExp(\n path === \"*\" ? \"\" : `^${path.replace(\n /\\/\\*$|([.\\\\+*[^\\]$()])/g,\n (_, metaChar) => metaChar ? `\\\\${metaChar}` : \"(?:|/.*)\"\n )}$`\n );\n}\nfunction clearWildcardRegExpCache() {\n wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\n}\nfunction buildMatcherFromPreprocessedRoutes(routes) {\n const trie = new Trie();\n const handlerData = [];\n if (routes.length === 0) {\n return nullMatcher;\n }\n const routesWithStaticPathFlag = routes.map(\n (route) => [!/\\*|\\/:/.test(route[0]), ...route]\n ).sort(\n ([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length\n );\n const staticMap = /* @__PURE__ */ Object.create(null);\n for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) {\n const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i];\n if (pathErrorCheckOnly) {\n staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam];\n } else {\n j++;\n }\n let paramAssoc;\n try {\n paramAssoc = trie.insert(path, j, pathErrorCheckOnly);\n } catch (e) {\n throw e === PATH_ERROR ? new UnsupportedPathError(path) : e;\n }\n if (pathErrorCheckOnly) {\n continue;\n }\n handlerData[j] = handlers.map(([h, paramCount]) => {\n const paramIndexMap = /* @__PURE__ */ Object.create(null);\n paramCount -= 1;\n for (; paramCount >= 0; paramCount--) {\n const [key, value] = paramAssoc[paramCount];\n paramIndexMap[key] = value;\n }\n return [h, paramIndexMap];\n });\n }\n const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();\n for (let i = 0, len = handlerData.length; i < len; i++) {\n for (let j = 0, len2 = handlerData[i].length; j < len2; j++) {\n const map = handlerData[i][j]?.[1];\n if (!map) {\n continue;\n }\n const keys = Object.keys(map);\n for (let k = 0, len3 = keys.length; k < len3; k++) {\n map[keys[k]] = paramReplacementMap[map[keys[k]]];\n }\n }\n }\n const handlerMap = [];\n for (const i in indexReplacementMap) {\n handlerMap[i] = handlerData[indexReplacementMap[i]];\n }\n return [regexp, handlerMap, staticMap];\n}\nfunction findMiddleware(middleware, path) {\n if (!middleware) {\n return void 0;\n }\n for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) {\n if (buildWildcardRegExp(k).test(path)) {\n return [...middleware[k]];\n }\n }\n return void 0;\n}\nvar RegExpRouter = class {\n name = \"RegExpRouter\";\n #middleware;\n #routes;\n constructor() {\n this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n }\n add(method, path, handler) {\n const middleware = this.#middleware;\n const routes = this.#routes;\n if (!middleware || !routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n if (!middleware[method]) {\n ;\n [middleware, routes].forEach((handlerMap) => {\n handlerMap[method] = /* @__PURE__ */ Object.create(null);\n Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => {\n handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]];\n });\n });\n }\n if (path === \"/*\") {\n path = \"*\";\n }\n const paramCount = (path.match(/\\/:/g) || []).length;\n if (/\\*$/.test(path)) {\n const re = buildWildcardRegExp(path);\n if (method === METHOD_NAME_ALL) {\n Object.keys(middleware).forEach((m) => {\n middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n });\n } else {\n middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n }\n Object.keys(middleware).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(middleware[m]).forEach((p) => {\n re.test(p) && middleware[m][p].push([handler, paramCount]);\n });\n }\n });\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(routes[m]).forEach(\n (p) => re.test(p) && routes[m][p].push([handler, paramCount])\n );\n }\n });\n return;\n }\n const paths = checkOptionalParameter(path) || [path];\n for (let i = 0, len = paths.length; i < len; i++) {\n const path2 = paths[i];\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n routes[m][path2] ||= [\n ...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || []\n ];\n routes[m][path2].push([handler, paramCount - len + i + 1]);\n }\n });\n }\n }\n match = match;\n buildAllMatchers() {\n const matchers = /* @__PURE__ */ Object.create(null);\n Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => {\n matchers[method] ||= this.#buildMatcher(method);\n });\n this.#middleware = this.#routes = void 0;\n clearWildcardRegExpCache();\n return matchers;\n }\n #buildMatcher(method) {\n const routes = [];\n let hasOwnRoute = method === METHOD_NAME_ALL;\n [this.#middleware, this.#routes].forEach((r) => {\n const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : [];\n if (ownRoute.length !== 0) {\n hasOwnRoute ||= true;\n routes.push(...ownRoute);\n } else if (method !== METHOD_NAME_ALL) {\n routes.push(\n ...Object.keys(r[METHOD_NAME_ALL]).map((path) => [path, r[METHOD_NAME_ALL][path]])\n );\n }\n });\n if (!hasOwnRoute) {\n return null;\n } else {\n return buildMatcherFromPreprocessedRoutes(routes);\n }\n }\n};\nexport {\n RegExpRouter\n};\n", "// src/router/smart-router/router.ts\nimport { MESSAGE_MATCHER_IS_ALREADY_BUILT, UnsupportedPathError } from \"../../router.js\";\nvar SmartRouter = class {\n name = \"SmartRouter\";\n #routers = [];\n #routes = [];\n constructor(init) {\n this.#routers = init.routers;\n }\n add(method, path, handler) {\n if (!this.#routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n this.#routes.push([method, path, handler]);\n }\n match(method, path) {\n if (!this.#routes) {\n throw new Error(\"Fatal error\");\n }\n const routers = this.#routers;\n const routes = this.#routes;\n const len = routers.length;\n let i = 0;\n let res;\n for (; i < len; i++) {\n const router = routers[i];\n try {\n for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) {\n router.add(...routes[i2]);\n }\n res = router.match(method, path);\n } catch (e) {\n if (e instanceof UnsupportedPathError) {\n continue;\n }\n throw e;\n }\n this.match = router.match.bind(router);\n this.#routers = [router];\n this.#routes = void 0;\n break;\n }\n if (i === len) {\n throw new Error(\"Fatal error\");\n }\n this.name = `SmartRouter + ${this.activeRouter.name}`;\n return res;\n }\n get activeRouter() {\n if (this.#routes || this.#routers.length !== 1) {\n throw new Error(\"No active router has been determined yet.\");\n }\n return this.#routers[0];\n }\n};\nexport {\n SmartRouter\n};\n", "// src/router/trie-router/node.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nimport { getPattern, splitPath, splitRoutingPath } from \"../../utils/url.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar Node = class {\n #methods;\n #children;\n #patterns;\n #order = 0;\n #params = emptyParams;\n constructor(method, handler, children) {\n this.#children = children || /* @__PURE__ */ Object.create(null);\n this.#methods = [];\n if (method && handler) {\n const m = /* @__PURE__ */ Object.create(null);\n m[method] = { handler, possibleKeys: [], score: 0 };\n this.#methods = [m];\n }\n this.#patterns = [];\n }\n insert(method, path, handler) {\n this.#order = ++this.#order;\n let curNode = this;\n const parts = splitRoutingPath(path);\n const possibleKeys = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const p = parts[i];\n const nextP = parts[i + 1];\n const pattern = getPattern(p, nextP);\n const key = Array.isArray(pattern) ? pattern[0] : p;\n if (key in curNode.#children) {\n curNode = curNode.#children[key];\n if (pattern) {\n possibleKeys.push(pattern[1]);\n }\n continue;\n }\n curNode.#children[key] = new Node();\n if (pattern) {\n curNode.#patterns.push(pattern);\n possibleKeys.push(pattern[1]);\n }\n curNode = curNode.#children[key];\n }\n curNode.#methods.push({\n [method]: {\n handler,\n possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),\n score: this.#order\n }\n });\n return curNode;\n }\n #getHandlerSets(node, method, nodeParams, params) {\n const handlerSets = [];\n for (let i = 0, len = node.#methods.length; i < len; i++) {\n const m = node.#methods[i];\n const handlerSet = m[method] || m[METHOD_NAME_ALL];\n const processedSet = {};\n if (handlerSet !== void 0) {\n handlerSet.params = /* @__PURE__ */ Object.create(null);\n handlerSets.push(handlerSet);\n if (nodeParams !== emptyParams || params && params !== emptyParams) {\n for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {\n const key = handlerSet.possibleKeys[i2];\n const processed = processedSet[handlerSet.score];\n handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];\n processedSet[handlerSet.score] = true;\n }\n }\n }\n }\n return handlerSets;\n }\n search(method, path) {\n const handlerSets = [];\n this.#params = emptyParams;\n const curNode = this;\n let curNodes = [curNode];\n const parts = splitPath(path);\n const curNodesQueue = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const part = parts[i];\n const isLast = i === len - 1;\n const tempNodes = [];\n for (let j = 0, len2 = curNodes.length; j < len2; j++) {\n const node = curNodes[j];\n const nextNode = node.#children[part];\n if (nextNode) {\n nextNode.#params = node.#params;\n if (isLast) {\n if (nextNode.#children[\"*\"]) {\n handlerSets.push(\n ...this.#getHandlerSets(nextNode.#children[\"*\"], method, node.#params)\n );\n }\n handlerSets.push(...this.#getHandlerSets(nextNode, method, node.#params));\n } else {\n tempNodes.push(nextNode);\n }\n }\n for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {\n const pattern = node.#patterns[k];\n const params = node.#params === emptyParams ? {} : { ...node.#params };\n if (pattern === \"*\") {\n const astNode = node.#children[\"*\"];\n if (astNode) {\n handlerSets.push(...this.#getHandlerSets(astNode, method, node.#params));\n astNode.#params = params;\n tempNodes.push(astNode);\n }\n continue;\n }\n const [key, name, matcher] = pattern;\n if (!part && !(matcher instanceof RegExp)) {\n continue;\n }\n const child = node.#children[key];\n const restPathString = parts.slice(i).join(\"/\");\n if (matcher instanceof RegExp) {\n const m = matcher.exec(restPathString);\n if (m) {\n params[name] = m[0];\n handlerSets.push(...this.#getHandlerSets(child, method, node.#params, params));\n if (Object.keys(child.#children).length) {\n child.#params = params;\n const componentCount = m[0].match(/\\//)?.length ?? 0;\n const targetCurNodes = curNodesQueue[componentCount] ||= [];\n targetCurNodes.push(child);\n }\n continue;\n }\n }\n if (matcher === true || matcher.test(part)) {\n params[name] = part;\n if (isLast) {\n handlerSets.push(...this.#getHandlerSets(child, method, params, node.#params));\n if (child.#children[\"*\"]) {\n handlerSets.push(\n ...this.#getHandlerSets(child.#children[\"*\"], method, params, node.#params)\n );\n }\n } else {\n child.#params = params;\n tempNodes.push(child);\n }\n }\n }\n }\n curNodes = tempNodes.concat(curNodesQueue.shift() ?? []);\n }\n if (handlerSets.length > 1) {\n handlerSets.sort((a, b) => {\n return a.score - b.score;\n });\n }\n return [handlerSets.map(({ handler, params }) => [handler, params])];\n }\n};\nexport {\n Node\n};\n", "// src/router/trie-router/router.ts\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { Node } from \"./node.js\";\nvar TrieRouter = class {\n name = \"TrieRouter\";\n #node;\n constructor() {\n this.#node = new Node();\n }\n add(method, path, handler) {\n const results = checkOptionalParameter(path);\n if (results) {\n for (let i = 0, len = results.length; i < len; i++) {\n this.#node.insert(method, results[i], handler);\n }\n return;\n }\n this.#node.insert(method, path, handler);\n }\n match(method, path) {\n return this.#node.search(method, path);\n }\n};\nexport {\n TrieRouter\n};\n", "// src/hono.ts\nimport { HonoBase } from \"./hono-base.js\";\nimport { RegExpRouter } from \"./router/reg-exp-router/index.js\";\nimport { SmartRouter } from \"./router/smart-router/index.js\";\nimport { TrieRouter } from \"./router/trie-router/index.js\";\nvar Hono = class extends HonoBase {\n constructor(options = {}) {\n super(options);\n this.router = options.router ?? new SmartRouter({\n routers: [new RegExpRouter(), new TrieRouter()]\n });\n }\n};\nexport {\n Hono\n};\n", "// src/utils/compress.ts\nvar COMPRESSIBLE_CONTENT_TYPE_REGEX = /^\\s*(?:text\\/(?!event-stream(?:[;\\s]|$))[^;\\s]+|application\\/(?:javascript|json|xml|xml-dtd|ecmascript|dart|postscript|rtf|tar|toml|vnd\\.dart|vnd\\.ms-fontobject|vnd\\.ms-opentype|wasm|x-httpd-php|x-javascript|x-ns-proxy-autoconfig|x-sh|x-tar|x-virtualbox-hdd|x-virtualbox-ova|x-virtualbox-ovf|x-virtualbox-vbox|x-virtualbox-vdi|x-virtualbox-vhd|x-virtualbox-vmdk|x-www-form-urlencoded)|font\\/(?:otf|ttf)|image\\/(?:bmp|vnd\\.adobe\\.photoshop|vnd\\.microsoft\\.icon|vnd\\.ms-dds|x-icon|x-ms-bmp)|message\\/rfc822|model\\/gltf-binary|x-shader\\/x-fragment|x-shader\\/x-vertex|[^;\\s]+?\\+(?:json|text|xml|yaml))(?:[;\\s]|$)/i;\nexport {\n COMPRESSIBLE_CONTENT_TYPE_REGEX\n};\n", "// src/utils/mime.ts\nvar getMimeType = (filename, mimes = baseMimes) => {\n const regexp = /\\.([a-zA-Z0-9]+?)$/;\n const match = filename.match(regexp);\n if (!match) {\n return;\n }\n let mimeType = mimes[match[1]];\n if (mimeType && mimeType.startsWith(\"text\")) {\n mimeType += \"; charset=utf-8\";\n }\n return mimeType;\n};\nvar getExtension = (mimeType) => {\n for (const ext in baseMimes) {\n if (baseMimes[ext] === mimeType) {\n return ext;\n }\n }\n};\nvar _baseMimes = {\n aac: \"audio/aac\",\n avi: \"video/x-msvideo\",\n avif: \"image/avif\",\n av1: \"video/av1\",\n bin: \"application/octet-stream\",\n bmp: \"image/bmp\",\n css: \"text/css\",\n csv: \"text/csv\",\n eot: \"application/vnd.ms-fontobject\",\n epub: \"application/epub+zip\",\n gif: \"image/gif\",\n gz: \"application/gzip\",\n htm: \"text/html\",\n html: \"text/html\",\n ico: \"image/x-icon\",\n ics: \"text/calendar\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n js: \"text/javascript\",\n json: \"application/json\",\n jsonld: \"application/ld+json\",\n map: \"application/json\",\n mid: \"audio/x-midi\",\n midi: \"audio/x-midi\",\n mjs: \"text/javascript\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n mpeg: \"video/mpeg\",\n oga: \"audio/ogg\",\n ogv: \"video/ogg\",\n ogx: \"application/ogg\",\n opus: \"audio/opus\",\n otf: \"font/otf\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n rtf: \"application/rtf\",\n svg: \"image/svg+xml\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n ts: \"video/mp2t\",\n ttf: \"font/ttf\",\n txt: \"text/plain\",\n wasm: \"application/wasm\",\n webm: \"video/webm\",\n weba: \"audio/webm\",\n webmanifest: \"application/manifest+json\",\n webp: \"image/webp\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n xhtml: \"application/xhtml+xml\",\n xml: \"application/xml\",\n zip: \"application/zip\",\n \"3gp\": \"video/3gpp\",\n \"3g2\": \"video/3gpp2\",\n gltf: \"model/gltf+json\",\n glb: \"model/gltf-binary\"\n};\nvar baseMimes = _baseMimes;\nexport {\n getExtension,\n getMimeType,\n baseMimes as mimes\n};\n", "// src/middleware/serve-static/path.ts\nvar defaultJoin = (...paths) => {\n let result = paths.filter((p) => p !== \"\").join(\"/\");\n result = result.replace(/(?<=\\/)\\/+/g, \"\");\n const segments = result.split(\"/\");\n const resolved = [];\n for (const segment of segments) {\n if (segment === \"..\" && resolved.length > 0 && resolved.at(-1) !== \"..\") {\n resolved.pop();\n } else if (segment !== \".\") {\n resolved.push(segment);\n }\n }\n return resolved.join(\"/\") || \".\";\n};\nexport {\n defaultJoin\n};\n", "// src/middleware/serve-static/index.ts\nimport { COMPRESSIBLE_CONTENT_TYPE_REGEX } from \"../../utils/compress.js\";\nimport { getMimeType } from \"../../utils/mime.js\";\nimport { defaultJoin } from \"./path.js\";\nvar ENCODINGS = {\n br: \".br\",\n zstd: \".zst\",\n gzip: \".gz\"\n};\nvar ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);\nvar DEFAULT_DOCUMENT = \"index.html\";\nvar serveStatic = (options) => {\n const root = options.root ?? \"./\";\n const optionPath = options.path;\n const join = options.join ?? defaultJoin;\n return async (c, next) => {\n if (c.finalized) {\n return next();\n }\n let filename;\n if (options.path) {\n filename = options.path;\n } else {\n try {\n filename = decodeURIComponent(c.req.path);\n if (/(?:^|[\\/\\\\])\\.\\.(?:$|[\\/\\\\])/.test(filename)) {\n throw new Error();\n }\n } catch {\n await options.onNotFound?.(c.req.path, c);\n return next();\n }\n }\n let path = join(\n root,\n !optionPath && options.rewriteRequestPath ? options.rewriteRequestPath(filename) : filename\n );\n if (options.isDir && await options.isDir(path)) {\n path = join(path, DEFAULT_DOCUMENT);\n }\n const getContent = options.getContent;\n let content = await getContent(path, c);\n if (content instanceof Response) {\n return c.newResponse(content.body, content);\n }\n if (content) {\n const mimeType = options.mimes && getMimeType(path, options.mimes) || getMimeType(path);\n c.header(\"Content-Type\", mimeType || \"application/octet-stream\");\n if (options.precompressed && (!mimeType || COMPRESSIBLE_CONTENT_TYPE_REGEX.test(mimeType))) {\n const acceptEncodingSet = new Set(\n c.req.header(\"Accept-Encoding\")?.split(\",\").map((encoding) => encoding.trim())\n );\n for (const encoding of ENCODINGS_ORDERED_KEYS) {\n if (!acceptEncodingSet.has(encoding)) {\n continue;\n }\n const compressedContent = await getContent(path + ENCODINGS[encoding], c);\n if (compressedContent) {\n content = compressedContent;\n c.header(\"Content-Encoding\", encoding);\n c.header(\"Vary\", \"Accept-Encoding\", { append: true });\n break;\n }\n }\n }\n await options.onFound?.(path, c);\n return c.body(content);\n }\n await options.onNotFound?.(path, c);\n await next();\n return;\n };\n};\nexport {\n serveStatic\n};\n", "// src/adapter/cloudflare-workers/utils.ts\nvar getContentFromKVAsset = async (path, options) => {\n let ASSET_MANIFEST;\n if (options && options.manifest) {\n if (typeof options.manifest === \"string\") {\n ASSET_MANIFEST = JSON.parse(options.manifest);\n } else {\n ASSET_MANIFEST = options.manifest;\n }\n } else {\n if (typeof __STATIC_CONTENT_MANIFEST === \"string\") {\n ASSET_MANIFEST = JSON.parse(__STATIC_CONTENT_MANIFEST);\n } else {\n ASSET_MANIFEST = __STATIC_CONTENT_MANIFEST;\n }\n }\n let ASSET_NAMESPACE;\n if (options && options.namespace) {\n ASSET_NAMESPACE = options.namespace;\n } else {\n ASSET_NAMESPACE = __STATIC_CONTENT;\n }\n const key = ASSET_MANIFEST[path] || path;\n if (!key) {\n return null;\n }\n const content = await ASSET_NAMESPACE.get(key, { type: \"stream\" });\n if (!content) {\n return null;\n }\n return content;\n};\nexport {\n getContentFromKVAsset\n};\n", "// src/adapter/cloudflare-workers/serve-static.ts\nimport { serveStatic as baseServeStatic } from \"../../middleware/serve-static/index.js\";\nimport { getContentFromKVAsset } from \"./utils.js\";\nvar serveStatic = (options) => {\n return async function serveStatic2(c, next) {\n const getContent = async (path) => {\n return getContentFromKVAsset(path, {\n manifest: options.manifest,\n namespace: options.namespace ? options.namespace : c.env ? c.env.__STATIC_CONTENT : void 0\n });\n };\n return baseServeStatic({\n ...options,\n getContent\n })(c, next);\n };\n};\nexport {\n serveStatic\n};\n", "// src/adapter/cloudflare-workers/serve-static-module.ts\nimport { serveStatic } from \"./serve-static.js\";\nvar module = (options) => {\n return serveStatic(options);\n};\nexport {\n module as serveStatic\n};\n", "// src/helper/websocket/index.ts\nvar WSContext = class {\n #init;\n constructor(init) {\n this.#init = init;\n this.raw = init.raw;\n this.url = init.url ? new URL(init.url) : null;\n this.protocol = init.protocol ?? null;\n }\n send(source, options) {\n this.#init.send(source, options ?? {});\n }\n raw;\n binaryType = \"arraybuffer\";\n get readyState() {\n return this.#init.readyState;\n }\n url;\n protocol;\n close(code, reason) {\n this.#init.close(code, reason);\n }\n};\nvar createWSMessageEvent = (source) => {\n return new MessageEvent(\"message\", {\n data: source\n });\n};\nvar defineWebSocketHelper = (handler) => {\n return (...args) => {\n if (typeof args[0] === \"function\") {\n const [createEvents, options] = args;\n return async function upgradeWebSocket(c, next) {\n const events = await createEvents(c);\n const result = await handler(c, events, options);\n if (result) {\n return result;\n }\n await next();\n };\n } else {\n const [c, events, options] = args;\n return (async () => {\n const upgraded = await handler(c, events, options);\n if (!upgraded) {\n throw new Error(\"Failed to upgrade WebSocket\");\n }\n return upgraded;\n })();\n }\n };\n};\nexport {\n WSContext,\n createWSMessageEvent,\n defineWebSocketHelper\n};\n", "// src/adapter/cloudflare-workers/websocket.ts\nimport { WSContext, defineWebSocketHelper } from \"../../helper/websocket/index.js\";\nvar upgradeWebSocket = defineWebSocketHelper(async (c, events) => {\n const upgradeHeader = c.req.header(\"Upgrade\");\n if (upgradeHeader !== \"websocket\") {\n return;\n }\n const webSocketPair = new WebSocketPair();\n const client = webSocketPair[0];\n const server = webSocketPair[1];\n const wsContext = new WSContext({\n close: (code, reason) => server.close(code, reason),\n get protocol() {\n return server.protocol;\n },\n raw: server,\n get readyState() {\n return server.readyState;\n },\n url: server.url ? new URL(server.url) : null,\n send: (source) => server.send(source)\n });\n if (events.onClose) {\n server.addEventListener(\"close\", (evt) => events.onClose?.(evt, wsContext));\n }\n if (events.onMessage) {\n server.addEventListener(\"message\", (evt) => events.onMessage?.(evt, wsContext));\n }\n if (events.onError) {\n server.addEventListener(\"error\", (evt) => events.onError?.(evt, wsContext));\n }\n server.accept?.();\n return new Response(null, {\n status: 101,\n webSocket: client\n });\n});\nexport {\n upgradeWebSocket\n};\n", "// src/middleware/cors/index.ts\nvar cors = (options) => {\n const defaults = {\n origin: \"*\",\n allowMethods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\"],\n allowHeaders: [],\n exposeHeaders: []\n };\n const opts = {\n ...defaults,\n ...options\n };\n const findAllowOrigin = ((optsOrigin) => {\n if (typeof optsOrigin === \"string\") {\n if (optsOrigin === \"*\") {\n return () => optsOrigin;\n } else {\n return (origin) => optsOrigin === origin ? origin : null;\n }\n } else if (typeof optsOrigin === \"function\") {\n return optsOrigin;\n } else {\n return (origin) => optsOrigin.includes(origin) ? origin : null;\n }\n })(opts.origin);\n const findAllowMethods = ((optsAllowMethods) => {\n if (typeof optsAllowMethods === \"function\") {\n return optsAllowMethods;\n } else if (Array.isArray(optsAllowMethods)) {\n return () => optsAllowMethods;\n } else {\n return () => [];\n }\n })(opts.allowMethods);\n return async function cors2(c, next) {\n function set(key, value) {\n c.res.headers.set(key, value);\n }\n const allowOrigin = await findAllowOrigin(c.req.header(\"origin\") || \"\", c);\n if (allowOrigin) {\n set(\"Access-Control-Allow-Origin\", allowOrigin);\n }\n if (opts.origin !== \"*\") {\n const existingVary = c.req.header(\"Vary\");\n if (existingVary) {\n set(\"Vary\", existingVary);\n } else {\n set(\"Vary\", \"Origin\");\n }\n }\n if (opts.credentials) {\n set(\"Access-Control-Allow-Credentials\", \"true\");\n }\n if (opts.exposeHeaders?.length) {\n set(\"Access-Control-Expose-Headers\", opts.exposeHeaders.join(\",\"));\n }\n if (c.req.method === \"OPTIONS\") {\n if (opts.maxAge != null) {\n set(\"Access-Control-Max-Age\", opts.maxAge.toString());\n }\n const allowMethods = await findAllowMethods(c.req.header(\"origin\") || \"\", c);\n if (allowMethods.length) {\n set(\"Access-Control-Allow-Methods\", allowMethods.join(\",\"));\n }\n let headers = opts.allowHeaders;\n if (!headers?.length) {\n const requestHeaders = c.req.header(\"Access-Control-Request-Headers\");\n if (requestHeaders) {\n headers = requestHeaders.split(/\\s*,\\s*/);\n }\n }\n if (headers?.length) {\n set(\"Access-Control-Allow-Headers\", headers.join(\",\"));\n c.res.headers.append(\"Vary\", \"Access-Control-Request-Headers\");\n }\n c.res.headers.delete(\"Content-Length\");\n c.res.headers.delete(\"Content-Type\");\n return new Response(null, {\n headers: c.res.headers,\n status: 204,\n statusText: \"No Content\"\n });\n }\n await next();\n };\n};\nexport {\n cors\n};\n", "export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is>(value: any, type: T): value is InstanceType {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? ''\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = value.constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, ColumnDataType } from './column-builder.ts';\nimport { entityKind } from './entity.ts';\nimport type { DriverValueMapper, SQL, SQLWrapper } from './sql/sql.ts';\nimport type { Table } from './table.ts';\nimport type { Update } from './utils.ts';\n\nexport interface ColumnBaseConfig<\n\tTDataType extends ColumnDataType,\n\tTColumnType extends string,\n> extends ColumnBuilderBaseConfig {\n\ttableName: string;\n\tnotNull: boolean;\n\thasDefault: boolean;\n}\n\nexport type ColumnTypeConfig, TTypeConfig extends object> = T & {\n\tbrand: 'Column';\n\ttableName: T['tableName'];\n\tname: T['name'];\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: T['data'];\n\tdriverParam: T['driverParam'];\n\tnotNull: T['notNull'];\n\thasDefault: T['hasDefault'];\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseColumn: infer U } ? U : unknown;\n} & TTypeConfig;\n\nexport type ColumnRuntimeConfig = ColumnBuilderRuntimeConfig<\n\tTData,\n\tTRuntimeConfig\n>;\n\nexport interface Column<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTRuntimeConfig extends object = object,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTTypeConfig extends object = object,\n> extends DriverValueMapper, SQLWrapper {\n\t// SQLWrapper runtime implementation is defined in 'sql/sql.ts'\n}\n/*\n\t`Column` only accepts a full `ColumnConfig` as its generic.\n\tTo infer parts of the config, use `AnyColumn` that accepts a partial config.\n\tSee `GetColumnData` for example usage of inferring.\n*/\nexport abstract class Column<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n> implements DriverValueMapper, SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Column';\n\n\tdeclare readonly _: ColumnTypeConfig;\n\n\treadonly name: string;\n\treadonly primary: boolean;\n\treadonly notNull: boolean;\n\treadonly default: T['data'] | SQL | undefined;\n\treadonly defaultFn: (() => T['data'] | SQL) | undefined;\n\treadonly hasDefault: boolean;\n\treadonly isUnique: boolean;\n\treadonly uniqueName: string | undefined;\n\treadonly uniqueType: string | undefined;\n\treadonly dataType: T['dataType'];\n\treadonly columnType: T['columnType'];\n\treadonly enumValues: T['enumValues'] = undefined;\n\n\tprotected config: ColumnRuntimeConfig;\n\n\tconstructor(\n\t\treadonly table: Table,\n\t\tconfig: ColumnRuntimeConfig,\n\t) {\n\t\tthis.config = config;\n\t\tthis.name = config.name;\n\t\tthis.notNull = config.notNull;\n\t\tthis.default = config.default;\n\t\tthis.defaultFn = config.defaultFn;\n\t\tthis.hasDefault = config.hasDefault;\n\t\tthis.primary = config.primaryKey;\n\t\tthis.isUnique = config.isUnique;\n\t\tthis.uniqueName = config.uniqueName;\n\t\tthis.uniqueType = config.uniqueType;\n\t\tthis.dataType = config.dataType as T['dataType'];\n\t\tthis.columnType = config.columnType;\n\t}\n\n\tabstract getSQLType(): string;\n\n\tmapFromDriverValue(value: unknown): unknown {\n\t\treturn value;\n\t}\n\n\tmapToDriverValue(value: unknown): unknown {\n\t\treturn value;\n\t}\n}\n\nexport type UpdateColConfig<\n\tT extends ColumnBaseConfig,\n\tTUpdate extends Partial>,\n> = Update;\n\nexport type AnyColumn> = {}> = Column<\n\tRequired, TPartial>>\n>;\n\nexport type GetColumnData =\n\t// dprint-ignore\n\tTInferMode extends 'raw' // Raw mode\n\t\t? TColumn['_']['data'] // Just return the underlying type\n\t\t: TColumn['_']['notNull'] extends true // Query mode\n\t\t? TColumn['_']['data'] // Query mode, not null\n\t\t: TColumn['_']['data'] | null; // Query mode, nullable\n\nexport type InferColumnsDataTypes> = {\n\t[Key in keyof TColumns]: GetColumnData;\n};\n", "import { entityKind } from './entity.ts';\nimport type { SQL, SQLWrapper, ColumnsSelection } from './sql/sql.ts';\n\nexport const SubqueryConfig = Symbol.for('drizzle:SubqueryConfig');\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface Subquery extends SQLWrapper {\n\t// SQLWrapper runtime implementation is defined in 'sql/sql.ts'\n}\nexport class Subquery implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Subquery';\n\n\tdeclare _: {\n\t\tbrand: 'Subquery';\n\t\tselectedFields: TSelectedFields;\n\t\talias: TAlias;\n\t};\n\n\t/** @internal */\n\t[SubqueryConfig]: {\n\t\tsql: SQL;\n\t\tselection: ColumnsSelection;\n\t\talias: string;\n\t\tisWith: boolean;\n\t};\n\n\tconstructor(sql: SQL, selection: Record, alias: string, isWith = false) {\n\t\tthis[SubqueryConfig] = {\n\t\t\tsql,\n\t\t\tselection,\n\t\t\talias,\n\t\t\tisWith,\n\t\t};\n\t}\n\n\t// getSQL(): SQL {\n\t// \treturn new SQL([this]);\n\t// }\n}\n\nexport class WithSubquery extends Subquery {\n\tstatic readonly [entityKind]: string = 'WithSubquery';\n}", "export function iife(fn: (...args: T) => U, ...args: T): U {\n\treturn fn(...args);\n}", "// package.json\nvar version = \"0.29.5\";\n\n// src/version.ts\nvar compatibilityVersion = 6;\nexport {\n compatibilityVersion,\n version as npmVersion\n};\n", "import type { Span, Tracer } from '@opentelemetry/api';\nimport { iife } from '~/tracing-utils.ts';\nimport { npmVersion } from '~/version.ts';\n\nlet otel: typeof import('@opentelemetry/api') | undefined;\nlet rawTracer: Tracer | undefined;\n// try {\n// \totel = await import('@opentelemetry/api');\n// } catch (err: any) {\n// \tif (err.code !== 'MODULE_NOT_FOUND' && err.code !== 'ERR_MODULE_NOT_FOUND') {\n// \t\tthrow err;\n// \t}\n// }\n\ntype SpanName =\n\t| 'drizzle.operation'\n\t| 'drizzle.prepareQuery'\n\t| 'drizzle.buildSQL'\n\t| 'drizzle.execute'\n\t| 'drizzle.driver.execute'\n\t| 'drizzle.mapResponse';\n\n/** @internal */\nexport const tracer = {\n\tstartActiveSpan unknown>(name: SpanName, fn: F): ReturnType {\n\t\tif (!otel) {\n\t\t\treturn fn() as ReturnType;\n\t\t}\n\n\t\tif (!rawTracer) {\n\t\t\trawTracer = otel.trace.getTracer('drizzle-orm', npmVersion);\n\t\t}\n\n\t\treturn iife(\n\t\t\t(otel, rawTracer) =>\n\t\t\t\trawTracer.startActiveSpan(\n\t\t\t\t\tname,\n\t\t\t\t\t((span: Span) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn fn(span);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: otel.SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: e instanceof Error ? e.message : 'Unknown error', // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t}) as F,\n\t\t\t\t),\n\t\t\totel,\n\t\t\trawTracer,\n\t\t);\n\t},\n};\n", "export const ViewBaseConfig = Symbol.for('drizzle:ViewBaseConfig');\n", "import type { Column, GetColumnData } from './column.ts';\nimport { entityKind } from './entity.ts';\nimport type { OptionalKeyOnly, RequiredKeyOnly } from './operations.ts';\nimport type { SQLWrapper } from './sql/sql.ts';\nimport type { Simplify, Update } from './utils.ts';\n\nexport interface TableConfig> {\n\tname: string;\n\tschema: string | undefined;\n\tcolumns: Record;\n\tdialect: string;\n}\n\nexport type UpdateTableConfig> = Required<\n\tUpdate\n>;\n\n/** @internal */\nexport const TableName = Symbol.for('drizzle:Name');\n\n/** @internal */\nexport const Schema = Symbol.for('drizzle:Schema');\n\n/** @internal */\nexport const Columns = Symbol.for('drizzle:Columns');\n\n/** @internal */\nexport const OriginalName = Symbol.for('drizzle:OriginalName');\n\n/** @internal */\nexport const BaseName = Symbol.for('drizzle:BaseName');\n\n/** @internal */\nexport const IsAlias = Symbol.for('drizzle:IsAlias');\n\n/** @internal */\nexport const ExtraConfigBuilder = Symbol.for('drizzle:ExtraConfigBuilder');\n\nconst IsDrizzleTable = Symbol.for('drizzle:IsDrizzleTable');\n\nexport interface Table<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends TableConfig = TableConfig,\n> extends SQLWrapper {\n\t// SQLWrapper runtime implementation is defined in 'sql/sql.ts'\n}\n\nexport class Table implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Table';\n\n\tdeclare readonly _: {\n\t\treadonly brand: 'Table';\n\t\treadonly config: T;\n\t\treadonly name: T['name'];\n\t\treadonly schema: T['schema'];\n\t\treadonly columns: T['columns'];\n\t\treadonly inferSelect: InferSelectModel>;\n\t\treadonly inferInsert: InferInsertModel>;\n\t};\n\n\tdeclare readonly $inferSelect: InferSelectModel>;\n\tdeclare readonly $inferInsert: InferInsertModel>;\n\n\t/** @internal */\n\tstatic readonly Symbol = {\n\t\tName: TableName as typeof TableName,\n\t\tSchema: Schema as typeof Schema,\n\t\tOriginalName: OriginalName as typeof OriginalName,\n\t\tColumns: Columns as typeof Columns,\n\t\tBaseName: BaseName as typeof BaseName,\n\t\tIsAlias: IsAlias as typeof IsAlias,\n\t\tExtraConfigBuilder: ExtraConfigBuilder as typeof ExtraConfigBuilder,\n\t};\n\n\t/**\n\t * @internal\n\t * Can be changed if the table is aliased.\n\t */\n\t[TableName]: string;\n\n\t/**\n\t * @internal\n\t * Used to store the original name of the table, before any aliasing.\n\t */\n\t[OriginalName]: string;\n\n\t/** @internal */\n\t[Schema]: string | undefined;\n\n\t/** @internal */\n\t[Columns]!: T['columns'];\n\n\t/**\n\t * @internal\n\t * Used to store the table name before the transformation via the `tableCreator` functions.\n\t */\n\t[BaseName]: string;\n\n\t/** @internal */\n\t[IsAlias] = false;\n\n\t/** @internal */\n\t[ExtraConfigBuilder]: ((self: any) => Record) | undefined = undefined;\n\n\t[IsDrizzleTable] = true;\n\n\tconstructor(name: string, schema: string | undefined, baseName: string) {\n\t\tthis[TableName] = this[OriginalName] = name;\n\t\tthis[Schema] = schema;\n\t\tthis[BaseName] = baseName;\n\t}\n}\n\nexport function isTable(table: unknown): table is Table {\n\treturn typeof table === 'object' && table !== null && IsDrizzleTable in table;\n}\n\n/**\n * Any table with a specified boundary.\n *\n * @example\n\t```ts\n\t// Any table with a specific name\n\ttype AnyUsersTable = AnyTable<{ name: 'users' }>;\n\t```\n *\n * To describe any table with any config, simply use `Table` without any type arguments, like this:\n *\n\t```ts\n\tfunction needsTable(table: Table) {\n\t\t...\n\t}\n\t```\n */\nexport type AnyTable> = Table>;\n\nexport function getTableName(table: T): T['_']['name'] {\n\treturn table[TableName];\n}\n\nexport type MapColumnName =\n\tTDBColumNames extends true ? TColumn['_']['name']\n\t\t: TName;\n\nexport type InferModelFromColumns<\n\tTColumns extends Record,\n\tTInferMode extends 'select' | 'insert' = 'select',\n\tTConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },\n> = Simplify<\n\tTInferMode extends 'insert' ? \n\t\t\t& {\n\t\t\t\t[\n\t\t\t\t\tKey in keyof TColumns & string as RequiredKeyOnly<\n\t\t\t\t\t\tMapColumnName,\n\t\t\t\t\t\tTColumns[Key]\n\t\t\t\t\t>\n\t\t\t\t]: GetColumnData;\n\t\t\t}\n\t\t\t& {\n\t\t\t\t[\n\t\t\t\t\tKey in keyof TColumns & string as OptionalKeyOnly<\n\t\t\t\t\t\tMapColumnName,\n\t\t\t\t\t\tTColumns[Key]\n\t\t\t\t\t>\n\t\t\t\t]?: GetColumnData;\n\t\t\t}\n\t\t: {\n\t\t\t[\n\t\t\t\tKey in keyof TColumns & string as MapColumnName<\n\t\t\t\t\tKey,\n\t\t\t\t\tTColumns[Key],\n\t\t\t\t\tTConfig['dbColumnNames']\n\t\t\t\t>\n\t\t\t]: GetColumnData;\n\t\t}\n>;\n\n/** @deprecated Use one of the alternatives: {@link InferSelectModel} / {@link InferInsertModel}, or `table.$inferSelect` / `table.$inferInsert`\n */\nexport type InferModel<\n\tTTable extends Table,\n\tTInferMode extends 'select' | 'insert' = 'select',\n\tTConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },\n> = InferModelFromColumns;\n\nexport type InferSelectModel<\n\tTTable extends Table,\n\tTConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },\n> = InferModelFromColumns;\n\nexport type InferInsertModel<\n\tTTable extends Table,\n\tTConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },\n> = InferModelFromColumns;\n", "import { entityKind, is } from '~/entity.ts';\nimport type { SelectedFields } from '~/operations.ts';\nimport { Subquery, SubqueryConfig } from '~/subquery.ts';\nimport { tracer } from '~/tracing.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { AnyColumn } from '../column.ts';\nimport { Column } from '../column.ts';\nimport { Table } from '../table.ts';\n\n/**\n * This class is used to indicate a primitive param value that is used in `sql` tag.\n * It is only used on type level and is never instantiated at runtime.\n * If you see a value of this type in the code, its runtime value is actually the primitive param value.\n */\nexport class FakePrimitiveParam {\n\tstatic readonly [entityKind]: string = 'FakePrimitiveParam';\n}\n\nexport type Chunk =\n\t| string\n\t| Table\n\t| View\n\t| AnyColumn\n\t| Name\n\t| Param\n\t| Placeholder\n\t| SQL;\n\nexport interface BuildQueryConfig {\n\tescapeName(name: string): string;\n\tescapeParam(num: number, value: unknown): string;\n\tescapeString(str: string): string;\n\tprepareTyping?: (encoder: DriverValueEncoder) => QueryTypingsValue;\n\tparamStartIndex?: { value: number };\n\tinlineParams?: boolean;\n}\n\nexport type QueryTypingsValue = 'json' | 'decimal' | 'time' | 'timestamp' | 'uuid' | 'date' | 'none';\n\nexport interface Query {\n\tsql: string;\n\tparams: unknown[];\n}\n\nexport interface QueryWithTypings extends Query {\n\ttypings?: QueryTypingsValue[];\n}\n\n/**\n * Any value that implements the `getSQL` method. The implementations include:\n * - `Table`\n * - `Column`\n * - `View`\n * - `Subquery`\n * - `SQL`\n * - `SQL.Aliased`\n * - `Placeholder`\n * - `Param`\n */\nexport interface SQLWrapper {\n\tgetSQL(): SQL;\n}\n\nexport function isSQLWrapper(value: unknown): value is SQLWrapper {\n\treturn typeof value === 'object' && value !== null && 'getSQL' in value\n\t\t&& typeof (value as any).getSQL === 'function';\n}\n\nfunction mergeQueries(queries: QueryWithTypings[]): QueryWithTypings {\n\tconst result: QueryWithTypings = { sql: '', params: [] };\n\tfor (const query of queries) {\n\t\tresult.sql += query.sql;\n\t\tresult.params.push(...query.params);\n\t\tif (query.typings?.length) {\n\t\t\tif (!result.typings) {\n\t\t\t\tresult.typings = [];\n\t\t\t}\n\t\t\tresult.typings.push(...query.typings);\n\t\t}\n\t}\n\treturn result;\n}\n\nexport class StringChunk implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'StringChunk';\n\n\treadonly value: string[];\n\n\tconstructor(value: string | string[]) {\n\t\tthis.value = Array.isArray(value) ? value : [value];\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport class SQL implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQL';\n\n\tdeclare _: {\n\t\tbrand: 'SQL';\n\t\ttype: T;\n\t};\n\n\t/** @internal */\n\tdecoder: DriverValueDecoder = noopDecoder;\n\tprivate shouldInlineParams = false;\n\n\tconstructor(readonly queryChunks: SQLChunk[]) {}\n\n\tappend(query: SQL): this {\n\t\tthis.queryChunks.push(...query.queryChunks);\n\t\treturn this;\n\t}\n\n\ttoQuery(config: BuildQueryConfig): QueryWithTypings {\n\t\treturn tracer.startActiveSpan('drizzle.buildSQL', (span) => {\n\t\t\tconst query = this.buildQueryFromSourceParams(this.queryChunks, config);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': query.sql,\n\t\t\t\t'drizzle.query.params': JSON.stringify(query.params),\n\t\t\t});\n\t\t\treturn query;\n\t\t});\n\t}\n\n\tbuildQueryFromSourceParams(chunks: SQLChunk[], _config: BuildQueryConfig): Query {\n\t\tconst config = Object.assign({}, _config, {\n\t\t\tinlineParams: _config.inlineParams || this.shouldInlineParams,\n\t\t\tparamStartIndex: _config.paramStartIndex || { value: 0 },\n\t\t});\n\n\t\tconst {\n\t\t\tescapeName,\n\t\t\tescapeParam,\n\t\t\tprepareTyping,\n\t\t\tinlineParams,\n\t\t\tparamStartIndex,\n\t\t} = config;\n\n\t\treturn mergeQueries(chunks.map((chunk): QueryWithTypings => {\n\t\t\tif (is(chunk, StringChunk)) {\n\t\t\t\treturn { sql: chunk.value.join(''), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Name)) {\n\t\t\t\treturn { sql: escapeName(chunk.value), params: [] };\n\t\t\t}\n\n\t\t\tif (chunk === undefined) {\n\t\t\t\treturn { sql: '', params: [] };\n\t\t\t}\n\n\t\t\tif (Array.isArray(chunk)) {\n\t\t\t\tconst result: SQLChunk[] = [new StringChunk('(')];\n\t\t\t\tfor (const [i, p] of chunk.entries()) {\n\t\t\t\t\tresult.push(p);\n\t\t\t\t\tif (i < chunk.length - 1) {\n\t\t\t\t\t\tresult.push(new StringChunk(', '));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.push(new StringChunk(')'));\n\t\t\t\treturn this.buildQueryFromSourceParams(result, config);\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL)) {\n\t\t\t\treturn this.buildQueryFromSourceParams(chunk.queryChunks, {\n\t\t\t\t\t...config,\n\t\t\t\t\tinlineParams: inlineParams || chunk.shouldInlineParams,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\t\t\t\tconst tableName = chunk[Table.Symbol.Name];\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined\n\t\t\t\t\t\t? escapeName(tableName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(tableName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Column)) {\n\t\t\t\treturn { sql: escapeName(chunk.table[Table.Symbol.Name]) + '.' + escapeName(chunk.name), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, View)) {\n\t\t\t\tconst schemaName = chunk[ViewBaseConfig].schema;\n\t\t\t\tconst viewName = chunk[ViewBaseConfig].name;\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined\n\t\t\t\t\t\t? escapeName(viewName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(viewName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Param)) {\n\t\t\t\tconst mappedValue = (chunk.value === null) ? null : chunk.encoder.mapToDriverValue(chunk.value);\n\n\t\t\t\tif (is(mappedValue, SQL)) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([mappedValue], config);\n\t\t\t\t}\n\n\t\t\t\tif (inlineParams) {\n\t\t\t\t\treturn { sql: this.mapInlineParam(mappedValue, config), params: [] };\n\t\t\t\t}\n\n\t\t\t\tlet typings: QueryTypingsValue[] | undefined;\n\t\t\t\tif (prepareTyping !== undefined) {\n\t\t\t\t\ttypings = [prepareTyping(chunk.encoder)];\n\t\t\t\t}\n\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, mappedValue), params: [mappedValue], typings };\n\t\t\t}\n\n\t\t\tif (is(chunk, Placeholder)) {\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk] };\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL.Aliased) && chunk.fieldAlias !== undefined) {\n\t\t\t\treturn { sql: escapeName(chunk.fieldAlias), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Subquery)) {\n\t\t\t\tif (chunk[SubqueryConfig].isWith) {\n\t\t\t\t\treturn { sql: escapeName(chunk[SubqueryConfig].alias), params: [] };\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk[SubqueryConfig].sql,\n\t\t\t\t\tnew StringChunk(') '),\n\t\t\t\t\tnew Name(chunk[SubqueryConfig].alias),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (isSQLWrapper(chunk)) {\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk.getSQL(),\n\t\t\t\t\tnew StringChunk(')'),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (inlineParams) {\n\t\t\t\treturn { sql: this.mapInlineParam(chunk, config), params: [] };\n\t\t\t}\n\n\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk] };\n\t\t}));\n\t}\n\n\tprivate mapInlineParam(\n\t\tchunk: unknown,\n\t\t{ escapeString }: BuildQueryConfig,\n\t): string {\n\t\tif (chunk === null) {\n\t\t\treturn 'null';\n\t\t}\n\t\tif (typeof chunk === 'number' || typeof chunk === 'boolean') {\n\t\t\treturn chunk.toString();\n\t\t}\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn escapeString(chunk);\n\t\t}\n\t\tif (typeof chunk === 'object') {\n\t\t\tconst mappedValueAsString = chunk.toString();\n\t\t\tif (mappedValueAsString === '[object Object]') {\n\t\t\t\treturn escapeString(JSON.stringify(chunk));\n\t\t\t}\n\t\t\treturn escapeString(mappedValueAsString);\n\t\t}\n\t\tthrow new Error('Unexpected param value: ' + chunk);\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this;\n\t}\n\n\tas(alias: string): SQL.Aliased;\n\t/**\n\t * @deprecated\n\t * Use ``sql`query`.as(alias)`` instead.\n\t */\n\tas(): SQL;\n\t/**\n\t * @deprecated\n\t * Use ``sql`query`.as(alias)`` instead.\n\t */\n\tas(alias: string): SQL.Aliased;\n\tas(alias?: string): SQL | SQL.Aliased {\n\t\t// TODO: remove with deprecated overloads\n\t\tif (alias === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new SQL.Aliased(this, alias);\n\t}\n\n\tmapWith<\n\t\tTDecoder extends\n\t\t\t| DriverValueDecoder\n\t\t\t| DriverValueDecoder['mapFromDriverValue'],\n\t>(decoder: TDecoder): SQL> {\n\t\tthis.decoder = typeof decoder === 'function' ? { mapFromDriverValue: decoder } : decoder;\n\t\treturn this as SQL>;\n\t}\n\n\tinlineParams(): this {\n\t\tthis.shouldInlineParams = true;\n\t\treturn this;\n\t}\n}\n\nexport type GetDecoderResult = T extends Column ? T['_']['data'] : T extends\n\t| DriverValueDecoder\n\t| DriverValueDecoder['mapFromDriverValue'] ? TData\n: never;\n\n/**\n * Any DB name (table, column, index etc.)\n */\nexport class Name implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Name';\n\n\tprotected brand!: 'Name';\n\n\tconstructor(readonly value: string) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/**\n * Any DB name (table, column, index etc.)\n * @deprecated Use `sql.identifier` instead.\n */\nexport function name(value: string): Name {\n\treturn new Name(value);\n}\n\nexport interface DriverValueDecoder {\n\tmapFromDriverValue(value: TDriverParam): TData;\n}\n\nexport interface DriverValueEncoder {\n\tmapToDriverValue(value: TData): TDriverParam | SQL;\n}\n\nexport function isDriverValueEncoder(value: unknown): value is DriverValueEncoder {\n\treturn typeof value === 'object' && value !== null && 'mapToDriverValue' in value\n\t\t&& typeof (value as any).mapToDriverValue === 'function';\n}\n\nexport const noopDecoder: DriverValueDecoder = {\n\tmapFromDriverValue: (value) => value,\n};\n\nexport const noopEncoder: DriverValueEncoder = {\n\tmapToDriverValue: (value) => value,\n};\n\nexport interface DriverValueMapper\n\textends DriverValueDecoder, DriverValueEncoder\n{}\n\nexport const noopMapper: DriverValueMapper = {\n\t...noopDecoder,\n\t...noopEncoder,\n};\n\n/** Parameter value that is optionally bound to an encoder (for example, a column). */\nexport class Param implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Param';\n\n\tprotected brand!: 'BoundParamValue';\n\n\t/**\n\t * @param value - Parameter value\n\t * @param encoder - Encoder to convert the value to a driver parameter\n\t */\n\tconstructor(\n\t\treadonly value: TDataType,\n\t\treadonly encoder: DriverValueEncoder = noopEncoder,\n\t) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.param` instead. */\nexport function param(\n\tvalue: TData,\n\tencoder?: DriverValueEncoder,\n): Param {\n\treturn new Param(value, encoder);\n}\n\n/**\n * Anything that can be passed to the `` sql`...` `` tagged function.\n */\nexport type SQLChunk =\n\t| StringChunk\n\t| SQLChunk[]\n\t| SQLWrapper\n\t| SQL\n\t| Table\n\t| View\n\t| Subquery\n\t| AnyColumn\n\t| Param\n\t| Name\n\t| undefined\n\t| FakePrimitiveParam\n\t| Placeholder;\n\nexport function sql(strings: TemplateStringsArray, ...params: any[]): SQL;\n/*\n\tThe type of `params` is specified as `SQLSourceParam[]`, but that's slightly incorrect -\n\tin runtime, users won't pass `FakePrimitiveParam` instances as `params` - they will pass primitive values\n\twhich will be wrapped in `Param` using `buildChunksFromParam(...)`. That's why the overload\n\tspecify `params` as `any[]` and not as `SQLSourceParam[]`. This type is used to make our lives easier and\n\tthe type checker happy.\n*/\nexport function sql(strings: TemplateStringsArray, ...params: SQLChunk[]): SQL {\n\tconst queryChunks: SQLChunk[] = [];\n\tif (params.length > 0 || (strings.length > 0 && strings[0] !== '')) {\n\t\tqueryChunks.push(new StringChunk(strings[0]!));\n\t}\n\tfor (const [paramIndex, param] of params.entries()) {\n\t\tqueryChunks.push(param, new StringChunk(strings[paramIndex + 1]!));\n\t}\n\n\treturn new SQL(queryChunks);\n}\n\nexport namespace sql {\n\texport function empty(): SQL {\n\t\treturn new SQL([]);\n\t}\n\n\t/** @deprecated - use `sql.join()` */\n\texport function fromList(list: SQLChunk[]): SQL {\n\t\treturn new SQL(list);\n\t}\n\n\t/**\n\t * Convenience function to create an SQL query from a raw string.\n\t * @param str The raw SQL query string.\n\t */\n\texport function raw(str: string): SQL {\n\t\treturn new SQL([new StringChunk(str)]);\n\t}\n\n\t/**\n\t * Join a list of SQL chunks with a separator.\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`]);\n\t * // sql`abc`\n\t * ```\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`], sql`, `);\n\t * // sql`a, b, c`\n\t * ```\n\t */\n\texport function join(chunks: SQLChunk[], separator?: SQLChunk): SQL {\n\t\tconst result: SQLChunk[] = [];\n\t\tfor (const [i, chunk] of chunks.entries()) {\n\t\t\tif (i > 0 && separator !== undefined) {\n\t\t\t\tresult.push(separator);\n\t\t\t}\n\t\t\tresult.push(chunk);\n\t\t}\n\t\treturn new SQL(result);\n\t}\n\n\t/**\n\t * Create a SQL chunk that represents a DB identifier (table, column, index etc.).\n\t * When used in a query, the identifier will be escaped based on the DB engine.\n\t * For example, in PostgreSQL, identifiers are escaped with double quotes.\n\t *\n\t * **WARNING: This function does not offer any protection against SQL injections, so you must validate any user input beforehand.**\n\t *\n\t * @example ```ts\n\t * const query = sql`SELECT * FROM ${sql.identifier('my-table')}`;\n\t * // 'SELECT * FROM \"my-table\"'\n\t * ```\n\t */\n\texport function identifier(value: string): Name {\n\t\treturn new Name(value);\n\t}\n\n\texport function placeholder(name: TName): Placeholder {\n\t\treturn new Placeholder(name);\n\t}\n\n\texport function param(\n\t\tvalue: TData,\n\t\tencoder?: DriverValueEncoder,\n\t): Param {\n\t\treturn new Param(value, encoder);\n\t}\n}\n\nexport namespace SQL {\n\texport class Aliased implements SQLWrapper {\n\t\tstatic readonly [entityKind]: string = 'SQL.Aliased';\n\n\t\tdeclare _: {\n\t\t\tbrand: 'SQL.Aliased';\n\t\t\ttype: T;\n\t\t};\n\n\t\t/** @internal */\n\t\tisSelectionField = false;\n\n\t\tconstructor(\n\t\t\treadonly sql: SQL,\n\t\t\treadonly fieldAlias: string,\n\t\t) {}\n\n\t\tgetSQL(): SQL {\n\t\t\treturn this.sql;\n\t\t}\n\n\t\t/** @internal */\n\t\tclone() {\n\t\t\treturn new Aliased(this.sql, this.fieldAlias);\n\t\t}\n\t}\n}\n\nexport class Placeholder implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Placeholder';\n\n\tdeclare protected: TValue;\n\n\tconstructor(readonly name: TName) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.placeholder` instead. */\nexport function placeholder(name: TName): Placeholder {\n\treturn new Placeholder(name);\n}\n\nexport function fillPlaceholders(params: unknown[], values: Record): unknown[] {\n\treturn params.map((p) => {\n\t\tif (is(p, Placeholder)) {\n\t\t\tif (!(p.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.name}\" was provided`);\n\t\t\t}\n\t\t\treturn values[p.name];\n\t\t}\n\n\t\treturn p;\n\t});\n}\n\nexport type ColumnsSelection = Record;\n\nexport abstract class View<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'View';\n\n\tdeclare _: {\n\t\tbrand: 'View';\n\t\tviewBrand: string;\n\t\tname: TName;\n\t\texisting: TExisting;\n\t\tselectedFields: TSelection;\n\t};\n\n\t/** @internal */\n\t[ViewBaseConfig]: {\n\t\tname: TName;\n\t\toriginalName: TName;\n\t\tschema: string | undefined;\n\t\tselectedFields: SelectedFields;\n\t\tisExisting: TExisting;\n\t\tquery: TExisting extends true ? undefined : SQL;\n\t\tisAlias: boolean;\n\t};\n\n\tconstructor(\n\t\t{ name, schema, selectedFields, query }: {\n\t\t\tname: TName;\n\t\t\tschema: string | undefined;\n\t\t\tselectedFields: SelectedFields;\n\t\t\tquery: SQL | undefined;\n\t\t},\n\t) {\n\t\tthis[ViewBaseConfig] = {\n\t\t\tname,\n\t\t\toriginalName: name,\n\t\t\tschema,\n\t\t\tselectedFields,\n\t\t\tquery: query as (TExisting extends true ? undefined : SQL),\n\t\t\tisExisting: !query as TExisting,\n\t\t\tisAlias: false,\n\t\t};\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Table class to resolve circular dependency\nTable.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Column class to resolve circular dependency\nSubquery.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n", "import type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport type { Relation } from './relations.ts';\nimport type { View } from './sql/sql.ts';\nimport { SQL, sql } from './sql/sql.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnAliasProxyHandler implements ProxyHandler {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private table: Table | View) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class TableAliasProxyHandler implements ProxyHandler {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnAliasProxyHandler(new Proxy(target, this)),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(value as AnyColumn, new ColumnAliasProxyHandler(new Proxy(target, this)));\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class RelationTableAliasProxyHandler implements ProxyHandler {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false));\n}\n\nexport function aliasedRelation(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnAliasProxyHandler(new Proxy(column.table, new TableAliasProxyHandler(tableAlias, false))),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { Column } from './column.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { PgColumn } from './pg-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Simplify } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'string'\n\t| 'number'\n\t| 'boolean'\n\t| 'array'\n\t| 'json'\n\t| 'date'\n\t| 'bigint'\n\t| 'custom'\n\t| 'buffer';\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'common';\n\nexport interface ColumnBuilderBaseConfig {\n\tname: string;\n\tdataType: TDataType;\n\tcolumnType: TColumnType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig,\n\tTTableName extends string,\n> = {\n\tname: T['name'];\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: T extends { $type: infer U } ? U : T['data'];\n\tdriverParam: T['driverParam'];\n\tnotNull: T extends { notNull: true } ? true : false;\n\thasDefault: T extends { hasDefault: true } ? true : false;\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn\n\t\t: never;\n} & {};\n\nexport type ColumnBuilderTypeConfig<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends ColumnBuilderBaseConfig,\n\tTTypeConfig extends object = object,\n> = Simplify<\n\t& {\n\t\tbrand: 'ColumnBuilder';\n\t\tname: T['name'];\n\t\tdataType: T['dataType'];\n\t\tcolumnType: T['columnType'];\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverParam'];\n\t\tnotNull: T extends { notNull: infer U } ? U : boolean;\n\t\thasDefault: T extends { hasDefault: infer U } ? U : boolean;\n\t\tenumValues: T['enumValues'];\n\t}\n\t& TTypeConfig\n>;\n\nexport type ColumnBuilderRuntimeConfig = {\n\tname: string;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n} & TRuntimeConfig;\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type $Type = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTTypeConfig extends object = object,\n> {\n\t_: ColumnBuilderTypeConfig;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: ColumnBuilderTypeConfig;\n\n\tprotected config: ColumnBuilderRuntimeConfig;\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t} as ColumnBuilderRuntimeConfig;\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type().primaryKey(),\n\t * \tdetails: json('details').$type().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type(): $Type {\n\t\treturn this as $Type;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull;\n\t}\n\n\t/**\n\t * Adds a `default ` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? HasDefault> : NotNull {\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? HasDefault> : NotNull;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn>\n\t: TDialect extends 'mysql' ? MySqlColumn>\n\t: TDialect extends 'sqlite' ? SQLiteColumn>\n\t: TDialect extends 'common' ? Column>\n\t: never;\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName =\n\tTDialect extends 'pg' ? PgColumn>\n\t\t: TDialect extends 'mysql' ? MySqlColumn>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn>\n\t\t: never;\n", "import { entityKind } from '~/entity.ts';\n\nexport class DrizzleError extends Error {\n\tstatic readonly [entityKind]: string = 'DrizzleError';\n\n\tconstructor({ message, cause }: { message?: string; cause?: unknown }) {\n\t\tsuper(message);\n\t\tthis.name = 'DrizzleError';\n\t\tthis.cause = cause;\n\t}\n}\n\nexport class TransactionRollbackError extends DrizzleError {\n\tstatic readonly [entityKind]: string = 'TransactionRollbackError';\n\n\tconstructor() {\n\t\tsuper({ message: 'Rollback' });\n\t}\n}\n", "import { type AnyColumn, Column, type GetColumnData } from '~/column.ts';\nimport { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport {\n\tisDriverValueEncoder,\n\tisSQLWrapper,\n\tParam,\n\tPlaceholder,\n\tSQL,\n\tsql,\n\ttype SQLChunk,\n\ttype SQLWrapper,\n\tStringChunk,\n\tView,\n} from '../sql.ts';\n\nexport function bindIfParam(value: unknown, column: SQLWrapper): SQLChunk {\n\tif (\n\t\tisDriverValueEncoder(column)\n\t\t&& !isSQLWrapper(value)\n\t\t&& !is(value, Param)\n\t\t&& !is(value, Placeholder)\n\t\t&& !is(value, Column)\n\t\t&& !is(value, Table)\n\t\t&& !is(value, View)\n\t) {\n\t\treturn new Param(value, column);\n\t}\n\treturn value as SQLChunk;\n}\n\nexport interface BinaryOperator {\n\t(\n\t\tleft: TColumn,\n\t\tright: GetColumnData | SQLWrapper,\n\t): SQL;\n\t(left: SQL.Aliased, right: T | SQLWrapper): SQL;\n\t(\n\t\tleft: Exclude,\n\t\tright: unknown,\n\t): SQL;\n}\n\n/**\n * Test that two values are equal.\n *\n * Remember that the SQL standard dictates that\n * two NULL values are not equal, so if you want to test\n * whether a value is null, you may want to use\n * `isNull` instead.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by Ford\n * db.select().from(cars)\n * .where(eq(cars.make, 'Ford'))\n * ```\n *\n * @see isNull for a way to test equality to NULL.\n */\nexport const eq: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} = ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that two values are not equal.\n *\n * Remember that the SQL standard dictates that\n * two NULL values are not equal, so if you want to test\n * whether a value is not null, you may want to use\n * `isNotNull` instead.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars not made by Ford\n * db.select().from(cars)\n * .where(ne(cars.make, 'Ford'))\n * ```\n *\n * @see isNotNull for a way to test whether a value is not null.\n */\nexport const ne: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} <> ${bindIfParam(right, left)}`;\n};\n\n/**\n * Combine a list of conditions with the `and` operator. Conditions\n * that are equal `undefined` are automatically ignored.\n *\n * ## Examples\n *\n * ```ts\n * db.select().from(cars)\n * .where(\n * and(\n * eq(cars.make, 'Volvo'),\n * eq(cars.year, 1950),\n * )\n * )\n * ```\n */\nexport function and(...conditions: (SQLWrapper | undefined)[]): SQL | undefined;\nexport function and(\n\t...unfilteredConditions: (SQLWrapper | undefined)[]\n): SQL | undefined {\n\tconst conditions = unfilteredConditions.filter(\n\t\t(c): c is Exclude => c !== undefined,\n\t);\n\n\tif (conditions.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (conditions.length === 1) {\n\t\treturn new SQL(conditions);\n\t}\n\n\treturn new SQL([\n\t\tnew StringChunk('('),\n\t\tsql.join(conditions, new StringChunk(' and ')),\n\t\tnew StringChunk(')'),\n\t]);\n}\n\n/**\n * Combine a list of conditions with the `or` operator. Conditions\n * that are equal `undefined` are automatically ignored.\n *\n * ## Examples\n *\n * ```ts\n * db.select().from(cars)\n * .where(\n * or(\n * eq(cars.make, 'GM'),\n * eq(cars.make, 'Ford'),\n * )\n * )\n * ```\n */\nexport function or(...conditions: (SQLWrapper | undefined)[]): SQL | undefined;\nexport function or(\n\t...unfilteredConditions: (SQLWrapper | undefined)[]\n): SQL | undefined {\n\tconst conditions = unfilteredConditions.filter(\n\t\t(c): c is Exclude => c !== undefined,\n\t);\n\n\tif (conditions.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (conditions.length === 1) {\n\t\treturn new SQL(conditions);\n\t}\n\n\treturn new SQL([\n\t\tnew StringChunk('('),\n\t\tsql.join(conditions, new StringChunk(' or ')),\n\t\tnew StringChunk(')'),\n\t]);\n}\n\n/**\n * Negate the meaning of an expression using the `not` keyword.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars _not_ made by GM or Ford.\n * db.select().from(cars)\n * .where(not(inArray(cars.make, ['GM', 'Ford'])))\n * ```\n */\nexport function not(condition: SQLWrapper): SQL {\n\treturn sql`not ${condition}`;\n}\n\n/**\n * Test that the first expression passed is greater than\n * the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made after 2000.\n * db.select().from(cars)\n * .where(gt(cars.year, 2000))\n * ```\n *\n * @see gte for greater-than-or-equal\n */\nexport const gt: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} > ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is greater than\n * or equal to the second expression. Use `gt` to\n * test whether an expression is strictly greater\n * than another.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made on or after 2000.\n * db.select().from(cars)\n * .where(gte(cars.year, 2000))\n * ```\n *\n * @see gt for a strictly greater-than condition\n */\nexport const gte: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} >= ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is less than\n * the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made before 2000.\n * db.select().from(cars)\n * .where(lt(cars.year, 2000))\n * ```\n *\n * @see lte for greater-than-or-equal\n */\nexport const lt: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} < ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is less than\n * or equal to the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made before 2000.\n * db.select().from(cars)\n * .where(lte(cars.year, 2000))\n * ```\n *\n * @see lt for a strictly less-than condition\n */\nexport const lte: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} <= ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test whether the first parameter, a column or expression,\n * has a value from a list passed as the second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by Ford or GM.\n * db.select().from(cars)\n * .where(inArray(cars.make, ['Ford', 'GM']))\n * ```\n *\n * @see notInArray for the inverse of this test\n */\nexport function inArray(\n\tcolumn: SQL.Aliased,\n\tvalues: (T | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function inArray(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function inArray(\n\tcolumn: Exclude,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function inArray(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('inArray requires at least one value');\n\t\t}\n\t\treturn sql`${column} in ${values.map((v) => bindIfParam(v, column))}`;\n\t}\n\n\treturn sql`${column} in ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test whether the first parameter, a column or expression,\n * has a value that is not present in a list passed as the\n * second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by any company except Ford or GM.\n * db.select().from(cars)\n * .where(notInArray(cars.make, ['Ford', 'GM']))\n * ```\n *\n * @see inArray for the inverse of this test\n */\nexport function notInArray(\n\tcolumn: SQL.Aliased,\n\tvalues: (T | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray(\n\tcolumn: Exclude,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('notInArray requires at least one value');\n\t\t}\n\t\treturn sql`${column} not in ${values.map((v) => bindIfParam(v, column))}`;\n\t}\n\n\treturn sql`${column} not in ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test whether an expression is NULL. By the SQL standard,\n * NULL is neither equal nor not equal to itself, so\n * it's recommended to use `isNull` and `notIsNull` for\n * comparisons to NULL.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars that have no discontinuedAt date.\n * db.select().from(cars)\n * .where(isNull(cars.discontinuedAt))\n * ```\n *\n * @see isNotNull for the inverse of this test\n */\nexport function isNull(value: SQLWrapper): SQL {\n\treturn sql`${value} is null`;\n}\n\n/**\n * Test whether an expression is not NULL. By the SQL standard,\n * NULL is neither equal nor not equal to itself, so\n * it's recommended to use `isNull` and `notIsNull` for\n * comparisons to NULL.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars that have been discontinued.\n * db.select().from(cars)\n * .where(isNotNull(cars.discontinuedAt))\n * ```\n *\n * @see isNull for the inverse of this test\n */\nexport function isNotNull(value: SQLWrapper): SQL {\n\treturn sql`${value} is not null`;\n}\n\n/**\n * Test whether a subquery evaluates to have any rows.\n *\n * ## Examples\n *\n * ```ts\n * // Users whose `homeCity` column has a match in a cities\n * // table.\n * db\n * .select()\n * .from(users)\n * .where(\n * exists(db.select()\n * .from(cities)\n * .where(eq(users.homeCity, cities.id))),\n * );\n * ```\n *\n * @see notExists for the inverse of this test\n */\nexport function exists(subquery: SQLWrapper): SQL {\n\treturn sql`exists ${subquery}`;\n}\n\n/**\n * Test whether a subquery doesn't include any result\n * rows.\n *\n * ## Examples\n *\n * ```ts\n * // Users whose `homeCity` column doesn't match\n * // a row in the cities table.\n * db\n * .select()\n * .from(users)\n * .where(\n * notExists(db.select()\n * .from(cities)\n * .where(eq(users.homeCity, cities.id))),\n * );\n * ```\n *\n * @see exists for the inverse of this test\n */\nexport function notExists(subquery: SQLWrapper): SQL {\n\treturn sql`not exists ${subquery}`;\n}\n\n/**\n * Test whether an expression is between two values. This\n * is an easier way to express range tests, which would be\n * expressed mathematically as `x <= a <= y` but in SQL\n * would have to be like `a >= x AND a <= y`.\n *\n * Between is inclusive of the endpoints: if `column`\n * is equal to `min` or `max`, it will be TRUE.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made between 1990 and 2000\n * db.select().from(cars)\n * .where(between(cars.year, 1990, 2000))\n * ```\n *\n * @see notBetween for the inverse of this test\n */\nexport function between(\n\tcolumn: SQL.Aliased,\n\tmin: T | SQLWrapper,\n\tmax: T | SQLWrapper,\n): SQL;\nexport function between(\n\tcolumn: TColumn,\n\tmin: GetColumnData | SQLWrapper,\n\tmax: GetColumnData | SQLWrapper,\n): SQL;\nexport function between(\n\tcolumn: Exclude,\n\tmin: unknown,\n\tmax: unknown,\n): SQL;\nexport function between(column: SQLWrapper, min: unknown, max: unknown): SQL {\n\treturn sql`${column} between ${bindIfParam(min, column)} and ${\n\t\tbindIfParam(\n\t\t\tmax,\n\t\t\tcolumn,\n\t\t)\n\t}`;\n}\n\n/**\n * Test whether an expression is not between two values.\n *\n * This, like `between`, includes its endpoints, so if\n * the `column` is equal to `min` or `max`, in this case\n * it will evaluate to FALSE.\n *\n * ## Examples\n *\n * ```ts\n * // Exclude cars made in the 1970s\n * db.select().from(cars)\n * .where(notBetween(cars.year, 1970, 1979))\n * ```\n *\n * @see between for the inverse of this test\n */\nexport function notBetween(\n\tcolumn: SQL.Aliased,\n\tmin: T | SQLWrapper,\n\tmax: T | SQLWrapper,\n): SQL;\nexport function notBetween(\n\tcolumn: TColumn,\n\tmin: GetColumnData | SQLWrapper,\n\tmax: GetColumnData | SQLWrapper,\n): SQL;\nexport function notBetween(\n\tcolumn: Exclude,\n\tmin: unknown,\n\tmax: unknown,\n): SQL;\nexport function notBetween(\n\tcolumn: SQLWrapper,\n\tmin: unknown,\n\tmax: unknown,\n): SQL {\n\treturn sql`${column} not between ${\n\t\tbindIfParam(\n\t\t\tmin,\n\t\t\tcolumn,\n\t\t)\n\t} and ${bindIfParam(max, column)}`;\n}\n\n/**\n * Compare a column to a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars with 'Turbo' in their names.\n * db.select().from(cars)\n * .where(like(cars.name, '%Turbo%'))\n * ```\n *\n * @see ilike for a case-insensitive version of this condition\n */\nexport function like(column: Column, value: string | SQLWrapper): SQL {\n\treturn sql`${column} like ${value}`;\n}\n\n/**\n * The inverse of like - this tests that a given column\n * does not match a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars that don't have \"ROver\" in their name.\n * db.select().from(cars)\n * .where(notLike(cars.name, '%Rover%'))\n * ```\n *\n * @see like for the inverse condition\n * @see notIlike for a case-insensitive version of this condition\n */\nexport function notLike(column: Column, value: string | SQLWrapper): SQL {\n\treturn sql`${column} not like ${value}`;\n}\n\n/**\n * Case-insensitively compare a column to a pattern,\n * which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * Unlike like, this performs a case-insensitive comparison.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars with 'Turbo' in their names.\n * db.select().from(cars)\n * .where(ilike(cars.name, '%Turbo%'))\n * ```\n *\n * @see like for a case-sensitive version of this condition\n */\nexport function ilike(column: Column, value: string | SQLWrapper): SQL {\n\treturn sql`${column} ilike ${value}`;\n}\n\n/**\n * The inverse of ilike - this case-insensitively tests that a given column\n * does not match a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars that don't have \"Rover\" in their name.\n * db.select().from(cars)\n * .where(notLike(cars.name, '%Rover%'))\n * ```\n *\n * @see ilike for the inverse condition\n * @see notLike for a case-sensitive version of this condition\n */\nexport function notIlike(column: Column, value: string | SQLWrapper): SQL {\n\treturn sql`${column} not ilike ${value}`;\n}\n\n/**\n * Test that a column or expression contains all elements of\n * the list passed as the second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\" and \"ORM\".\n * db.select().from(posts)\n * .where(arrayContains(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContained to find if an array contains all elements of a column or expression\n * @see arrayOverlaps to find if a column or expression contains any elements of an array\n */\nexport function arrayContains(\n\tcolumn: SQL.Aliased,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContains(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContains(\n\tcolumn: Exclude,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayContains(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayContains requires at least one value');\n\t\t}\n\t\tconst array = sql`${bindIfParam(values, column)}`;\n\t\treturn sql`${column} @> ${array}`;\n\t}\n\n\treturn sql`${column} @> ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test that the list passed as the second argument contains\n * all elements of a column or expression.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\", \"ORM\" or both,\n * // but filtering posts that have additional tags.\n * db.select().from(posts)\n * .where(arrayContained(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContains to find if a column or expression contains all elements of an array\n * @see arrayOverlaps to find if a column or expression contains any elements of an array\n */\nexport function arrayContained(\n\tcolumn: SQL.Aliased,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContained(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContained(\n\tcolumn: Exclude,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayContained(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayContained requires at least one value');\n\t\t}\n\t\tconst array = sql`${bindIfParam(values, column)}`;\n\t\treturn sql`${column} <@ ${array}`;\n\t}\n\n\treturn sql`${column} <@ ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test that a column or expression contains any elements of\n * the list passed as the second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\", \"ORM\" or both.\n * db.select().from(posts)\n * .where(arrayOverlaps(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContains to find if a column or expression contains all elements of an array\n * @see arrayContained to find if an array contains all elements of a column or expression\n */\nexport function arrayOverlaps(\n\tcolumn: SQL.Aliased,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayOverlaps(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayOverlaps(\n\tcolumn: Exclude,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayOverlaps(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayOverlaps requires at least one value');\n\t\t}\n\t\tconst array = sql`${bindIfParam(values, column)}`;\n\t\treturn sql`${column} && ${array}`;\n\t}\n\n\treturn sql`${column} && ${bindIfParam(values, column)}`;\n}\n", "import type { AnyColumn } from '../../column.ts';\nimport type { SQL, SQLWrapper } from '../sql.ts';\nimport { sql } from '../sql.ts';\n\n/**\n * Used in sorting, this specifies that the given\n * column or expression should be sorted in ascending\n * order. By the SQL standard, ascending order is the\n * default, so it is not usually necessary to specify\n * ascending sort order.\n *\n * ## Examples\n *\n * ```ts\n * // Return cars, starting with the oldest models\n * // and going in ascending order to the newest.\n * db.select().from(cars)\n * .orderBy(asc(cars.year));\n * ```\n *\n * @see desc to sort in descending order\n */\nexport function asc(column: AnyColumn | SQLWrapper): SQL {\n\treturn sql`${column} asc`;\n}\n\n/**\n * Used in sorting, this specifies that the given\n * column or expression should be sorted in descending\n * order.\n *\n * ## Examples\n *\n * ```ts\n * // Select users, with the most recently created\n * // records coming first.\n * db.select().from(users)\n * .orderBy(desc(users.createdAt));\n * ```\n *\n * @see asc to sort in ascending order\n */\nexport function desc(column: AnyColumn | SQLWrapper): SQL {\n\treturn sql`${column} desc`;\n}\n", "import { entityKind } from '~/entity.ts';\n\nexport interface Logger {\n\tlogQuery(query: string, params: unknown[]): void;\n}\n\nexport interface LogWriter {\n\twrite(message: string): void;\n}\n\nexport class ConsoleLogWriter implements LogWriter {\n\tstatic readonly [entityKind]: string = 'ConsoleLogWriter';\n\n\twrite(message: string) {\n\t\tconsole.log(message);\n\t}\n}\n\nexport class DefaultLogger implements Logger {\n\tstatic readonly [entityKind]: string = 'DefaultLogger';\n\n\treadonly writer: LogWriter;\n\n\tconstructor(config?: { writer: LogWriter }) {\n\t\tthis.writer = config?.writer ?? new ConsoleLogWriter();\n\t}\n\n\tlogQuery(query: string, params: unknown[]): void {\n\t\tconst stringifiedParams = params.map((p) => {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(p);\n\t\t\t} catch {\n\t\t\t\treturn String(p);\n\t\t\t}\n\t\t});\n\t\tconst paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(', ')}]` : '';\n\t\tthis.writer.write(`Query: ${query}${paramsStr}`);\n\t}\n}\n\nexport class NoopLogger implements Logger {\n\tstatic readonly [entityKind]: string = 'NoopLogger';\n\n\tlogQuery(): void {\n\t\t// noop\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\n\nexport abstract class QueryPromise implements Promise {\n\tstatic readonly [entityKind]: string = 'QueryPromise';\n\n\t[Symbol.toStringTag] = 'QueryPromise';\n\n\tcatch(\n\t\tonRejected?: ((reason: any) => TResult | PromiseLike) | null | undefined,\n\t): Promise {\n\t\treturn this.then(undefined, onRejected);\n\t}\n\n\tfinally(onFinally?: (() => void) | null | undefined): Promise {\n\t\treturn this.then(\n\t\t\t(value) => {\n\t\t\t\tonFinally?.();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\t(reason) => {\n\t\t\t\tonFinally?.();\n\t\t\t\tthrow reason;\n\t\t\t},\n\t\t);\n\t}\n\n\tthen(\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null,\n\t\tonRejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null,\n\t): Promise {\n\t\treturn this.execute().then(onFulfilled, onRejected);\n\t}\n\n\tabstract execute(): Promise;\n}\n", "import type { BuildColumns } from '~/column-builder.ts';\nimport { entityKind } from '~/entity.ts';\nimport { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from '~/table.ts';\nimport type { CheckBuilder } from './checks.ts';\nimport type { PgColumn, PgColumnBuilder, PgColumnBuilderBase } from './columns/common.ts';\nimport type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { AnyIndexBuilder } from './indexes.ts';\nimport type { PrimaryKeyBuilder } from './primary-keys.ts';\nimport type { UniqueConstraintBuilder } from './unique-constraint.ts';\n\nexport type PgTableExtraConfig = Record<\n\tstring,\n\t| AnyIndexBuilder\n\t| CheckBuilder\n\t| ForeignKeyBuilder\n\t| PrimaryKeyBuilder\n\t| UniqueConstraintBuilder\n>;\n\nexport type TableConfig = TableConfigBase;\n\n/** @internal */\nexport const InlineForeignKeys = Symbol.for('drizzle:PgInlineForeignKeys');\n\nexport class PgTable extends Table {\n\tstatic readonly [entityKind]: string = 'PgTable';\n\n\t/** @internal */\n\tstatic override readonly Symbol = Object.assign({}, Table.Symbol, {\n\t\tInlineForeignKeys: InlineForeignKeys as typeof InlineForeignKeys,\n\t});\n\n\t/**@internal */\n\t[InlineForeignKeys]: ForeignKey[] = [];\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigBuilder]: ((self: Record) => PgTableExtraConfig) | undefined =\n\t\tundefined;\n}\n\nexport type AnyPgTable = {}> = PgTable>;\n\nexport type PgTableWithColumns =\n\t& PgTable\n\t& {\n\t\t[Key in keyof T['columns']]: T['columns'][Key];\n\t};\n\n/** @internal */\nexport function pgTableWithSchema<\n\tTTableName extends string,\n\tTSchemaName extends string | undefined,\n\tTColumnsMap extends Record,\n>(\n\tname: TTableName,\n\tcolumns: TColumnsMap,\n\textraConfig: ((self: BuildColumns) => PgTableExtraConfig) | undefined,\n\tschema: TSchemaName,\n\tbaseName = name,\n): PgTableWithColumns<{\n\tname: TTableName;\n\tschema: TSchemaName;\n\tcolumns: BuildColumns;\n\tdialect: 'pg';\n}> {\n\tconst rawTable = new PgTable<{\n\t\tname: TTableName;\n\t\tschema: TSchemaName;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'pg';\n\t}>(name, schema, baseName);\n\n\tconst builtColumns = Object.fromEntries(\n\t\tObject.entries(columns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as PgColumnBuilder;\n\t\t\tconst column = colBuilder.build(rawTable);\n\t\t\trawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildColumns;\n\n\tconst table = Object.assign(rawTable, builtColumns);\n\n\ttable[Table.Symbol.Columns] = builtColumns;\n\n\tif (extraConfig) {\n\t\ttable[PgTable.Symbol.ExtraConfigBuilder] = extraConfig as any;\n\t}\n\n\treturn table;\n}\n\nexport interface PgTableFn {\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (self: BuildColumns) => PgTableExtraConfig,\n\t): PgTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'pg';\n\t}>;\n}\n\nexport const pgTable: PgTableFn = (name, columns, extraConfig) => {\n\treturn pgTableWithSchema(name, columns, extraConfig, undefined);\n};\n\nexport function pgTableCreator(customizeTableName: (name: string) => string): PgTableFn {\n\treturn (name, columns, extraConfig) => {\n\t\treturn pgTableWithSchema(customizeTableName(name) as typeof name, columns, extraConfig, undefined, name);\n\t};\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { AnyPgColumn, PgColumn } from './columns/index.ts';\nimport { PgTable } from './table.ts';\n\nexport function primaryKey<\n\tTTableName extends string,\n\tTColumn extends AnyPgColumn<{ tableName: TTableName }>,\n\tTColumns extends AnyPgColumn<{ tableName: TTableName }>[],\n>(config: { name?: string; columns: [TColumn, ...TColumns] }): PrimaryKeyBuilder;\n/**\n * @deprecated: Please use primaryKey({ columns: [] }) instead of this function\n * @param columns\n */\nexport function primaryKey<\n\tTTableName extends string,\n\tTColumns extends AnyPgColumn<{ tableName: TTableName }>[],\n>(...columns: TColumns): PrimaryKeyBuilder;\nexport function primaryKey(...config: any) {\n\tif (config[0].columns) {\n\t\treturn new PrimaryKeyBuilder(config[0].columns, config[0].name);\n\t}\n\treturn new PrimaryKeyBuilder(config);\n}\n\nexport class PrimaryKeyBuilder {\n\tstatic readonly [entityKind]: string = 'PgPrimaryKeyBuilder';\n\n\t/** @internal */\n\tcolumns: PgColumn[];\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tcolumns: PgColumn[],\n\t\tname?: string,\n\t) {\n\t\tthis.columns = columns;\n\t\tthis.name = name;\n\t}\n\n\t/** @internal */\n\tbuild(table: PgTable): PrimaryKey {\n\t\treturn new PrimaryKey(table, this.columns, this.name);\n\t}\n}\n\nexport class PrimaryKey {\n\tstatic readonly [entityKind]: string = 'PgPrimaryKey';\n\n\treadonly columns: AnyPgColumn<{}>[];\n\treadonly name?: string;\n\n\tconstructor(readonly table: PgTable, columns: AnyPgColumn<{}>[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.name = name;\n\t}\n\n\tgetName(): string {\n\t\treturn this.name ?? `${this.table[PgTable.Symbol.Name]}_${this.columns.map((column) => column.name).join('_')}_pk`;\n\t}\n}\n", "import { type AnyTable, type InferModelFromColumns, isTable, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record = Record,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation {\n\tstatic readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many extends Relation {\n\tstatic readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?: {\n\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t};\n\t\twith?: {\n\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t| true\n\t\t\t\t| DBQueryConfig<\n\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\tfalse,\n\t\t\t\t\tTSchema,\n\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t>\n\t\t\t\t>;\n\t\t};\n\t\textras?:\n\t\t\t| Record\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record);\n\t}\n\t& (TRelationType extends 'many' ? \n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray);\n\t\t\t\tlimit?: number | Placeholder;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record;\n\trelations: Record;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record;\n\tschema: TSchema;\n\ttableNamesMap: Record;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName,\n\t\t\tAssume>\n\t\t> extends infer TResult ? TRel extends One ? \n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record,\n> = Equal extends true ? InferModelFromColumns\n\t: TFullSelection extends Record ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record\n\t\t\t\t| ((...args: any[]) => Record) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (isTable(value)) {\n\t\t\tconst dbName = value[Table.Symbol.Name];\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.(value);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName: string = value.table[Table.Symbol.Name];\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\tlet primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\tif (primaryKey) {\n\t\t\t\t\t\ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\tprimaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers) => TRelations,\n): Relations {\n\treturn new Relations(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[relation.referencedTable[Table.Symbol.Name]];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[sourceTable[Table.Symbol.Name]];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers = ReturnType<\n\ttypeof createTableRelationsHelpers\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record {\n\tconst result: Record = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n", "import { is } from '~/entity.ts';\nimport { type SQL, sql, type SQLWrapper } from '../sql.ts';\nimport { type AnyColumn, Column } from '~/column.ts';\n\n/**\n * Returns the number of values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Number employees with null values\n * db.select({ value: count() }).from(employees)\n * // Number of employees where `name` is not null\n * db.select({ value: count(employees.name) }).from(employees)\n * ```\n * \n * @see countDistinct to get the number of non-duplicate values in `expression`\n */\nexport function count(expression?: SQLWrapper): SQL {\n return sql`count(${expression || sql.raw('*')})`.mapWith(Number);\n}\n\n/**\n * Returns the number of non-duplicate values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Number of employees where `name` is distinct\n * db.select({ value: countDistinct(employees.name) }).from(employees)\n * ```\n * \n * @see count to get the number of values in `expression`, including duplicates\n */\nexport function countDistinct(expression: SQLWrapper): SQL {\n return sql`count(distinct ${expression})`.mapWith(Number);\n}\n\n/**\n * Returns the average (arithmetic mean) of all non-null values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Average salary of an employee\n * db.select({ value: avg(employees.salary) }).from(employees)\n * ```\n * \n * @see avgDistinct to get the average of all non-null and non-duplicate values in `expression`\n */\nexport function avg(expression: SQLWrapper): SQL {\n return sql`avg(${expression})`.mapWith(String);\n}\n\n/**\n * Returns the average (arithmetic mean) of all non-null and non-duplicate values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Average salary of an employee where `salary` is distinct\n * db.select({ value: avgDistinct(employees.salary) }).from(employees)\n * ```\n * \n * @see avg to get the average of all non-null values in `expression`, including duplicates\n */\nexport function avgDistinct(expression: SQLWrapper): SQL {\n return sql`avg(distinct ${expression})`.mapWith(String);\n}\n\n/**\n * Returns the sum of all non-null values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Sum of every employee's salary\n * db.select({ value: sum(employees.salary) }).from(employees)\n * ```\n * \n * @see sumDistinct to get the sum of all non-null and non-duplicate values in `expression`\n */\nexport function sum(expression: SQLWrapper): SQL {\n return sql`sum(${expression})`.mapWith(String);\n}\n\n/**\n * Returns the sum of all non-null and non-duplicate values in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // Sum of every employee's salary where `salary` is distinct (no duplicates)\n * db.select({ value: sumDistinct(employees.salary) }).from(employees)\n * ```\n * \n * @see sum to get the sum of all non-null values in `expression`, including duplicates\n */\nexport function sumDistinct(expression: SQLWrapper): SQL {\n return sql`sum(distinct ${expression})`.mapWith(String);\n}\n\n/**\n * Returns the maximum value in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // The employee with the highest salary\n * db.select({ value: max(employees.salary) }).from(employees)\n * ```\n */\nexport function max(expression: T): SQL<(T extends AnyColumn ? T['_']['data'] : string) | null> {\n return sql`max(${expression})`.mapWith(is(expression, Column) ? expression : String) as any;\n}\n\n/**\n * Returns the minimum value in `expression`.\n *\n * ## Examples\n *\n * ```ts\n * // The employee with the lowest salary\n * db.select({ value: min(employees.salary) }).from(employees)\n * ```\n */\nexport function min(expression: T): SQL<(T extends AnyColumn ? T['_']['data'] : string) | null> {\n return sql`min(${expression})`.mapWith(is(expression, Column) ? expression : String) as any;\n}\n", "import type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { is } from './entity.ts';\nimport type { Logger } from './logger.ts';\nimport type { SelectedFieldsOrdered } from './operations.ts';\nimport type { TableLike } from './query-builders/select.types.ts';\nimport { Param, SQL, View } from './sql/sql.ts';\nimport type { DriverValueDecoder } from './sql/sql.ts';\nimport { Subquery, SubqueryConfig } from './subquery.ts';\nimport { getTableName, Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\n/** @internal */\nexport function mapResultRow(\n\tcolumns: SelectedFieldsOrdered,\n\trow: unknown[],\n\tjoinsNotNullableMap: Record | undefined,\n): TResult {\n\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\tconst nullifyMap: Record = {};\n\n\tconst result = columns.reduce>(\n\t\t(result, { path, field }, columnIndex) => {\n\t\t\tlet decoder: DriverValueDecoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tlet node = result;\n\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t}\n\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t} else {\n\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\tconst value = node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue);\n\n\t\t\t\t\tif (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n\t\t\t\t\t\tconst objectName = path[0]!;\n\t\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t{},\n\t);\n\n\t// Nullify all nested objects from nullifyMap that are nullable\n\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\tresult[objectName] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result as TResult;\n}\n\n/** @internal */\nexport function orderSelectedFields(\n\tfields: Record,\n\tpathPrefix?: string[],\n): SelectedFieldsOrdered {\n\treturn Object.entries(fields).reduce>((result, [name, field]) => {\n\t\tif (typeof name !== 'string') {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst newPath = pathPrefix ? [...pathPrefix, name] : [name];\n\t\tif (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased)) {\n\t\t\tresult.push({ path: newPath, field });\n\t\t} else if (is(field, Table)) {\n\t\t\tresult.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath));\n\t\t} else {\n\t\t\tresult.push(...orderSelectedFields(field as Record, newPath));\n\t\t}\n\t\treturn result;\n\t}, []) as SelectedFieldsOrdered;\n}\n\nexport function haveSameKeys(left: Record, right: Record) {\n\tconst leftKeys = Object.keys(left);\n\tconst rightKeys = Object.keys(right);\n\n\tif (leftKeys.length !== rightKeys.length) {\n\t\treturn false;\n\t}\n\n\tfor (const [index, key] of leftKeys.entries()) {\n\t\tif (key !== rightKeys[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/** @internal */\nexport function mapUpdateSet(table: Table, values: Record): UpdateSet {\n\tconst entries: [string, UpdateSet[string]][] = Object.entries(values)\n\t\t.filter(([, value]) => value !== undefined)\n\t\t.map(([key, value]) => {\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (is(value, SQL)) {\n\t\t\t\treturn [key, value];\n\t\t\t} else {\n\t\t\t\treturn [key, new Param(value, table[Table.Symbol.Columns][key])];\n\t\t\t}\n\t\t});\n\n\tif (entries.length === 0) {\n\t\tthrow new Error('No values to set');\n\t}\n\n\treturn Object.fromEntries(entries);\n}\n\nexport type UpdateSet = Record;\n\nexport type OneOrMany = T | T[];\n\nexport type Update = Simplify<\n\t& {\n\t\t[K in Exclude]: T[K];\n\t}\n\t& TUpdate\n>;\n\nexport type Simplify =\n\t& {\n\t\t// @ts-ignore - \"Type parameter 'K' has a circular constraint\", not sure why\n\t\t[K in keyof T]: T[K];\n\t}\n\t& {};\n\nexport type SimplifyMappedType = [T] extends [unknown] ? T : never;\n\nexport type ShallowRecord = SimplifyMappedType<{ [P in K]: T }>;\n\nexport type Assume = T extends U ? T : U;\n\nexport type Equal = (() => T extends X ? 1 : 2) extends (() => T extends Y ? 1 : 2) ? true : false;\n\nexport interface DrizzleTypeError {\n\t$drizzleTypeError: T;\n}\n\nexport type ValueOrArray = T | T[];\n\n/** @internal */\nexport function applyMixins(baseClass: any, extendedClasses: any[]) {\n\tfor (const extendedClass of extendedClasses) {\n\t\tfor (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {\n\t\t\tif (name === 'constructor') continue;\n\n\t\t\tObject.defineProperty(\n\t\t\t\tbaseClass.prototype,\n\t\t\t\tname,\n\t\t\t\tObject.getOwnPropertyDescriptor(extendedClass.prototype, name) || Object.create(null),\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport type Or = T1 extends true ? true : T2 extends true ? true : false;\n\nexport type IfThenElse = If extends true ? Then : Else;\n\nexport type PromiseOf = T extends Promise ? U : T;\n\nexport type Writable = {\n\t-readonly [P in keyof T]: T[P];\n};\n\nexport function getTableColumns(table: T): T['_']['columns'] {\n\treturn table[Table.Symbol.Columns];\n}\n\n/** @internal */\nexport function getTableLikeName(table: TableLike): string | undefined {\n\treturn is(table, Subquery)\n\t\t? table[SubqueryConfig].alias\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].name\n\t\t: is(table, SQL)\n\t\t? undefined\n\t\t: table[Table.Symbol.IsAlias]\n\t\t? table[Table.Symbol.Name]\n\t\t: table[Table.Symbol.BaseName];\n}\n\nexport type ColumnsWithTable<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName }> };\n\nexport interface DrizzleConfig = Record> {\n\tlogger?: boolean | Logger;\n\tschema?: TSchema;\n}\nexport type ValidateShape = T extends ValidShape\n\t? Exclude extends never ? TResult\n\t: DrizzleTypeError<\n\t\t`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`\n\t>\n\t: never;\n\nexport type KnownKeysOnly = {\n\t[K in keyof T]: K extends keyof U ? T[K] : never;\n};\n\nexport type IsAny = 0 extends (1 & T) ? true : false;\n", "import type { BuildColumns } from '~/column-builder.ts';\nimport { entityKind } from '~/entity.ts';\nimport { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from '~/table.ts';\nimport type { CheckBuilder } from './checks.ts';\nimport type { SQLiteColumn, SQLiteColumnBuilder, SQLiteColumnBuilderBase } from './columns/common.ts';\nimport type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKeyBuilder } from './primary-keys.ts';\nimport type { UniqueConstraintBuilder } from './unique-constraint.ts';\n\nexport type SQLiteTableExtraConfig = Record<\n\tstring,\n\t| IndexBuilder\n\t| CheckBuilder\n\t| ForeignKeyBuilder\n\t| PrimaryKeyBuilder\n\t| UniqueConstraintBuilder\n>;\n\nexport type TableConfig = TableConfigBase>;\n\n/** @internal */\nexport const InlineForeignKeys = Symbol.for('drizzle:SQLiteInlineForeignKeys');\n\nexport class SQLiteTable extends Table {\n\tstatic readonly [entityKind]: string = 'SQLiteTable';\n\n\t/** @internal */\n\tstatic override readonly Symbol = Object.assign({}, Table.Symbol, {\n\t\tInlineForeignKeys: InlineForeignKeys as typeof InlineForeignKeys,\n\t});\n\n\t/** @internal */\n\toverride [Table.Symbol.Columns]!: NonNullable;\n\n\t/** @internal */\n\t[InlineForeignKeys]: ForeignKey[] = [];\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigBuilder]:\n\t\t| ((self: Record) => SQLiteTableExtraConfig)\n\t\t| undefined = undefined;\n}\n\nexport type AnySQLiteTable = {}> = SQLiteTable<\n\tUpdateTableConfig\n>;\n\nexport type SQLiteTableWithColumns =\n\t& SQLiteTable\n\t& {\n\t\t[Key in keyof T['columns']]: T['columns'][Key];\n\t};\n\nexport interface SQLiteTableFn {\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (self: BuildColumns) => SQLiteTableExtraConfig,\n\t): SQLiteTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'sqlite';\n\t}>;\n}\n\nfunction sqliteTableBase<\n\tTTableName extends string,\n\tTColumnsMap extends Record,\n\tTSchema extends string | undefined,\n>(\n\tname: TTableName,\n\tcolumns: TColumnsMap,\n\textraConfig?: (self: BuildColumns) => SQLiteTableExtraConfig,\n\tschema?: TSchema,\n\tbaseName = name,\n): SQLiteTableWithColumns<{\n\tname: TTableName;\n\tschema: TSchema;\n\tcolumns: BuildColumns;\n\tdialect: 'sqlite';\n}> {\n\tconst rawTable = new SQLiteTable<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'sqlite';\n\t}>(name, schema, baseName);\n\n\tconst builtColumns = Object.fromEntries(\n\t\tObject.entries(columns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as SQLiteColumnBuilder;\n\t\t\tconst column = colBuilder.build(rawTable);\n\t\t\trawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildColumns;\n\n\tconst table = Object.assign(rawTable, builtColumns);\n\n\ttable[Table.Symbol.Columns] = builtColumns;\n\n\tif (extraConfig) {\n\t\ttable[SQLiteTable.Symbol.ExtraConfigBuilder] = extraConfig as (\n\t\t\tself: Record,\n\t\t) => SQLiteTableExtraConfig;\n\t}\n\n\treturn table;\n}\n\nexport const sqliteTable: SQLiteTableFn = (name, columns, extraConfig) => {\n\treturn sqliteTableBase(name, columns, extraConfig);\n};\n\nexport function sqliteTableCreator(customizeTableName: (name: string) => string): SQLiteTableFn {\n\treturn (name, columns, extraConfig) => {\n\t\treturn sqliteTableBase(customizeTableName(name) as typeof name, columns, extraConfig, undefined, name);\n\t};\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { AnySQLiteColumn, SQLiteColumn } from './columns/index.ts';\nimport { SQLiteTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: SQLiteColumn[];\n\treadonly foreignTable: SQLiteTable;\n\treadonly foreignColumns: SQLiteColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteForeignKeyBuilder';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteForeignKeyBuilder';\n\t\tforeignTableName: 'TForeignTableName';\n\t};\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined;\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: SQLiteColumn[];\n\t\t\tforeignColumns: SQLiteColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as SQLiteTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'SQLiteForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: SQLiteTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName(): string {\n\t\tconst { name, columns, foreignColumns } = this.reference();\n\t\tconst columnNames = columns.map((column) => column.name);\n\t\tconst foreignColumnNames = foreignColumns.map((column) => column.name);\n\t\tconst chunks = [\n\t\t\tthis.table[SQLiteTable.Symbol.Name],\n\t\t\t...columnNames,\n\t\t\tforeignColumns[0]!.table[SQLiteTable.Symbol.Name],\n\t\t\t...foreignColumnNames,\n\t\t];\n\t\treturn name ?? `${chunks.join('_')}_fk`;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends SQLiteColumn[],\n> = { [Key in keyof TColumns]: AnySQLiteColumn<{ tableName: TTableName }> };\n\n/**\n * @deprecated please use `foreignKey({ columns: [], foreignColumns: [] })` syntax without callback\n * @param config\n * @returns\n */\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnySQLiteColumn<{ tableName: TTableName }>, ...AnySQLiteColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: () => {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable;\n\t},\n): ForeignKeyBuilder;\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnySQLiteColumn<{ tableName: TTableName }>, ...AnySQLiteColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable;\n\t},\n): ForeignKeyBuilder;\nexport function foreignKey(\n\tconfig: any,\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tif (typeof config === 'function') {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\tcolumns,\n\t\t\t\tforeignColumns,\n\t\t\t};\n\t\t}\n\t\treturn config;\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SQLiteColumn } from './columns/common.ts';\nimport { SQLiteTable } from './table.ts';\n\nexport function uniqueKeyName(table: SQLiteTable, columns: string[]) {\n\treturn `${table[SQLiteTable.Symbol.Name]}_${columns.join('_')}_unique`;\n}\n\nexport function unique(name?: string): UniqueOnConstraintBuilder {\n\treturn new UniqueOnConstraintBuilder(name);\n}\n\nexport class UniqueConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: SQLiteColumn[];\n\n\tconstructor(\n\t\tcolumns: SQLiteColumn[],\n\t\tprivate name?: string,\n\t) {\n\t\tthis.columns = columns;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tname?: string,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [SQLiteColumn, ...SQLiteColumn[]]) {\n\t\treturn new UniqueConstraintBuilder(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraint';\n\n\treadonly columns: SQLiteColumn[];\n\treadonly name?: string;\n\n\tconstructor(readonly table: SQLiteTable, columns: SQLiteColumn[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n\t}\n\n\tgetName() {\n\t\treturn this.name;\n\t}\n}\n", "import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase {}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder\n\timplements SQLiteColumnBuilderBase\n{\n\tstatic readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: SQLiteColumn, table: SQLiteTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn ((ref, actions) => {\n\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t});\n\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t}\n\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t}\n\t\t\t\treturn builder.build(table);\n\t\t\t})(ref, actions);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteColumn>;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\tTRuntimeConfig extends object = object,\n> extends Column {\n\tstatic readonly [entityKind]: string = 'SQLiteColumn';\n\n\tconstructor(\n\t\toverride readonly table: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnySQLiteColumn> = {}> = SQLiteColumn<\n\tRequired, TPartial>>\n>;\n", "import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tMakeColumnConfig,\n\tNotNull,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport type { Equal, Or } from '~/utils.ts';\nimport type { AnySQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{},\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): HasDefault> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as HasDefault>;\n\t}\n\n\t/** @internal */\n\tabstract override build(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBaseInteger>;\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport type SQLiteIntegerBuilderInitial = SQLiteIntegerBuilder<{\n\tname: TName;\n\tdataType: 'number';\n\tcolumnType: 'SQLiteInteger';\n\tdata: number;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteIntegerBuilder>\n\textends SQLiteBaseIntegerBuilder\n{\n\tstatic readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'number', 'SQLiteInteger');\n\t}\n\n\tbuild(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteInteger> {\n\t\treturn new SQLiteInteger>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger> extends SQLiteBaseInteger {\n\tstatic readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport type SQLiteTimestampBuilderInitial = SQLiteTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'SQLiteTimestamp';\n\tdata: Date;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteTimestampBuilder>\n\textends SQLiteBaseIntegerBuilder\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: T['name'], mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\tbuild(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteTimestamp> {\n\t\treturn new SQLiteTimestamp>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp>\n\textends SQLiteBaseInteger\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): Date {\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date): number {\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport type SQLiteBooleanBuilderInitial = SQLiteBooleanBuilder<{\n\tname: TName;\n\tdataType: 'boolean';\n\tcolumnType: 'SQLiteBoolean';\n\tdata: boolean;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBooleanBuilder>\n\textends SQLiteBaseIntegerBuilder\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: T['name'], mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\tbuild(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBoolean> {\n\t\treturn new SQLiteBoolean>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean>\n\textends SQLiteBaseInteger\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer(\n\tname: TName,\n\tconfig?: IntegerConfig,\n): Or, Equal> extends true ? SQLiteTimestampBuilderInitial\n\t: Equal extends true ? SQLiteBooleanBuilderInitial\n\t: SQLiteIntegerBuilderInitial;\nexport function integer(name: string, config?: IntegerConfig) {\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal, Writable } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport type SQLiteTextBuilderInitial = SQLiteTextBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'SQLiteText';\n\tdata: TEnum[number];\n\tdriverParam: string;\n\tenumValues: TEnum;\n}>;\n\nexport class SQLiteTextBuilder> extends SQLiteColumnBuilder<\n\tT,\n\t{ length: number | undefined; enumValues: T['enumValues'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteTextBuilder';\n\n\tconstructor(name: T['name'], config: SQLiteTextConfig<'text', T['enumValues']>) {\n\t\tsuper(name, 'string', 'SQLiteText');\n\t\tthis.config.enumValues = config.enum;\n\t\tthis.config.length = config.length;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteText> {\n\t\treturn new SQLiteText>(table, this.config as ColumnBuilderRuntimeConfig);\n\t}\n}\n\nexport class SQLiteText>\n\textends SQLiteColumn\n{\n\tstatic readonly [entityKind]: string = 'SQLiteText';\n\n\toverride readonly enumValues = this.config.enumValues;\n\n\treadonly length: number | undefined = this.config.length;\n\n\tconstructor(\n\t\ttable: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteTextBuilder['config'],\n\t) {\n\t\tsuper(table, config);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `text${this.config.length ? `(${this.config.length})` : ''}`;\n\t}\n}\n\nexport type SQLiteTextJsonBuilderInitial = SQLiteTextJsonBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'SQLiteTextJson';\n\tdata: unknown;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteTextJsonBuilder>\n\textends SQLiteColumnBuilder\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTextJsonBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'SQLiteTextJson');\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteTextJson> {\n\t\treturn new SQLiteTextJson>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class SQLiteTextJson>\n\textends SQLiteColumn\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTextJson';\n\n\tgetSQLType(): string {\n\t\treturn 'text';\n\t}\n\n\toverride mapFromDriverValue(value: string): T['data'] {\n\t\treturn JSON.parse(value);\n\t}\n\n\toverride mapToDriverValue(value: T['data']): string {\n\t\treturn JSON.stringify(value);\n\t}\n}\n\nexport type SQLiteTextConfig<\n\tTMode extends 'text' | 'json',\n\tTEnum extends readonly string[] | string[] | undefined,\n> = TMode extends 'text' ? {\n\t\tmode?: TMode;\n\t\tlength?: number;\n\t\tenum?: TEnum;\n\t}\n\t: {\n\t\tmode?: TMode;\n\t};\n\nexport function text<\n\tTName extends string,\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n\tTMode extends 'text' | 'json' = 'text' | 'json',\n>(\n\tname: TName,\n\tconfig: SQLiteTextConfig> = {} as SQLiteTextConfig>,\n): Equal extends true ? SQLiteTextJsonBuilderInitial\n\t: SQLiteTextBuilderInitial>\n{\n\treturn (config.mode === 'json'\n\t\t? new SQLiteTextJsonBuilder(name)\n\t\t: new SQLiteTextBuilder(name, config as SQLiteTextConfig<'text', Writable>)) as Equal extends true\n\t\t\t? SQLiteTextJsonBuilderInitial\n\t\t\t: SQLiteTextBuilderInitial>;\n}\n", "import { ColumnAliasProxyHandler, TableAliasProxyHandler } from './alias.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { SQL, View } from './sql/sql.ts';\nimport { Subquery, SubqueryConfig } from './subquery.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class SelectionProxyHandler | View>\n\timplements ProxyHandler | View>\n{\n\tstatic readonly [entityKind]: string = 'SelectionProxyHandler';\n\n\tprivate config: {\n\t\t/**\n\t\t * Table alias for the columns\n\t\t */\n\t\talias?: string;\n\t\t/**\n\t\t * What to do when a field is an instance of `SQL.Aliased` and it's not a selection field (from a subquery)\n\t\t *\n\t\t * `sql` - return the underlying SQL expression\n\t\t *\n\t\t * `alias` - return the field alias\n\t\t */\n\t\tsqlAliasedBehavior: 'sql' | 'alias';\n\t\t/**\n\t\t * What to do when a field is an instance of `SQL` and it doesn't have an alias declared\n\t\t *\n\t\t * `sql` - return the underlying SQL expression\n\t\t *\n\t\t * `error` - return a DrizzleTypeError on type level and throw an error on runtime\n\t\t */\n\t\tsqlBehavior: 'sql' | 'error';\n\n\t\t/**\n\t\t * Whether to replace the original name of the column with the alias\n\t\t * Should be set to `true` for views creation\n\t\t * @default false\n\t\t */\n\t\treplaceOriginalName?: boolean;\n\t};\n\n\tconstructor(config: SelectionProxyHandler['config']) {\n\t\tthis.config = { ...config };\n\t}\n\n\tget(subquery: T, prop: string | symbol): any {\n\t\tif (prop === SubqueryConfig) {\n\t\t\treturn {\n\t\t\t\t...subquery[SubqueryConfig as keyof typeof subquery],\n\t\t\t\tselection: new Proxy(\n\t\t\t\t\t(subquery as Subquery)[SubqueryConfig].selection,\n\t\t\t\t\tthis as ProxyHandler>,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...subquery[ViewBaseConfig as keyof typeof subquery],\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(subquery as View)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tthis as ProxyHandler>,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (typeof prop === 'symbol') {\n\t\t\treturn subquery[prop as keyof typeof subquery];\n\t\t}\n\n\t\tconst columns = is(subquery, Subquery)\n\t\t\t? subquery[SubqueryConfig].selection\n\t\t\t: is(subquery, View)\n\t\t\t? subquery[ViewBaseConfig].selectedFields\n\t\t\t: subquery;\n\t\tconst value: unknown = columns[prop as keyof typeof columns];\n\n\t\tif (is(value, SQL.Aliased)) {\n\t\t\t// Never return the underlying SQL expression for a field previously selected in a subquery\n\t\t\tif (this.config.sqlAliasedBehavior === 'sql' && !value.isSelectionField) {\n\t\t\t\treturn value.sql;\n\t\t\t}\n\n\t\t\tconst newValue = value.clone();\n\t\t\tnewValue.isSelectionField = true;\n\t\t\treturn newValue;\n\t\t}\n\n\t\tif (is(value, SQL)) {\n\t\t\tif (this.config.sqlBehavior === 'sql') {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`You tried to reference \"${prop}\" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using \".as('alias')\" method.`,\n\t\t\t);\n\t\t}\n\n\t\tif (is(value, Column)) {\n\t\t\tif (this.config.alias) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\tvalue,\n\t\t\t\t\tnew ColumnAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\t\tvalue.table,\n\t\t\t\t\t\t\tnew TableAliasProxyHandler(this.config.alias, this.config.replaceOriginalName ?? false),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t\tif (typeof value !== 'object' || value === null) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn new Proxy(value, new SelectionProxyHandler(this.config));\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SelectResultFields } from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { type DrizzleTypeError, orderSelectedFields } from '~/utils.ts';\nimport type { SQLiteColumn } from '../columns/common.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './select.types.ts';\n\nexport type SQLiteDeleteWithout<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T\n\t: Omit<\n\t\tSQLiteDeleteBase<\n\t\t\tT['_']['table'],\n\t\t\tT['_']['resultType'],\n\t\t\tT['_']['runResult'],\n\t\t\tT['_']['returning'],\n\t\t\tTDynamic,\n\t\t\tT['_']['excludedMethods'] | K\n\t\t>,\n\t\tT['_']['excludedMethods'] | K\n\t>;\n\nexport type SQLiteDelete<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning extends Record | undefined = undefined,\n> = SQLiteDeleteBase;\n\nexport interface SQLiteDeleteConfig {\n\twhere?: SQL | undefined;\n\ttable: SQLiteTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type SQLiteDeleteReturningAll<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n> = SQLiteDeleteWithout<\n\tSQLiteDeleteBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tT['_']['dynamic'],\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteDeleteReturning<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFieldsFlat,\n> = SQLiteDeleteWithout<\n\tSQLiteDeleteBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tSelectResultFields,\n\t\tT['_']['dynamic'],\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteDeleteExecute = T['_']['returning'] extends undefined\n\t? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteDeletePrepare = SQLitePreparedQuery<{\n\ttype: T['_']['resultType'];\n\trun: T['_']['runResult'];\n\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t: T['_']['returning'][];\n\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t: T['_']['returning'] | undefined;\n\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t: any[][];\n\texecute: SQLiteDeleteExecute;\n}>;\n\nexport type SQLiteDeleteDynamic = SQLiteDelete<\n\tT['_']['table'],\n\tT['_']['resultType'],\n\tT['_']['runResult'],\n\tT['_']['returning']\n>;\n\nexport type AnySQLiteDeleteBase = SQLiteDeleteBase;\n\nexport interface SQLiteDeleteBase<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning extends Record | undefined = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends\n\tQueryPromise,\n\tRunnableQuery,\n\tSQLWrapper\n{\n\treadonly _: {\n\t\tdialect: 'sqlite';\n\t\treadonly table: TTable;\n\t\treadonly resultType: TResultType;\n\t\treadonly runResult: TRunResult;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteDeleteBase<\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning extends Record | undefined = undefined,\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise\n\timplements RunnableQuery, SQLWrapper\n{\n\tstatic readonly [entityKind]: string = 'SQLiteDelete';\n\n\t/** @internal */\n\tconfig: SQLiteDeleteConfig;\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: SQLiteSession,\n\t\tprivate dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { table, withList };\n\t}\n\n\t/**\n\t * Adds a `where` clause to the query.\n\t *\n\t * Calling this method will delete only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param where the `where` clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be deleted.\n\t *\n\t * ```ts\n\t * // Delete all cars with green color\n\t * db.delete(cars).where(eq(cars.color, 'green'));\n\t * // or\n\t * db.delete(cars).where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Delete all BMW cars with a green color\n\t * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Delete all cars with the green or blue color\n\t * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): SQLiteDeleteWithout {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the deleted rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete#delete-with-return}\n\t *\n\t * @example\n\t * ```ts\n\t * // Delete all cars with the green color and return all fields\n\t * const deletedCars: Car[] = await db.delete(cars)\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Delete all cars with the green color and return only their id and brand fields\n\t * const deletedCarsIdsAndBrands: { id: number, brand: string }[] = await db.delete(cars)\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): SQLiteDeleteReturningAll;\n\treturning(\n\t\tfields: TSelectedFields,\n\t): SQLiteDeleteReturning;\n\treturning(\n\t\tfields: SelectedFieldsFlat = this.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteDeleteReturning {\n\t\tthis.config.returning = orderSelectedFields(fields);\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildDeleteQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\t/** @internal */\n\t_prepare(isOneTimeQuery = true): SQLiteDeletePrepare {\n\t\treturn this.session[isOneTimeQuery ? 'prepareOneTimeQuery' : 'prepareQuery'](\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t) as SQLiteDeletePrepare;\n\t}\n\n\tprepare(): SQLiteDeletePrepare {\n\t\treturn this._prepare(false);\n\t}\n\n\trun: ReturnType['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\toverride async execute(placeholderValues?: Record): Promise> {\n\t\treturn this._prepare().execute(placeholderValues) as SQLiteDeleteExecute;\n\t}\n\n\t$dynamic(): SQLiteDeleteDynamic {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind, is } from '~/entity.ts';\nimport type { SelectResultFields } from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Placeholder, Query, SQLWrapper } from '~/sql/sql.ts';\nimport { Param, SQL, sql } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { IndexColumn } from '~/sqlite-core/indexes.ts';\nimport type { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { type DrizzleTypeError, mapUpdateSet, orderSelectedFields, type Simplify } from '~/utils.ts';\nimport type { SQLiteColumn } from '../columns/common.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './select.types.ts';\nimport type { SQLiteUpdateSetSource } from './update.ts';\n\nexport interface SQLiteInsertConfig {\n\ttable: TTable;\n\tvalues: Record[];\n\twithList?: Subquery[];\n\tonConflict?: SQL;\n\treturning?: SelectedFieldsOrdered;\n}\n\nexport type SQLiteInsertValue = Simplify<\n\t{\n\t\t[Key in keyof TTable['$inferInsert']]: TTable['$inferInsert'][Key] | SQL | Placeholder;\n\t}\n>;\n\nexport class SQLiteInsertBuilder<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteInsertBuilder';\n\n\tconstructor(\n\t\tprotected table: TTable,\n\t\tprotected session: SQLiteSession,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tvalues(value: SQLiteInsertValue): SQLiteInsertBase;\n\tvalues(values: SQLiteInsertValue[]): SQLiteInsertBase;\n\tvalues(\n\t\tvalues: SQLiteInsertValue | SQLiteInsertValue[],\n\t): SQLiteInsertBase {\n\t\tvalues = Array.isArray(values) ? values : [values];\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('values() must be called with at least one value');\n\t\t}\n\t\tconst mappedValues = values.map((entry) => {\n\t\t\tconst result: Record = {};\n\t\t\tconst cols = this.table[Table.Symbol.Columns];\n\t\t\tfor (const colKey of Object.keys(entry)) {\n\t\t\t\tconst colValue = entry[colKey as keyof typeof entry];\n\t\t\t\tresult[colKey] = is(colValue, SQL) ? colValue : new Param(colValue, cols[colKey]);\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\n\t\t// if (mappedValues.length > 1 && mappedValues.some((t) => Object.keys(t).length === 0)) {\n\t\t// \tthrow new Error(\n\t\t// \t\t`One of the values you want to insert is empty. In SQLite you can insert only one empty object per statement. For this case Drizzle with use \"INSERT INTO ... DEFAULT VALUES\" syntax`,\n\t\t// \t);\n\t\t// }\n\n\t\treturn new SQLiteInsertBase(this.table, mappedValues, this.session, this.dialect, this.withList);\n\t}\n}\n\nexport type SQLiteInsertWithout =\n\tTDynamic extends true ? T\n\t\t: Omit<\n\t\t\tSQLiteInsertBase<\n\t\t\t\tT['_']['table'],\n\t\t\t\tT['_']['resultType'],\n\t\t\t\tT['_']['runResult'],\n\t\t\t\tT['_']['returning'],\n\t\t\t\tTDynamic,\n\t\t\t\tT['_']['excludedMethods'] | K\n\t\t\t>,\n\t\t\tT['_']['excludedMethods'] | K\n\t\t>;\n\nexport type SQLiteInsertReturning<\n\tT extends AnySQLiteInsert,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFieldsFlat,\n> = SQLiteInsertWithout<\n\tSQLiteInsertBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tSelectResultFields,\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteInsertReturningAll<\n\tT extends AnySQLiteInsert,\n\tTDynamic extends boolean,\n> = SQLiteInsertWithout<\n\tSQLiteInsertBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteInsertOnConflictDoUpdateConfig = {\n\ttarget: IndexColumn | IndexColumn[];\n\twhere?: SQL;\n\tset: SQLiteUpdateSetSource;\n};\n\nexport type SQLiteInsertDynamic = SQLiteInsert<\n\tT['_']['table'],\n\tT['_']['resultType'],\n\tT['_']['runResult'],\n\tT['_']['returning']\n>;\n\nexport type SQLiteInsertExecute = T['_']['returning'] extends undefined ? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteInsertPrepare = SQLitePreparedQuery<\n\t{\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'][];\n\t\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'];\n\t\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t\t: any[][];\n\t\texecute: SQLiteInsertExecute;\n\t}\n>;\n\nexport type AnySQLiteInsert = SQLiteInsertBase;\n\nexport type SQLiteInsert<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning = any,\n> = SQLiteInsertBase;\n\nexport interface SQLiteInsertBase<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends\n\tSQLWrapper,\n\tQueryPromise,\n\tRunnableQuery\n{\n\treadonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly table: TTable;\n\t\treadonly resultType: TResultType;\n\t\treadonly runResult: TRunResult;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteInsertBase<\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise\n\timplements RunnableQuery, SQLWrapper\n{\n\tstatic readonly [entityKind]: string = 'SQLiteInsert';\n\n\t/** @internal */\n\tconfig: SQLiteInsertConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tvalues: SQLiteInsertConfig['values'],\n\t\tprivate session: SQLiteSession,\n\t\tprivate dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { table, values, withList };\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the inserted rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#insert-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Insert one row and return all fields\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t *\n\t * // Insert one row and return only the id\n\t * const insertedCarId: { id: number }[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning({ id: cars.id });\n\t * ```\n\t */\n\treturning(): SQLiteInsertReturningAll;\n\treturning(\n\t\tfields: TSelectedFields,\n\t): SQLiteInsertReturning;\n\treturning(\n\t\tfields: SelectedFieldsFlat = this.config.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteInsertWithout {\n\t\tthis.config.returning = orderSelectedFields(fields);\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `on conflict do nothing` clause to the query.\n\t *\n\t * Calling this method simply avoids inserting a row as its alternative action.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}\n\t *\n\t * @param config The `target` and `where` clauses.\n\t *\n\t * @example\n\t * ```ts\n\t * // Insert one row and cancel the insert if there's a conflict\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoNothing();\n\t *\n\t * // Explicitly specify conflict target\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoNothing({ target: cars.id });\n\t * ```\n\t */\n\tonConflictDoNothing(config: { target?: IndexColumn | IndexColumn[]; where?: SQL } = {}): this {\n\t\tif (config.target === undefined) {\n\t\t\tthis.config.onConflict = sql`do nothing`;\n\t\t} else {\n\t\t\tconst targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;\n\t\t\tconst whereSql = config.where ? sql` where ${config.where}` : sql``;\n\t\t\tthis.config.onConflict = sql`${targetSql} do nothing${whereSql}`;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds an `on conflict do update` clause to the query.\n\t *\n\t * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}\n\t *\n\t * @param config The `target`, `set` and `where` clauses.\n\t *\n\t * @example\n\t * ```ts\n\t * // Update the row if there's a conflict\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoUpdate({\n\t * target: cars.id,\n\t * set: { brand: 'Porsche' }\n\t * });\n\t *\n\t * // Upsert with 'where' clause\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoUpdate({\n\t * target: cars.id,\n\t * set: { brand: 'newBMW' },\n\t * where: sql`${cars.createdAt} > '2023-01-01'::date`,\n\t * });\n\t * ```\n\t */\n\tonConflictDoUpdate(config: SQLiteInsertOnConflictDoUpdateConfig): this {\n\t\tconst targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;\n\t\tconst whereSql = config.where ? sql` where ${config.where}` : sql``;\n\t\tconst setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));\n\t\tthis.config.onConflict = sql`${targetSql} do update set ${setSql}${whereSql}`;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildInsertQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\t/** @internal */\n\t_prepare(isOneTimeQuery = true): SQLiteInsertPrepare {\n\t\treturn this.session[isOneTimeQuery ? 'prepareOneTimeQuery' : 'prepareQuery'](\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t) as SQLiteInsertPrepare;\n\t}\n\n\tprepare(): SQLiteInsertPrepare {\n\t\treturn this._prepare(false);\n\t}\n\n\trun: ReturnType['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\toverride async execute(): Promise> {\n\t\treturn (this.config.returning ? this.all() : this.run()) as SQLiteInsertExecute;\n\t}\n\n\t$dynamic(): SQLiteInsertDynamic {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { ColumnsSelection} from '~/sql/sql.ts';\nimport { View } from '~/sql/sql.ts';\n\nexport abstract class SQLiteViewBase<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> extends View {\n\tstatic readonly [entityKind]: string = 'SQLiteViewBase';\n\n\tdeclare _: View['_'] & {\n\t\tviewBrand: 'SQLiteView';\n\t};\n}\n", "import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from '~/alias.ts';\nimport type { AnyColumn } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { DrizzleError } from '~/errors.ts';\nimport type { MigrationConfig, MigrationMeta } from '~/migrator.ts';\nimport {\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tgetOperators,\n\tgetOrderByOperators,\n\tMany,\n\tnormalizeRelation,\n\tOne,\n\ttype Relation,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { Name } from '~/sql/index.ts';\nimport { and, eq } from '~/sql/index.ts';\nimport { Param, type QueryWithTypings, SQL, sql, type SQLChunk } from '~/sql/sql.ts';\nimport { SQLiteColumn } from '~/sqlite-core/columns/index.ts';\nimport type { SQLiteDeleteConfig, SQLiteInsertConfig, SQLiteUpdateConfig } from '~/sqlite-core/query-builders/index.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { Subquery, SubqueryConfig } from '~/subquery.ts';\nimport { getTableName, Table } from '~/table.ts';\nimport { orderSelectedFields, type UpdateSet } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type {\n\tSelectedFieldsOrdered,\n\tSQLiteSelectConfig,\n\tSQLiteSelectJoinConfig,\n} from './query-builders/select.types.ts';\nimport type { SQLiteSession } from './session.ts';\nimport { SQLiteViewBase } from './view-base.ts';\n\nexport abstract class SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteDialect';\n\n\tescapeName(name: string): string {\n\t\treturn `\"${name}\"`;\n\t}\n\n\tescapeParam(_num: number): string {\n\t\treturn '?';\n\t}\n\n\tescapeString(str: string): string {\n\t\treturn `'${str.replace(/'/g, \"''\")}'`;\n\t}\n\n\tprivate buildWithCTE(queries: Subquery[] | undefined): SQL | undefined {\n\t\tif (!queries?.length) return undefined;\n\n\t\tconst withSqlChunks = [sql`with `];\n\t\tfor (const [i, w] of queries.entries()) {\n\t\t\twithSqlChunks.push(sql`${sql.identifier(w[SubqueryConfig].alias)} as (${w[SubqueryConfig].sql})`);\n\t\t\tif (i < queries.length - 1) {\n\t\t\t\twithSqlChunks.push(sql`, `);\n\t\t\t}\n\t\t}\n\t\twithSqlChunks.push(sql` `);\n\t\treturn sql.join(withSqlChunks);\n\t}\n\n\tbuildDeleteQuery({ table, where, returning, withList }: SQLiteDeleteConfig): SQL {\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\treturn sql`${withSql}delete from ${table}${whereSql}${returningSql}`;\n\t}\n\n\tbuildUpdateSet(table: SQLiteTable, set: UpdateSet): SQL {\n\t\tconst setEntries = Object.entries(set);\n\n\t\tconst setSize = setEntries.length;\n\t\treturn sql.join(\n\t\t\tsetEntries\n\t\t\t\t.flatMap(([colName, value], i): SQL[] => {\n\t\t\t\t\tconst col: SQLiteColumn = table[Table.Symbol.Columns][colName]!;\n\t\t\t\t\tconst res = sql`${sql.identifier(col.name)} = ${value}`;\n\t\t\t\t\tif (i < setSize - 1) {\n\t\t\t\t\t\treturn [res, sql.raw(', ')];\n\t\t\t\t\t}\n\t\t\t\t\treturn [res];\n\t\t\t\t}),\n\t\t);\n\t}\n\n\tbuildUpdateQuery({ table, set, where, returning, withList }: SQLiteUpdateConfig): SQL {\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst setSql = this.buildUpdateSet(table, set);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\treturn sql`${withSql}update ${table} set ${setSql}${whereSql}${returningSql}`;\n\t}\n\n\t/**\n\t * Builds selection SQL with provided fields/expressions\n\t *\n\t * Examples:\n\t *\n\t * `select from`\n\t *\n\t * `insert ... returning `\n\t *\n\t * If `isSingleTable` is true, then columns won't be prefixed with table name\n\t */\n\tprivate buildSelection(\n\t\tfields: SelectedFieldsOrdered,\n\t\t{ isSingleTable = false }: { isSingleTable?: boolean } = {},\n\t): SQL {\n\t\tconst columnsLen = fields.length;\n\n\t\tconst chunks = fields\n\t\t\t.flatMap(({ field }, i) => {\n\t\t\t\tconst chunk: SQLChunk[] = [];\n\n\t\t\t\tif (is(field, SQL.Aliased) && field.isSelectionField) {\n\t\t\t\t\tchunk.push(sql.identifier(field.fieldAlias));\n\t\t\t\t} else if (is(field, SQL.Aliased) || is(field, SQL)) {\n\t\t\t\t\tconst query = is(field, SQL.Aliased) ? field.sql : field;\n\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tnew SQL(\n\t\t\t\t\t\t\t\tquery.queryChunks.map((c) => {\n\t\t\t\t\t\t\t\t\tif (is(c, Column)) {\n\t\t\t\t\t\t\t\t\t\treturn sql.identifier(c.name);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(query);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (is(field, SQL.Aliased)) {\n\t\t\t\t\t\tchunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);\n\t\t\t\t\t}\n\t\t\t\t} else if (is(field, Column)) {\n\t\t\t\t\tconst tableName = field.table[Table.Symbol.Name];\n\t\t\t\t\tconst columnName = field.name;\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(sql.identifier(columnName));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(sql`${sql.identifier(tableName)}.${sql.identifier(columnName)}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (i < columnsLen - 1) {\n\t\t\t\t\tchunk.push(sql`, `);\n\t\t\t\t}\n\n\t\t\t\treturn chunk;\n\t\t\t});\n\n\t\treturn sql.join(chunks);\n\t}\n\n\tbuildSelectQuery(\n\t\t{\n\t\t\twithList,\n\t\t\tfields,\n\t\t\tfieldsFlat,\n\t\t\twhere,\n\t\t\thaving,\n\t\t\ttable,\n\t\t\tjoins,\n\t\t\torderBy,\n\t\t\tgroupBy,\n\t\t\tlimit,\n\t\t\toffset,\n\t\t\tdistinct,\n\t\t\tsetOperators,\n\t\t}: SQLiteSelectConfig,\n\t): SQL {\n\t\tconst fieldsList = fieldsFlat ?? orderSelectedFields(fields);\n\t\tfor (const f of fieldsList) {\n\t\t\tif (\n\t\t\t\tis(f.field, Column)\n\t\t\t\t&& getTableName(f.field.table)\n\t\t\t\t\t!== (is(table, Subquery)\n\t\t\t\t\t\t? table[SubqueryConfig].alias\n\t\t\t\t\t\t: is(table, SQLiteViewBase)\n\t\t\t\t\t\t? table[ViewBaseConfig].name\n\t\t\t\t\t\t: is(table, SQL)\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: getTableName(table))\n\t\t\t\t&& !((table) =>\n\t\t\t\t\tjoins?.some(({ alias }) =>\n\t\t\t\t\t\talias === (table[Table.Symbol.IsAlias] ? getTableName(table) : table[Table.Symbol.BaseName])\n\t\t\t\t\t))(f.field.table)\n\t\t\t) {\n\t\t\t\tconst tableName = getTableName(f.field.table);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Your \"${\n\t\t\t\t\t\tf.path.join('->')\n\t\t\t\t\t}\" field references a column \"${tableName}\".\"${f.field.name}\", but the table \"${tableName}\" is not part of the query! Did you forget to join it?`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst isSingleTable = !joins || joins.length === 0;\n\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst distinctSql = distinct ? sql` distinct` : undefined;\n\n\t\tconst selection = this.buildSelection(fieldsList, { isSingleTable });\n\n\t\tconst tableSql = (() => {\n\t\t\tif (is(table, Table) && table[Table.Symbol.OriginalName] !== table[Table.Symbol.Name]) {\n\t\t\t\treturn sql`${sql.identifier(table[Table.Symbol.OriginalName])} ${sql.identifier(table[Table.Symbol.Name])}`;\n\t\t\t}\n\n\t\t\treturn table;\n\t\t})();\n\n\t\tconst joinsArray: SQL[] = [];\n\n\t\tif (joins) {\n\t\t\tfor (const [index, joinMeta] of joins.entries()) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t\tconst table = joinMeta.table;\n\n\t\t\t\tif (is(table, SQLiteTable)) {\n\t\t\t\t\tconst tableName = table[SQLiteTable.Symbol.Name];\n\t\t\t\t\tconst tableSchema = table[SQLiteTable.Symbol.Schema];\n\t\t\t\t\tconst origTableName = table[SQLiteTable.Symbol.OriginalName];\n\t\t\t\t\tconst alias = tableName === origTableName ? undefined : joinMeta.alias;\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : undefined}${\n\t\t\t\t\t\t\tsql.identifier(origTableName)\n\t\t\t\t\t\t}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join ${table} on ${joinMeta.on}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (index < joins.length - 1) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst joinsSql = sql.join(joinsArray);\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\tconst havingSql = having ? sql` having ${having}` : undefined;\n\n\t\tconst orderByList: (SQLiteColumn | SQL | SQL.Aliased)[] = [];\n\t\tif (orderBy) {\n\t\t\tfor (const [index, orderByValue] of orderBy.entries()) {\n\t\t\t\torderByList.push(orderByValue);\n\n\t\t\t\tif (index < orderBy.length - 1) {\n\t\t\t\t\torderByList.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst groupByList: (SQL | AnyColumn | SQL.Aliased)[] = [];\n\t\tif (groupBy) {\n\t\t\tfor (const [index, groupByValue] of groupBy.entries()) {\n\t\t\t\tgroupByList.push(groupByValue);\n\n\t\t\t\tif (index < groupBy.length - 1) {\n\t\t\t\t\tgroupByList.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst groupBySql = groupByList.length > 0 ? sql` group by ${sql.join(groupByList)}` : undefined;\n\n\t\tconst orderBySql = orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : undefined;\n\n\t\tconst limitSql = limit ? sql` limit ${limit}` : undefined;\n\n\t\tconst offsetSql = offset ? sql` offset ${offset}` : undefined;\n\n\t\tconst finalQuery =\n\t\t\tsql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}`;\n\n\t\tif (setOperators.length > 0) {\n\t\t\treturn this.buildSetOperations(finalQuery, setOperators);\n\t\t}\n\n\t\treturn finalQuery;\n\t}\n\n\tbuildSetOperations(leftSelect: SQL, setOperators: SQLiteSelectConfig['setOperators']): SQL {\n\t\tconst [setOperator, ...rest] = setOperators;\n\n\t\tif (!setOperator) {\n\t\t\tthrow new Error('Cannot pass undefined values to any set operator');\n\t\t}\n\n\t\tif (rest.length === 0) {\n\t\t\treturn this.buildSetOperationQuery({ leftSelect, setOperator });\n\t\t}\n\n\t\t// Some recursive magic here\n\t\treturn this.buildSetOperations(\n\t\t\tthis.buildSetOperationQuery({ leftSelect, setOperator }),\n\t\t\trest,\n\t\t);\n\t}\n\n\tbuildSetOperationQuery({\n\t\tleftSelect,\n\t\tsetOperator: { type, isAll, rightSelect, limit, orderBy, offset },\n\t}: { leftSelect: SQL; setOperator: SQLiteSelectConfig['setOperators'][number] }): SQL {\n\t\t// SQLite doesn't support parenthesis in set operations\n\t\tconst leftChunk = sql`${leftSelect.getSQL()} `;\n\t\tconst rightChunk = sql`${rightSelect.getSQL()}`;\n\n\t\tlet orderBySql;\n\t\tif (orderBy && orderBy.length > 0) {\n\t\t\tconst orderByValues: (SQL | Name)[] = [];\n\n\t\t\t// The next bit is necessary because the sql operator replaces ${table.column} with `table`.`column`\n\t\t\t// which is invalid Sql syntax, Table from one of the SELECTs cannot be used in global ORDER clause\n\t\t\tfor (const singleOrderBy of orderBy) {\n\t\t\t\tif (is(singleOrderBy, SQLiteColumn)) {\n\t\t\t\t\torderByValues.push(sql.identifier(singleOrderBy.name));\n\t\t\t\t} else if (is(singleOrderBy, SQL)) {\n\t\t\t\t\tfor (let i = 0; i < singleOrderBy.queryChunks.length; i++) {\n\t\t\t\t\t\tconst chunk = singleOrderBy.queryChunks[i];\n\n\t\t\t\t\t\tif (is(chunk, SQLiteColumn)) {\n\t\t\t\t\t\t\tsingleOrderBy.queryChunks[i] = sql.identifier(chunk.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\torderByValues.push(sql`${singleOrderBy}`);\n\t\t\t\t} else {\n\t\t\t\t\torderByValues.push(sql`${singleOrderBy}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\torderBySql = sql` order by ${sql.join(orderByValues, sql`, `)}`;\n\t\t}\n\n\t\tconst limitSql = limit ? sql` limit ${limit}` : undefined;\n\n\t\tconst operatorChunk = sql.raw(`${type} ${isAll ? 'all ' : ''}`);\n\n\t\tconst offsetSql = offset ? sql` offset ${offset}` : undefined;\n\n\t\treturn sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;\n\t}\n\n\tbuildInsertQuery({ table, values, onConflict, returning, withList }: SQLiteInsertConfig): SQL {\n\t\t// const isSingleValue = values.length === 1;\n\t\tconst valuesSqlList: ((SQLChunk | SQL)[] | SQL)[] = [];\n\t\tconst columns: Record = table[Table.Symbol.Columns];\n\n\t\tconst colEntries: [string, SQLiteColumn][] = Object.entries(columns);\n\t\tconst insertOrder = colEntries.map(([, column]) => sql.identifier(column.name));\n\n\t\tfor (const [valueIndex, value] of values.entries()) {\n\t\t\tconst valueList: (SQLChunk | SQL)[] = [];\n\t\t\tfor (const [fieldName, col] of colEntries) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (colValue === undefined || (is(colValue, Param) && colValue.value === undefined)) {\n\t\t\t\t\tlet defaultValue;\n\t\t\t\t\tif (col.default !== null && col.default !== undefined) {\n\t\t\t\t\t\tdefaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);\n\t\t\t\t\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t\t\t\t\t} else if (col.defaultFn !== undefined) {\n\t\t\t\t\t\tconst defaultFnResult = col.defaultFn();\n\t\t\t\t\t\tdefaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdefaultValue = sql`null`;\n\t\t\t\t\t}\n\t\t\t\t\tvalueList.push(defaultValue);\n\t\t\t\t} else {\n\t\t\t\t\tvalueList.push(colValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvaluesSqlList.push(valueList);\n\t\t\tif (valueIndex < values.length - 1) {\n\t\t\t\tvaluesSqlList.push(sql`, `);\n\t\t\t}\n\t\t}\n\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst valuesSql = sql.join(valuesSqlList);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst onConflictSql = onConflict ? sql` on conflict ${onConflict}` : undefined;\n\n\t\t// if (isSingleValue && valuesSqlList.length === 0){\n\t\t// \treturn sql`insert into ${table} default values ${onConflictSql}${returningSql}`;\n\t\t// }\n\n\t\treturn sql`${withSql}insert into ${table} ${insertOrder} values ${valuesSql}${onConflictSql}${returningSql}`;\n\t}\n\n\tsqlToQuery(sql: SQL): QueryWithTypings {\n\t\treturn sql.toQuery({\n\t\t\tescapeName: this.escapeName,\n\t\t\tescapeParam: this.escapeParam,\n\t\t\tescapeString: this.escapeString,\n\t\t});\n\t}\n\n\tbuildRelationalQuery({\n\t\tfullSchema,\n\t\tschema,\n\t\ttableNamesMap,\n\t\ttable,\n\t\ttableConfig,\n\t\tqueryConfig: config,\n\t\ttableAlias,\n\t\tnestedQueryRelation,\n\t\tjoinOn,\n\t}: {\n\t\tfullSchema: Record;\n\t\tschema: TablesRelationalConfig;\n\t\ttableNamesMap: Record;\n\t\ttable: SQLiteTable;\n\t\ttableConfig: TableRelationalConfig;\n\t\tqueryConfig: true | DBQueryConfig<'many', true>;\n\t\ttableAlias: string;\n\t\tnestedQueryRelation?: Relation;\n\t\tjoinOn?: SQL;\n\t}): BuildRelationalQueryResult {\n\t\tlet selection: BuildRelationalQueryResult['selection'] = [];\n\t\tlet limit, offset, orderBy: SQLiteSelectConfig['orderBy'] = [], where;\n\t\tconst joins: SQLiteSelectJoinConfig[] = [];\n\n\t\tif (config === true) {\n\t\t\tconst selectionEntries = Object.entries(tableConfig.columns);\n\t\t\tselection = selectionEntries.map((\n\t\t\t\t[key, value],\n\t\t\t) => ({\n\t\t\t\tdbKey: value.name,\n\t\t\t\ttsKey: key,\n\t\t\t\tfield: aliasedTableColumn(value as SQLiteColumn, tableAlias),\n\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\tisJson: false,\n\t\t\t\tselection: [],\n\t\t\t}));\n\t\t} else {\n\t\t\tconst aliasedColumns = Object.fromEntries(\n\t\t\t\tObject.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]),\n\t\t\t);\n\n\t\t\tif (config.where) {\n\t\t\t\tconst whereSql = typeof config.where === 'function'\n\t\t\t\t\t? config.where(aliasedColumns, getOperators())\n\t\t\t\t\t: config.where;\n\t\t\t\twhere = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);\n\t\t\t}\n\n\t\t\tconst fieldsSelection: { tsKey: string; value: SQLiteColumn | SQL.Aliased }[] = [];\n\t\t\tlet selectedColumns: string[] = [];\n\n\t\t\t// Figure out which columns to select\n\t\t\tif (config.columns) {\n\t\t\t\tlet isIncludeMode = false;\n\n\t\t\t\tfor (const [field, value] of Object.entries(config.columns)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field in tableConfig.columns) {\n\t\t\t\t\t\tif (!isIncludeMode && value === true) {\n\t\t\t\t\t\t\tisIncludeMode = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectedColumns.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (selectedColumns.length > 0) {\n\t\t\t\t\tselectedColumns = isIncludeMode\n\t\t\t\t\t\t? selectedColumns.filter((c) => config.columns?.[c] === true)\n\t\t\t\t\t\t: Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select all columns if selection is not specified\n\t\t\t\tselectedColumns = Object.keys(tableConfig.columns);\n\t\t\t}\n\n\t\t\tfor (const field of selectedColumns) {\n\t\t\t\tconst column = tableConfig.columns[field]! as SQLiteColumn;\n\t\t\t\tfieldsSelection.push({ tsKey: field, value: column });\n\t\t\t}\n\n\t\t\tlet selectedRelations: {\n\t\t\t\ttsKey: string;\n\t\t\t\tqueryConfig: true | DBQueryConfig<'many', false>;\n\t\t\t\trelation: Relation;\n\t\t\t}[] = [];\n\n\t\t\t// Figure out which relations to select\n\t\t\tif (config.with) {\n\t\t\t\tselectedRelations = Object.entries(config.with)\n\t\t\t\t\t.filter((entry): entry is [typeof entry[0], NonNullable] => !!entry[1])\n\t\t\t\t\t.map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey]! }));\n\t\t\t}\n\n\t\t\tlet extras;\n\n\t\t\t// Figure out which extras to select\n\t\t\tif (config.extras) {\n\t\t\t\textras = typeof config.extras === 'function'\n\t\t\t\t\t? config.extras(aliasedColumns, { sql })\n\t\t\t\t\t: config.extras;\n\t\t\t\tfor (const [tsKey, value] of Object.entries(extras)) {\n\t\t\t\t\tfieldsSelection.push({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tvalue: mapColumnsInAliasedSQLToAlias(value, tableAlias),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Transform `fieldsSelection` into `selection`\n\t\t\t// `fieldsSelection` shouldn't be used after this point\n\t\t\tfor (const { tsKey, value } of fieldsSelection) {\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey]!.name,\n\t\t\t\t\ttsKey,\n\t\t\t\t\tfield: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,\n\t\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\t\tisJson: false,\n\t\t\t\t\tselection: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet orderByOrig = typeof config.orderBy === 'function'\n\t\t\t\t? config.orderBy(aliasedColumns, getOrderByOperators())\n\t\t\t\t: config.orderBy ?? [];\n\t\t\tif (!Array.isArray(orderByOrig)) {\n\t\t\t\torderByOrig = [orderByOrig];\n\t\t\t}\n\t\t\torderBy = orderByOrig.map((orderByValue) => {\n\t\t\t\tif (is(orderByValue, Column)) {\n\t\t\t\t\treturn aliasedTableColumn(orderByValue, tableAlias) as SQLiteColumn;\n\t\t\t\t}\n\t\t\t\treturn mapColumnsInSQLToAlias(orderByValue, tableAlias);\n\t\t\t});\n\n\t\t\tlimit = config.limit;\n\t\t\toffset = config.offset;\n\n\t\t\t// Process all relations\n\t\t\tfor (\n\t\t\t\tconst {\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tqueryConfig: selectedRelationConfigValue,\n\t\t\t\t\trelation,\n\t\t\t\t} of selectedRelations\n\t\t\t) {\n\t\t\t\tconst normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);\n\t\t\t\tconst relationTableName = relation.referencedTable[Table.Symbol.Name];\n\t\t\t\tconst relationTableTsName = tableNamesMap[relationTableName]!;\n\t\t\t\tconst relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;\n\t\t\t\t// const relationTable = schema[relationTableTsName]!;\n\t\t\t\tconst joinOn = and(\n\t\t\t\t\t...normalizedRelation.fields.map((field, i) =>\n\t\t\t\t\t\teq(\n\t\t\t\t\t\t\taliasedTableColumn(normalizedRelation.references[i]!, relationTableAlias),\n\t\t\t\t\t\t\taliasedTableColumn(field, tableAlias),\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tconst builtRelation = this.buildRelationalQuery({\n\t\t\t\t\tfullSchema,\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\ttable: fullSchema[relationTableTsName] as SQLiteTable,\n\t\t\t\t\ttableConfig: schema[relationTableTsName]!,\n\t\t\t\t\tqueryConfig: is(relation, One)\n\t\t\t\t\t\t? (selectedRelationConfigValue === true\n\t\t\t\t\t\t\t? { limit: 1 }\n\t\t\t\t\t\t\t: { ...selectedRelationConfigValue, limit: 1 })\n\t\t\t\t\t\t: selectedRelationConfigValue,\n\t\t\t\t\ttableAlias: relationTableAlias,\n\t\t\t\t\tjoinOn,\n\t\t\t\t\tnestedQueryRelation: relation,\n\t\t\t\t});\n\t\t\t\tconst field = (sql`(${builtRelation.sql})`).as(selectedRelationTsKey);\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: selectedRelationTsKey,\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tfield,\n\t\t\t\t\trelationTableTsKey: relationTableTsName,\n\t\t\t\t\tisJson: true,\n\t\t\t\t\tselection: builtRelation.selection,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (selection.length === 0) {\n\t\t\tthrow new DrizzleError({\n\t\t\t\tmessage:\n\t\t\t\t\t`No fields selected for table \"${tableConfig.tsName}\" (\"${tableAlias}\"). You need to have at least one item in \"columns\", \"with\" or \"extras\". If you need to select all columns, omit the \"columns\" key or set it to undefined.`,\n\t\t\t});\n\t\t}\n\n\t\tlet result;\n\n\t\twhere = and(joinOn, where);\n\n\t\tif (nestedQueryRelation) {\n\t\t\tlet field = sql`json_array(${\n\t\t\t\tsql.join(\n\t\t\t\t\tselection.map(({ field }) =>\n\t\t\t\t\t\tis(field, SQLiteColumn) ? sql.identifier(field.name) : is(field, SQL.Aliased) ? field.sql : field\n\t\t\t\t\t),\n\t\t\t\t\tsql`, `,\n\t\t\t\t)\n\t\t\t})`;\n\t\t\tif (is(nestedQueryRelation, Many)) {\n\t\t\t\tfield = sql`coalesce(json_group_array(${field}), json_array())`;\n\t\t\t}\n\t\t\tconst nestedSelection = [{\n\t\t\t\tdbKey: 'data',\n\t\t\t\ttsKey: 'data',\n\t\t\t\tfield: field.as('data'),\n\t\t\t\tisJson: true,\n\t\t\t\trelationTableTsKey: tableConfig.tsName,\n\t\t\t\tselection,\n\t\t\t}];\n\n\t\t\tconst needsSubquery = limit !== undefined || offset !== undefined || orderBy.length > 0;\n\n\t\t\tif (needsSubquery) {\n\t\t\t\tresult = this.buildSelectQuery({\n\t\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\t\tfields: {},\n\t\t\t\t\tfieldsFlat: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: [],\n\t\t\t\t\t\t\tfield: sql.raw('*'),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\twhere,\n\t\t\t\t\tlimit,\n\t\t\t\t\toffset,\n\t\t\t\t\torderBy,\n\t\t\t\t\tsetOperators: [],\n\t\t\t\t});\n\n\t\t\t\twhere = undefined;\n\t\t\t\tlimit = undefined;\n\t\t\t\toffset = undefined;\n\t\t\t\torderBy = undefined;\n\t\t\t} else {\n\t\t\t\tresult = aliasedTable(table, tableAlias);\n\t\t\t}\n\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: is(result, SQLiteTable) ? result : new Subquery(result, {}, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: nestedSelection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t} else {\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: selection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttableTsKey: tableConfig.tsName,\n\t\t\tsql: result,\n\t\t\tselection,\n\t\t};\n\t}\n}\n\nexport class SQLiteSyncDialect extends SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteSyncDialect';\n\n\tmigrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: SQLiteSession<'sync', unknown, Record, TablesRelationalConfig>,\n\t\tconfig?: string | MigrationConfig,\n\t): void {\n\t\tconst migrationsTable = config === undefined\n\t\t\t? '__drizzle_migrations'\n\t\t\t: typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\t\tconst migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric\n\t\t\t)\n\t\t`;\n\t\tsession.run(migrationTableCreate);\n\n\t\tconst dbMigrations = session.values<[number, string, string]>(\n\t\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t\t);\n\n\t\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\t\tsession.run(sql`BEGIN`);\n\n\t\ttry {\n\t\t\tfor (const migration of migrations) {\n\t\t\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\t\tsession.run(sql.raw(stmt));\n\t\t\t\t\t}\n\t\t\t\t\tsession.run(\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsession.run(sql`COMMIT`);\n\t\t} catch (e) {\n\t\t\tsession.run(sql`ROLLBACK`);\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class SQLiteAsyncDialect extends SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteAsyncDialect';\n\n\tasync migrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: SQLiteSession<'async', unknown, Record, TablesRelationalConfig>,\n\t\tconfig: string | MigrationConfig,\n\t): Promise {\n\t\tconst migrationsTable = typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: config.migrationsTable ?? '__drizzle_migrations';\n\n\t\tconst migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric\n\t\t\t)\n\t\t`;\n\t\tawait session.run(migrationTableCreate);\n\n\t\tconst dbMigrations = await session.values<[number, string, string]>(\n\t\t\tsql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,\n\t\t);\n\n\t\tconst lastDbMigration = dbMigrations[0] ?? undefined;\n\n\t\tawait session.transaction(async (tx) => {\n\t\t\tfor (const migration of migrations) {\n\t\t\t\tif (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {\n\t\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\t\tawait tx.run(sql.raw(stmt));\n\t\t\t\t\t}\n\t\t\t\t\tawait tx.run(\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/sql/index.ts';\n\nexport abstract class TypedQueryBuilder implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'TypedQueryBuilder';\n\n\tdeclare _: {\n\t\tselectedFields: TSelection;\n\t\tresult: TResult;\n\t};\n\n\t/** @internal */\n\tgetSelectedFields(): TSelection {\n\t\treturn this._.selectedFields;\n\t}\n\n\tabstract getSQL(): SQL;\n}\n", "import { entityKind, is } from '~/entity.ts';\nimport { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type {\n\tBuildSubquerySelection,\n\tGetSelectTableName,\n\tGetSelectTableSelection,\n\tJoinNullability,\n\tJoinType,\n\tSelectMode,\n\tSelectResult,\n\tSetOperator,\n} from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { SQL, View } from '~/sql/sql.ts';\nimport type { ColumnsSelection, Placeholder, Query, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteColumn } from '~/sqlite-core/columns/index.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLiteSession } from '~/sqlite-core/session.ts';\nimport type { SubqueryWithSelection } from '~/sqlite-core/subquery.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { Subquery, SubqueryConfig } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport {\n\tapplyMixins,\n\tgetTableColumns,\n\tgetTableLikeName,\n\thaveSameKeys,\n\torderSelectedFields,\n\ttype ValueOrArray,\n} from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport { SQLiteViewBase } from '../view-base.ts';\nimport type {\n\tAnySQLiteSelect,\n\tCreateSQLiteSelectFromBuilderMode,\n\tGetSQLiteSetOperators,\n\tSelectedFields,\n\tSetOperatorRightSelect,\n\tSQLiteCreateSetOperatorFn,\n\tSQLiteJoinFn,\n\tSQLiteSelectConfig,\n\tSQLiteSelectDynamic,\n\tSQLiteSelectExecute,\n\tSQLiteSelectHKT,\n\tSQLiteSelectHKTBase,\n\tSQLiteSelectPrepare,\n\tSQLiteSelectWithout,\n\tSQLiteSetOperatorExcludedMethods,\n\tSQLiteSetOperatorWithResult,\n} from './select.types.ts';\n\nexport class SQLiteSelectBuilder<\n\tTSelection extends SelectedFields | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTBuilderMode extends 'db' | 'qb' = 'db',\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSelectBuilder';\n\n\tprivate fields: TSelection;\n\tprivate session: SQLiteSession | undefined;\n\tprivate dialect: SQLiteDialect;\n\tprivate withList: Subquery[] | undefined;\n\tprivate distinct: boolean | undefined;\n\n\tconstructor(\n\t\tconfig: {\n\t\t\tfields: TSelection;\n\t\t\tsession: SQLiteSession | undefined;\n\t\t\tdialect: SQLiteDialect;\n\t\t\twithList?: Subquery[];\n\t\t\tdistinct?: boolean;\n\t\t},\n\t) {\n\t\tthis.fields = config.fields;\n\t\tthis.session = config.session;\n\t\tthis.dialect = config.dialect;\n\t\tthis.withList = config.withList;\n\t\tthis.distinct = config.distinct;\n\t}\n\n\tfrom(\n\t\tsource: TFrom,\n\t): CreateSQLiteSelectFromBuilderMode<\n\t\tTBuilderMode,\n\t\tGetSelectTableName,\n\t\tTResultType,\n\t\tTRunResult,\n\t\tTSelection extends undefined ? GetSelectTableSelection : TSelection,\n\t\tTSelection extends undefined ? 'single' : 'partial'\n\t> {\n\t\tconst isPartialSelect = !!this.fields;\n\n\t\tlet fields: SelectedFields;\n\t\tif (this.fields) {\n\t\t\tfields = this.fields;\n\t\t} else if (is(source, Subquery)) {\n\t\t\t// This is required to use the proxy handler to get the correct field values from the subquery\n\t\t\tfields = Object.fromEntries(\n\t\t\t\tObject.keys(source[SubqueryConfig].selection).map((\n\t\t\t\t\tkey,\n\t\t\t\t) => [key, source[key as unknown as keyof typeof source] as unknown as SelectedFields[string]]),\n\t\t\t);\n\t\t} else if (is(source, SQLiteViewBase)) {\n\t\t\tfields = source[ViewBaseConfig].selectedFields as SelectedFields;\n\t\t} else if (is(source, SQL)) {\n\t\t\tfields = {};\n\t\t} else {\n\t\t\tfields = getTableColumns(source);\n\t\t}\n\n\t\treturn new SQLiteSelectBase({\n\t\t\ttable: source,\n\t\t\tfields,\n\t\t\tisPartialSelect,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\twithList: this.withList,\n\t\t\tdistinct: this.distinct,\n\t\t}) as any;\n\t}\n}\n\nexport abstract class SQLiteSelectQueryBuilderBase<\n\tTHKT extends SQLiteSelectHKTBase,\n\tTTableName extends string | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTSelection extends ColumnsSelection,\n\tTSelectMode extends SelectMode,\n\tTNullabilityMap extends Record = TTableName extends string ? Record\n\t\t: {},\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTResult extends any[] = SelectResult[],\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection,\n> extends TypedQueryBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteSelectQueryBuilder';\n\n\toverride readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly tableName: TTableName;\n\t\treadonly resultType: TResultType;\n\t\treadonly runResult: TRunResult;\n\t\treadonly selection: TSelection;\n\t\treadonly selectMode: TSelectMode;\n\t\treadonly nullabilityMap: TNullabilityMap;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TResult;\n\t\treadonly selectedFields: TSelectedFields;\n\t};\n\n\t/** @internal */\n\tconfig: SQLiteSelectConfig;\n\tprotected joinsNotNullableMap: Record;\n\tprivate tableName: string | undefined;\n\tprivate isPartialSelect: boolean;\n\tprotected session: SQLiteSession | undefined;\n\tprotected dialect: SQLiteDialect;\n\n\tconstructor(\n\t\t{ table, fields, isPartialSelect, session, dialect, withList, distinct }: {\n\t\t\ttable: SQLiteSelectConfig['table'];\n\t\t\tfields: SQLiteSelectConfig['fields'];\n\t\t\tisPartialSelect: boolean;\n\t\t\tsession: SQLiteSession | undefined;\n\t\t\tdialect: SQLiteDialect;\n\t\t\twithList: Subquery[] | undefined;\n\t\t\tdistinct: boolean | undefined;\n\t\t},\n\t) {\n\t\tsuper();\n\t\tthis.config = {\n\t\t\twithList,\n\t\t\ttable,\n\t\t\tfields: { ...fields },\n\t\t\tdistinct,\n\t\t\tsetOperators: [],\n\t\t};\n\t\tthis.isPartialSelect = isPartialSelect;\n\t\tthis.session = session;\n\t\tthis.dialect = dialect;\n\t\tthis._ = {\n\t\t\tselectedFields: fields as TSelectedFields,\n\t\t} as this['_'];\n\t\tthis.tableName = getTableLikeName(table);\n\t\tthis.joinsNotNullableMap = typeof this.tableName === 'string' ? { [this.tableName]: true } : {};\n\t}\n\n\tprivate createJoin(\n\t\tjoinType: TJoinType,\n\t): SQLiteJoinFn {\n\t\treturn (\n\t\t\ttable: SQLiteTable | Subquery | SQLiteViewBase | SQL,\n\t\t\ton: ((aliases: TSelection) => SQL | undefined) | SQL | undefined,\n\t\t) => {\n\t\t\tconst baseTableName = this.tableName;\n\t\t\tconst tableName = getTableLikeName(table);\n\n\t\t\tif (typeof tableName === 'string' && this.config.joins?.some((join) => join.alias === tableName)) {\n\t\t\t\tthrow new Error(`Alias \"${tableName}\" is already used in this query`);\n\t\t\t}\n\n\t\t\tif (!this.isPartialSelect) {\n\t\t\t\t// If this is the first join and this is not a partial select and we're not selecting from raw SQL, \"move\" the fields from the main table to the nested object\n\t\t\t\tif (Object.keys(this.joinsNotNullableMap).length === 1 && typeof baseTableName === 'string') {\n\t\t\t\t\tthis.config.fields = {\n\t\t\t\t\t\t[baseTableName]: this.config.fields,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (typeof tableName === 'string' && !is(table, SQL)) {\n\t\t\t\t\tconst selection = is(table, Subquery)\n\t\t\t\t\t\t? table[SubqueryConfig].selection\n\t\t\t\t\t\t: is(table, View)\n\t\t\t\t\t\t? table[ViewBaseConfig].selectedFields\n\t\t\t\t\t\t: table[Table.Symbol.Columns];\n\t\t\t\t\tthis.config.fields[tableName] = selection;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof on === 'function') {\n\t\t\t\ton = on(\n\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\tthis.config.fields,\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as TSelection,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!this.config.joins) {\n\t\t\t\tthis.config.joins = [];\n\t\t\t}\n\t\t\tthis.config.joins.push({ on, table, joinType, alias: tableName });\n\n\t\t\tif (typeof tableName === 'string') {\n\t\t\t\tswitch (joinType) {\n\t\t\t\t\tcase 'left': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'inner': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'full': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this as any;\n\t\t};\n\t}\n\n\t/**\n\t * Executes a `left join` operation by adding another table to the current query.\n\t *\n\t * Calling this method associates each row of the table with the corresponding row from the joined table, if a match is found. If no matching row exists, it sets all columns of the joined table to null.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#left-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User; pets: Pet | null }[] = await db.select()\n\t * .from(users)\n\t * .leftJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number; petId: number | null }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .leftJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tleftJoin = this.createJoin('left');\n\n\t/**\n\t * Executes a `right join` operation by adding another table to the current query.\n\t *\n\t * Calling this method associates each row of the joined table with the corresponding row from the main table, if a match is found. If no matching row exists, it sets all columns of the main table to null.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#right-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User | null; pets: Pet }[] = await db.select()\n\t * .from(users)\n\t * .rightJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number | null; petId: number }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .rightJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\trightJoin = this.createJoin('right');\n\n\t/**\n\t * Executes an `inner join` operation, creating a new table by combining rows from two tables that have matching values.\n\t *\n\t * Calling this method retrieves rows that have corresponding entries in both joined tables. Rows without matching entries in either table are excluded, resulting in a table that includes only matching pairs.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#inner-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User; pets: Pet }[] = await db.select()\n\t * .from(users)\n\t * .innerJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number; petId: number }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .innerJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tinnerJoin = this.createJoin('inner');\n\n\t/**\n\t * Executes a `full join` operation by combining rows from two tables into a new table.\n\t *\n\t * Calling this method retrieves all rows from both main and joined tables, merging rows with matching values and filling in `null` for non-matching columns.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#full-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User | null; pets: Pet | null }[] = await db.select()\n\t * .from(users)\n\t * .fullJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number | null; petId: number | null }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .fullJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tfullJoin = this.createJoin('full');\n\n\tprivate createSetOperator(\n\t\ttype: SetOperator,\n\t\tisAll: boolean,\n\t): >(\n\t\trightSelection:\n\t\t\t| ((setOperators: GetSQLiteSetOperators) => SetOperatorRightSelect)\n\t\t\t| SetOperatorRightSelect,\n\t) => SQLiteSelectWithout<\n\t\tthis,\n\t\tTDynamic,\n\t\tSQLiteSetOperatorExcludedMethods,\n\t\ttrue\n\t> {\n\t\treturn (rightSelection) => {\n\t\t\tconst rightSelect = (typeof rightSelection === 'function'\n\t\t\t\t? rightSelection(getSQLiteSetOperators())\n\t\t\t\t: rightSelection) as TypedQueryBuilder<\n\t\t\t\t\tany,\n\t\t\t\t\tTResult\n\t\t\t\t>;\n\n\t\t\tif (!haveSameKeys(this.getSelectedFields(), rightSelect.getSelectedFields())) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set operator error (union / intersect / except): selected fields are not the same or are in a different order',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.config.setOperators.push({ type, isAll, rightSelect });\n\t\t\treturn this as any;\n\t\t};\n\t}\n\n\t/**\n\t * Adds `union` set operator to the query.\n\t *\n\t * Calling this method will combine the result sets of the `select` statements and remove any duplicate rows that appear across them.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#union}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all unique names from customers and users tables\n\t * await db.select({ name: users.name })\n\t * .from(users)\n\t * .union(\n\t * db.select({ name: customers.name }).from(customers)\n\t * );\n\t * // or\n\t * import { union } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await union(\n\t * db.select({ name: users.name }).from(users),\n\t * db.select({ name: customers.name }).from(customers)\n\t * );\n\t * ```\n\t */\n\tunion = this.createSetOperator('union', false);\n\n\t/**\n\t * Adds `union all` set operator to the query.\n\t *\n\t * Calling this method will combine the result-set of the `select` statements and keep all duplicate rows that appear across them.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#union-all}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all transaction ids from both online and in-store sales\n\t * await db.select({ transaction: onlineSales.transactionId })\n\t * .from(onlineSales)\n\t * .unionAll(\n\t * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n\t * );\n\t * // or\n\t * import { unionAll } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await unionAll(\n\t * db.select({ transaction: onlineSales.transactionId }).from(onlineSales),\n\t * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n\t * );\n\t * ```\n\t */\n\tunionAll = this.createSetOperator('union', true);\n\n\t/**\n\t * Adds `intersect` set operator to the query.\n\t *\n\t * Calling this method will retain only the rows that are present in both result sets and eliminate duplicates.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#intersect}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select course names that are offered in both departments A and B\n\t * await db.select({ courseName: depA.courseName })\n\t * .from(depA)\n\t * .intersect(\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * // or\n\t * import { intersect } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await intersect(\n\t * db.select({ courseName: depA.courseName }).from(depA),\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * ```\n\t */\n\tintersect = this.createSetOperator('intersect', false);\n\n\t/**\n\t * Adds `except` set operator to the query.\n\t *\n\t * Calling this method will retrieve all unique rows from the left query, except for the rows that are present in the result set of the right query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#except}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all courses offered in department A but not in department B\n\t * await db.select({ courseName: depA.courseName })\n\t * .from(depA)\n\t * .except(\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * // or\n\t * import { except } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await except(\n\t * db.select({ courseName: depA.courseName }).from(depA),\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * ```\n\t */\n\texcept = this.createSetOperator('except', false);\n\n\t/** @internal */\n\taddSetOperators(setOperators: SQLiteSelectConfig['setOperators']): SQLiteSelectWithout<\n\t\tthis,\n\t\tTDynamic,\n\t\tSQLiteSetOperatorExcludedMethods,\n\t\ttrue\n\t> {\n\t\tthis.config.setOperators.push(...setOperators);\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `where` clause to the query.\n\t *\n\t * Calling this method will select only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#filtering}\n\t *\n\t * @param where the `where` clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be selected.\n\t *\n\t * ```ts\n\t * // Select all cars with green color\n\t * await db.select().from(cars).where(eq(cars.color, 'green'));\n\t * // or\n\t * await db.select().from(cars).where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Select all BMW cars with a green color\n\t * await db.select().from(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Select all cars with the green or blue color\n\t * await db.select().from(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(\n\t\twhere: ((aliases: TSelection) => SQL | undefined) | SQL | undefined,\n\t): SQLiteSelectWithout {\n\t\tif (typeof where === 'function') {\n\t\t\twhere = where(\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t}\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `having` clause to the query.\n\t *\n\t * Calling this method will select only those rows that fulfill a specified condition. It is typically used with aggregate functions to filter the aggregated data based on a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#aggregations}\n\t *\n\t * @param having the `having` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all brands with more than one car\n\t * await db.select({\n\t * \tbrand: cars.brand,\n\t * \tcount: sql`cast(count(${cars.id}) as int)`,\n\t * })\n\t * .from(cars)\n\t * .groupBy(cars.brand)\n\t * .having(({ count }) => gt(count, 1));\n\t * ```\n\t */\n\thaving(\n\t\thaving: ((aliases: this['_']['selection']) => SQL | undefined) | SQL | undefined,\n\t): SQLiteSelectWithout {\n\t\tif (typeof having === 'function') {\n\t\t\thaving = having(\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t}\n\t\tthis.config.having = having;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `group by` clause to the query.\n\t *\n\t * Calling this method will group rows that have the same values into summary rows, often used for aggregation purposes.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#aggregations}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Group and count people by their last names\n\t * await db.select({\n\t * lastName: people.lastName,\n\t * count: sql`cast(count(*) as int)`\n\t * })\n\t * .from(people)\n\t * .groupBy(people.lastName);\n\t * ```\n\t */\n\tgroupBy(\n\t\tbuilder: (aliases: this['_']['selection']) => ValueOrArray,\n\t): SQLiteSelectWithout;\n\tgroupBy(...columns: (SQLiteColumn | SQL)[]): SQLiteSelectWithout;\n\tgroupBy(\n\t\t...columns:\n\t\t\t| [(aliases: this['_']['selection']) => ValueOrArray]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteSelectWithout {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst groupBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t\tthis.config.groupBy = Array.isArray(groupBy) ? groupBy : [groupBy];\n\t\t} else {\n\t\t\tthis.config.groupBy = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `order by` clause to the query.\n\t *\n\t * Calling this method will sort the result-set in ascending or descending order. By default, the sort order is ascending.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#order-by}\n\t *\n\t * @example\n\t *\n\t * ```\n\t * // Select cars ordered by year\n\t * await db.select().from(cars).orderBy(cars.year);\n\t * ```\n\t *\n\t * You can specify whether results are in ascending or descending order with the `asc()` and `desc()` operators.\n\t *\n\t * ```ts\n\t * // Select cars ordered by year in descending order\n\t * await db.select().from(cars).orderBy(desc(cars.year));\n\t *\n\t * // Select cars ordered by year and price\n\t * await db.select().from(cars).orderBy(asc(cars.year), desc(cars.price));\n\t * ```\n\t */\n\torderBy(\n\t\tbuilder: (aliases: this['_']['selection']) => ValueOrArray,\n\t): SQLiteSelectWithout;\n\torderBy(...columns: (SQLiteColumn | SQL)[]): SQLiteSelectWithout;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(aliases: this['_']['selection']) => ValueOrArray]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteSelectWithout {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\n\t\t\tif (this.config.setOperators.length > 0) {\n\t\t\t\tthis.config.setOperators.at(-1)!.orderBy = orderByArray;\n\t\t\t} else {\n\t\t\t\tthis.config.orderBy = orderByArray;\n\t\t\t}\n\t\t} else {\n\t\t\tconst orderByArray = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\n\t\t\tif (this.config.setOperators.length > 0) {\n\t\t\t\tthis.config.setOperators.at(-1)!.orderBy = orderByArray;\n\t\t\t} else {\n\t\t\t\tthis.config.orderBy = orderByArray;\n\t\t\t}\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `limit` clause to the query.\n\t *\n\t * Calling this method will set the maximum number of rows that will be returned by this query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#limit--offset}\n\t *\n\t * @param limit the `limit` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Get the first 10 people from this query.\n\t * await db.select().from(people).limit(10);\n\t * ```\n\t */\n\tlimit(limit: number | Placeholder): SQLiteSelectWithout {\n\t\tif (this.config.setOperators.length > 0) {\n\t\t\tthis.config.setOperators.at(-1)!.limit = limit;\n\t\t} else {\n\t\t\tthis.config.limit = limit;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `offset` clause to the query.\n\t *\n\t * Calling this method will skip a number of rows when returning results from this query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#limit--offset}\n\t *\n\t * @param offset the `offset` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Get the 10th-20th people from this query.\n\t * await db.select().from(people).offset(10).limit(10);\n\t * ```\n\t */\n\toffset(offset: number | Placeholder): SQLiteSelectWithout {\n\t\tif (this.config.setOperators.length > 0) {\n\t\t\tthis.config.setOperators.at(-1)!.offset = offset;\n\t\t} else {\n\t\t\tthis.config.offset = offset;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildSelectQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\tas(\n\t\talias: TAlias,\n\t): SubqueryWithSelection {\n\t\treturn new Proxy(\n\t\t\tnew Subquery(this.getSQL(), this.config.fields, alias),\n\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t) as SubqueryWithSelection;\n\t}\n\n\t/** @internal */\n\toverride getSelectedFields(): this['_']['selectedFields'] {\n\t\treturn new Proxy(\n\t\t\tthis.config.fields,\n\t\t\tnew SelectionProxyHandler({ alias: this.tableName, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t) as this['_']['selectedFields'];\n\t}\n\n\t$dynamic(): SQLiteSelectDynamic {\n\t\treturn this;\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface SQLiteSelectBase<\n\tTTableName extends string | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTSelection extends ColumnsSelection,\n\tTSelectMode extends SelectMode = 'single',\n\tTNullabilityMap extends Record = TTableName extends string ? Record\n\t\t: {},\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTResult extends any[] = SelectResult[],\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection,\n> extends\n\tSQLiteSelectQueryBuilderBase<\n\t\tSQLiteSelectHKT,\n\t\tTTableName,\n\t\tTResultType,\n\t\tTRunResult,\n\t\tTSelection,\n\t\tTSelectMode,\n\t\tTNullabilityMap,\n\t\tTDynamic,\n\t\tTExcludedMethods,\n\t\tTResult,\n\t\tTSelectedFields\n\t>,\n\tQueryPromise\n{}\n\nexport class SQLiteSelectBase<\n\tTTableName extends string | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTSelection,\n\tTSelectMode extends SelectMode = 'single',\n\tTNullabilityMap extends Record = TTableName extends string ? Record\n\t\t: {},\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTResult = SelectResult[],\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection,\n> extends SQLiteSelectQueryBuilderBase<\n\tSQLiteSelectHKT,\n\tTTableName,\n\tTResultType,\n\tTRunResult,\n\tTSelection,\n\tTSelectMode,\n\tTNullabilityMap,\n\tTDynamic,\n\tTExcludedMethods,\n\tTResult,\n\tTSelectedFields\n> implements RunnableQuery, SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQLiteSelect';\n\n\t/** @internal */\n\t_prepare(isOneTimeQuery = true): SQLiteSelectPrepare {\n\t\tif (!this.session) {\n\t\t\tthrow new Error('Cannot execute a query on a query builder. Please use a database instance instead.');\n\t\t}\n\t\tconst fieldsList = orderSelectedFields(this.config.fields);\n\t\tconst query = this.session[isOneTimeQuery ? 'prepareOneTimeQuery' : 'prepareQuery'](\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tfieldsList,\n\t\t\t'all',\n\t\t);\n\t\tquery.joinsNotNullableMap = this.joinsNotNullableMap;\n\t\treturn query as ReturnType;\n\t}\n\n\tprepare(): SQLiteSelectPrepare {\n\t\treturn this._prepare(false);\n\t}\n\n\trun: ReturnType['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\tasync execute(): Promise> {\n\t\treturn this.all() as SQLiteSelectExecute;\n\t}\n}\n\napplyMixins(SQLiteSelectBase, [QueryPromise]);\n\nfunction createSetOperator(type: SetOperator, isAll: boolean): SQLiteCreateSetOperatorFn {\n\treturn (leftSelect, rightSelect, ...restSelects) => {\n\t\tconst setOperators = [rightSelect, ...restSelects].map((select) => ({\n\t\t\ttype,\n\t\t\tisAll,\n\t\t\trightSelect: select as AnySQLiteSelect,\n\t\t}));\n\n\t\tfor (const setOperator of setOperators) {\n\t\t\tif (!haveSameKeys((leftSelect as any).getSelectedFields(), setOperator.rightSelect.getSelectedFields())) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set operator error (union / intersect / except): selected fields are not the same or are in a different order',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn (leftSelect as AnySQLiteSelect).addSetOperators(setOperators) as any;\n\t};\n}\n\nconst getSQLiteSetOperators = () => ({\n\tunion,\n\tunionAll,\n\tintersect,\n\texcept,\n});\n\n/**\n * Adds `union` set operator to the query.\n *\n * Calling this method will combine the result sets of the `select` statements and remove any duplicate rows that appear across them.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#union}\n *\n * @example\n *\n * ```ts\n * // Select all unique names from customers and users tables\n * import { union } from 'drizzle-orm/sqlite-core'\n *\n * await union(\n * db.select({ name: users.name }).from(users),\n * db.select({ name: customers.name }).from(customers)\n * );\n * // or\n * await db.select({ name: users.name })\n * .from(users)\n * .union(\n * db.select({ name: customers.name }).from(customers)\n * );\n * ```\n */\nexport const union = createSetOperator('union', false);\n\n/**\n * Adds `union all` set operator to the query.\n *\n * Calling this method will combine the result-set of the `select` statements and keep all duplicate rows that appear across them.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#union-all}\n *\n * @example\n *\n * ```ts\n * // Select all transaction ids from both online and in-store sales\n * import { unionAll } from 'drizzle-orm/sqlite-core'\n *\n * await unionAll(\n * db.select({ transaction: onlineSales.transactionId }).from(onlineSales),\n * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n * );\n * // or\n * await db.select({ transaction: onlineSales.transactionId })\n * .from(onlineSales)\n * .unionAll(\n * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n * );\n * ```\n */\nexport const unionAll = createSetOperator('union', true);\n\n/**\n * Adds `intersect` set operator to the query.\n *\n * Calling this method will retain only the rows that are present in both result sets and eliminate duplicates.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#intersect}\n *\n * @example\n *\n * ```ts\n * // Select course names that are offered in both departments A and B\n * import { intersect } from 'drizzle-orm/sqlite-core'\n *\n * await intersect(\n * db.select({ courseName: depA.courseName }).from(depA),\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * // or\n * await db.select({ courseName: depA.courseName })\n * .from(depA)\n * .intersect(\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * ```\n */\nexport const intersect = createSetOperator('intersect', false);\n\n/**\n * Adds `except` set operator to the query.\n *\n * Calling this method will retrieve all unique rows from the left query, except for the rows that are present in the result set of the right query.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#except}\n *\n * @example\n *\n * ```ts\n * // Select all courses offered in department A but not in department B\n * import { except } from 'drizzle-orm/sqlite-core'\n *\n * await except(\n * db.select({ courseName: depA.courseName }).from(depA),\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * // or\n * await db.select({ courseName: depA.courseName })\n * .from(depA)\n * .except(\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * ```\n */\nexport const except = createSetOperator('except', false);\n", "import { entityKind } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { WithSubqueryWithSelection } from '~/sqlite-core/subquery.ts';\nimport { SQLiteSelectBuilder } from './select.ts';\nimport type { SelectedFields } from './select.types.ts';\nimport type { ColumnsSelection } from '~/sql/sql.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\n\nexport class QueryBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteQueryBuilder';\n\n\tprivate dialect: SQLiteSyncDialect | undefined;\n\n\t$with(alias: TAlias) {\n\t\tconst queryBuilder = this;\n\n\t\treturn {\n\t\t\tas(\n\t\t\t\tqb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder),\n\t\t\t): WithSubqueryWithSelection {\n\t\t\t\tif (typeof qb === 'function') {\n\t\t\t\t\tqb = qb(queryBuilder);\n\t\t\t\t}\n\n\t\t\t\treturn new Proxy(\n\t\t\t\t\tnew WithSubquery(qb.getSQL(), qb.getSelectedFields() as SelectedFields, alias, true),\n\t\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t\t) as WithSubqueryWithSelection;\n\t\t\t},\n\t\t};\n\t}\n\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\tfunction select(): SQLiteSelectBuilder;\n\t\tfunction select(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder;\n\t\tfunction select(\n\t\t\tfields?: TSelection,\n\t\t): SQLiteSelectBuilder {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\twithList: queries,\n\t\t\t});\n\t\t}\n\n\t\tfunction selectDistinct(): SQLiteSelectBuilder;\n\t\tfunction selectDistinct(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder;\n\t\tfunction selectDistinct(\n\t\t\tfields?: TSelection,\n\t\t): SQLiteSelectBuilder {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\treturn { select, selectDistinct };\n\t}\n\n\tselect(): SQLiteSelectBuilder;\n\tselect(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder;\n\tselect(\n\t\tfields?: TSelection,\n\t): SQLiteSelectBuilder {\n\t\treturn new SQLiteSelectBuilder({ fields: fields ?? undefined, session: undefined, dialect: this.getDialect() });\n\t}\n\n\tselectDistinct(): SQLiteSelectBuilder;\n\tselectDistinct(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder;\n\tselectDistinct(\n\t\tfields?: TSelection,\n\t): SQLiteSelectBuilder {\n\t\treturn new SQLiteSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: undefined,\n\t\t\tdialect: this.getDialect(),\n\t\t\tdistinct: true,\n\t\t});\n\t}\n\n\t// Lazy load dialect to avoid circular dependency\n\tprivate getDialect() {\n\t\tif (!this.dialect) {\n\t\t\tthis.dialect = new SQLiteSyncDialect();\n\t\t}\n\n\t\treturn this.dialect;\n\t}\n}\n", "import type { GetColumnData } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SelectResultFields } from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { type DrizzleTypeError, mapUpdateSet, orderSelectedFields, type UpdateSet } from '~/utils.ts';\nimport type { SQLiteColumn } from '../columns/common.ts';\nimport type { SelectedFields, SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface SQLiteUpdateConfig {\n\twhere?: SQL | undefined;\n\tset: UpdateSet;\n\ttable: SQLiteTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type SQLiteUpdateSetSource =\n\t& {\n\t\t[Key in keyof TTable['_']['columns']]?:\n\t\t\t| GetColumnData\n\t\t\t| SQL;\n\t}\n\t& {};\n\nexport class SQLiteUpdateBuilder<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprotected table: TTable,\n\t\tprotected session: SQLiteSession,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tset(values: SQLiteUpdateSetSource): SQLiteUpdateBase {\n\t\treturn new SQLiteUpdateBase(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t);\n\t}\n}\n\nexport type SQLiteUpdateWithout<\n\tT extends AnySQLiteUpdate,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tSQLiteUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tT['_']['returning'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type SQLiteUpdateReturningAll = SQLiteUpdateWithout<\n\tSQLiteUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteUpdateReturning<\n\tT extends AnySQLiteUpdate,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFields,\n> = SQLiteUpdateWithout<\n\tSQLiteUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['resultType'],\n\t\tT['_']['runResult'],\n\t\tSelectResultFields,\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteUpdateExecute = T['_']['returning'] extends undefined ? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteUpdatePrepare = SQLitePreparedQuery<\n\t{\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'][];\n\t\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'];\n\t\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t\t: any[][];\n\t\texecute: SQLiteUpdateExecute;\n\t}\n>;\n\nexport type SQLiteUpdateDynamic = SQLiteUpdate<\n\tT['_']['table'],\n\tT['_']['resultType'],\n\tT['_']['runResult'],\n\tT['_']['returning']\n>;\n\nexport type SQLiteUpdate<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = any,\n\tTReturning extends Record | undefined = Record | undefined,\n> = SQLiteUpdateBase;\n\ntype AnySQLiteUpdate = SQLiteUpdateBase;\n\nexport interface SQLiteUpdateBase<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends SQLWrapper, QueryPromise {\n\treadonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly table: TTable;\n\t\treadonly resultType: TResultType;\n\t\treadonly runResult: TRunResult;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteUpdateBase<\n\tTTable extends SQLiteTable = SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise\n\timplements RunnableQuery, SQLWrapper\n{\n\tstatic readonly [entityKind]: string = 'SQLiteUpdate';\n\n\t/** @internal */\n\tconfig: SQLiteUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: SQLiteSession,\n\t\tprivate dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList };\n\t}\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): SQLiteUpdateWithout {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update#update-with-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Update all cars with the green color and return all fields\n\t * const updatedCars: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Update all cars with the green color and return only their id and brand fields\n\t * const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): SQLiteUpdateReturningAll;\n\treturning(\n\t\tfields: TSelectedFields,\n\t): SQLiteUpdateReturning;\n\treturning(\n\t\tfields: SelectedFields = this.config.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteUpdateWithout {\n\t\tthis.config.returning = orderSelectedFields(fields);\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\t/** @internal */\n\t_prepare(isOneTimeQuery = true): SQLiteUpdatePrepare {\n\t\treturn this.session[isOneTimeQuery ? 'prepareOneTimeQuery' : 'prepareQuery'](\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t) as SQLiteUpdatePrepare;\n\t}\n\n\tprepare(): SQLiteUpdatePrepare {\n\t\treturn this._prepare(false);\n\t}\n\n\trun: ReturnType['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\toverride async execute(): Promise> {\n\t\treturn (this.config.returning ? this.all() : this.run()) as SQLiteUpdateExecute;\n\t}\n\n\t$dynamic(): SQLiteUpdateDynamic {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport {\n\ttype BuildQueryResult,\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tmapRelationalRow,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Query, QueryWithTypings, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { KnownKeysOnly } from '~/utils.ts';\nimport type { SQLiteDialect } from '../dialect.ts';\nimport type { PreparedQueryConfig, SQLitePreparedQuery, SQLiteSession } from '../session.ts';\nimport type { SQLiteTable } from '../table.ts';\n\nexport type SQLiteRelationalQueryKind = TMode extends 'async'\n\t? SQLiteRelationalQuery\n\t: SQLiteSyncRelationalQuery;\n\nexport class RelationalQueryBuilder<\n\tTMode extends 'sync' | 'async',\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n\tTFields extends TableRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteAsyncRelationalQueryBuilder';\n\n\tconstructor(\n\t\tprotected mode: TMode,\n\t\tprotected fullSchema: Record,\n\t\tprotected schema: TSchema,\n\t\tprotected tableNamesMap: Record,\n\t\tprotected table: SQLiteTable,\n\t\tprotected tableConfig: TableRelationalConfig,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprotected session: SQLiteSession<'async', unknown, TFullSchema, TSchema>,\n\t) {}\n\n\tfindMany>(\n\t\tconfig?: KnownKeysOnly>,\n\t): SQLiteRelationalQueryKind[]> {\n\t\treturn (this.mode === 'sync'\n\t\t\t? new SQLiteSyncRelationalQuery(\n\t\t\t\tthis.fullSchema,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.tableNamesMap,\n\t\t\t\tthis.table,\n\t\t\t\tthis.tableConfig,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.session,\n\t\t\t\tconfig ? (config as DBQueryConfig<'many', true>) : {},\n\t\t\t\t'many',\n\t\t\t)\n\t\t\t: new SQLiteRelationalQuery(\n\t\t\t\tthis.fullSchema,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.tableNamesMap,\n\t\t\t\tthis.table,\n\t\t\t\tthis.tableConfig,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.session,\n\t\t\t\tconfig ? (config as DBQueryConfig<'many', true>) : {},\n\t\t\t\t'many',\n\t\t\t)) as SQLiteRelationalQueryKind[]>;\n\t}\n\n\tfindFirst, 'limit'>>(\n\t\tconfig?: KnownKeysOnly, 'limit'>>,\n\t): SQLiteRelationalQueryKind | undefined> {\n\t\treturn (this.mode === 'sync'\n\t\t\t? new SQLiteSyncRelationalQuery(\n\t\t\t\tthis.fullSchema,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.tableNamesMap,\n\t\t\t\tthis.table,\n\t\t\t\tthis.tableConfig,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.session,\n\t\t\t\tconfig ? { ...(config as DBQueryConfig<'many', true> | undefined), limit: 1 } : { limit: 1 },\n\t\t\t\t'first',\n\t\t\t)\n\t\t\t: new SQLiteRelationalQuery(\n\t\t\t\tthis.fullSchema,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.tableNamesMap,\n\t\t\t\tthis.table,\n\t\t\t\tthis.tableConfig,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.session,\n\t\t\t\tconfig ? { ...(config as DBQueryConfig<'many', true> | undefined), limit: 1 } : { limit: 1 },\n\t\t\t\t'first',\n\t\t\t)) as SQLiteRelationalQueryKind | undefined>;\n\t}\n}\n\nexport class SQLiteRelationalQuery extends QueryPromise\n\timplements RunnableQuery, SQLWrapper\n{\n\tstatic readonly [entityKind]: string = 'SQLiteAsyncRelationalQuery';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly type: TType;\n\t\treadonly result: TResult;\n\t};\n\n\t/** @internal */\n\tmode: 'many' | 'first';\n\n\tconstructor(\n\t\tprivate fullSchema: Record,\n\t\tprivate schema: TablesRelationalConfig,\n\t\tprivate tableNamesMap: Record,\n\t\tprivate table: SQLiteTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: SQLiteDialect,\n\t\tprivate session: SQLiteSession<'sync' | 'async', unknown, Record, TablesRelationalConfig>,\n\t\tprivate config: DBQueryConfig<'many', true> | true,\n\t\tmode: 'many' | 'first',\n\t) {\n\t\tsuper();\n\t\tthis.mode = mode;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildRelationalQuery({\n\t\t\tfullSchema: this.fullSchema,\n\t\t\tschema: this.schema,\n\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\ttable: this.table,\n\t\t\ttableConfig: this.tableConfig,\n\t\t\tqueryConfig: this.config,\n\t\t\ttableAlias: this.tableConfig.tsName,\n\t\t}).sql as SQL;\n\t}\n\n\t/** @internal */\n\t_prepare(\n\t\tisOneTimeQuery = false,\n\t): SQLitePreparedQuery {\n\t\tconst { query, builtQuery } = this._toSQL();\n\n\t\treturn this.session[isOneTimeQuery ? 'prepareOneTimeQuery' : 'prepareQuery'](\n\t\t\tbuiltQuery,\n\t\t\tundefined,\n\t\t\tthis.mode === 'first' ? 'get' : 'all',\n\t\t\t(rawRows, mapColumnValue) => {\n\t\t\t\tconst rows = rawRows.map((row) =>\n\t\t\t\t\tmapRelationalRow(this.schema, this.tableConfig, row, query.selection, mapColumnValue)\n\t\t\t\t);\n\t\t\t\tif (this.mode === 'first') {\n\t\t\t\t\treturn rows[0] as TResult;\n\t\t\t\t}\n\t\t\t\treturn rows as TResult;\n\t\t\t},\n\t\t) as SQLitePreparedQuery;\n\t}\n\n\tprepare(): SQLitePreparedQuery {\n\t\treturn this._prepare(false);\n\t}\n\n\tprivate _toSQL(): { query: BuildRelationalQueryResult; builtQuery: QueryWithTypings } {\n\t\tconst query = this.dialect.buildRelationalQuery({\n\t\t\tfullSchema: this.fullSchema,\n\t\t\tschema: this.schema,\n\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\ttable: this.table,\n\t\t\ttableConfig: this.tableConfig,\n\t\t\tqueryConfig: this.config,\n\t\t\ttableAlias: this.tableConfig.tsName,\n\t\t});\n\n\t\tconst builtQuery = this.dialect.sqlToQuery(query.sql as SQL);\n\n\t\treturn { query, builtQuery };\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this._toSQL().builtQuery;\n\t}\n\n\t/** @internal */\n\texecuteRaw(): TResult {\n\t\tif (this.mode === 'first') {\n\t\t\treturn this._prepare(false).get() as TResult;\n\t\t}\n\t\treturn this._prepare(false).all() as TResult;\n\t}\n\n\toverride async execute(): Promise {\n\t\treturn this.executeRaw();\n\t}\n}\n\nexport class SQLiteSyncRelationalQuery extends SQLiteRelationalQuery<'sync', TResult> {\n\tstatic readonly [entityKind]: string = 'SQLiteSyncRelationalQuery';\n\n\tsync(): TResult {\n\t\treturn this.executeRaw();\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/index.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { SQLiteAsyncDialect } from '../dialect.ts';\n\ntype SQLiteRawAction = 'all' | 'get' | 'values' | 'run';\nexport interface SQLiteRawConfig {\n\taction: SQLiteRawAction;\n}\n\nexport interface SQLiteRaw\n\textends QueryPromise, RunnableQuery, SQLWrapper, PreparedQuery\n{}\n\nexport class SQLiteRaw extends QueryPromise\n\timplements RunnableQuery, SQLWrapper, PreparedQuery\n{\n\tstatic readonly [entityKind]: string = 'SQLiteRaw';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly result: TResult;\n\t};\n\n\t/** @internal */\n\tconfig: SQLiteRawConfig;\n\n\tconstructor(\n\t\tpublic execute: () => Promise,\n\t\t/** @internal */\n\t\tpublic getSQL: () => SQL,\n\t\taction: SQLiteRawAction,\n\t\tprivate dialect: SQLiteAsyncDialect,\n\t\tprivate mapBatchResult: (result: unknown) => unknown,\n\t) {\n\t\tsuper();\n\t\tthis.config = { action };\n\t}\n\n\tgetQuery() {\n\t\treturn { ...this.dialect.sqlToQuery(this.getSQL()), method: this.config.action };\n\t}\n\n\tmapResult(result: unknown, isFromBatch?: boolean) {\n\t\treturn isFromBatch ? this.mapBatchResult(result) : result;\n\t}\n\n\t_prepare(): PreparedQuery {\n\t\treturn this;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { ExtractTablesWithRelations, RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { ColumnsSelection, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport {\n\tQueryBuilder,\n\tSQLiteDeleteBase,\n\tSQLiteInsertBuilder,\n\tSQLiteSelectBuilder,\n\tSQLiteUpdateBuilder,\n} from '~/sqlite-core/query-builders/index.ts';\nimport type {\n\tDBResult,\n\tResult,\n\tSQLiteSession,\n\tSQLiteTransaction,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport type { DrizzleTypeError } from '~/utils.ts';\nimport { RelationalQueryBuilder } from './query-builders/query.ts';\nimport { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFields } from './query-builders/select.types.ts';\nimport type { WithSubqueryWithSelection } from './subquery.ts';\n\nexport class BaseSQLiteDatabase<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record = Record,\n\tTSchema extends TablesRelationalConfig = ExtractTablesWithRelations,\n> {\n\tstatic readonly [entityKind]: string = 'BaseSQLiteDatabase';\n\n\tdeclare readonly _: {\n\t\treadonly schema: TSchema | undefined;\n\t\treadonly tableNamesMap: Record;\n\t};\n\n\tquery: TFullSchema extends Record\n\t\t? DrizzleTypeError<'Seems like the schema generic is missing - did you forget to add it to your DB type?'>\n\t\t: {\n\t\t\t[K in keyof TSchema]: RelationalQueryBuilder;\n\t\t};\n\n\tconstructor(\n\t\tprivate resultKind: TResultKind,\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t\t/** @internal */\n\t\treadonly session: SQLiteSession,\n\t\tschema: RelationalSchemaConfig | undefined,\n\t) {\n\t\tthis._ = schema\n\t\t\t? { schema: schema.schema, tableNamesMap: schema.tableNamesMap }\n\t\t\t: { schema: undefined, tableNamesMap: {} };\n\t\tthis.query = {} as typeof this['query'];\n\t\tconst query = this.query as {\n\t\t\t[K in keyof TSchema]: RelationalQueryBuilder;\n\t\t};\n\t\tif (this._.schema) {\n\t\t\tfor (const [tableName, columns] of Object.entries(this._.schema)) {\n\t\t\t\tquery[tableName as keyof TSchema] = new RelationalQueryBuilder(\n\t\t\t\t\tresultKind,\n\t\t\t\t\tschema!.fullSchema,\n\t\t\t\t\tthis._.schema,\n\t\t\t\t\tthis._.tableNamesMap,\n\t\t\t\t\tschema!.fullSchema[tableName] as SQLiteTable,\n\t\t\t\t\tcolumns,\n\t\t\t\t\tdialect,\n\t\t\t\t\tsession as SQLiteSession as any,\n\t\t\t\t) as typeof query[keyof TSchema];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Creates a subquery that defines a temporary named result set as a CTE.\n\t *\n\t * It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param alias The alias for the subquery.\n\t *\n\t * Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Create a subquery with alias 'sq' and use it in the select query\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t *\n\t * To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:\n\t *\n\t * ```ts\n\t * // Select an arbitrary SQL value as a field in a CTE and reference it in the main query\n\t * const sq = db.$with('sq').as(db.select({\n\t * name: sql`upper(${users.name})`.as('name'),\n\t * })\n\t * .from(users));\n\t *\n\t * const result = await db.with(sq).select({ name: sq.name }).from(sq);\n\t * ```\n\t */\n\t$with(alias: TAlias) {\n\t\treturn {\n\t\t\tas(\n\t\t\t\tqb: TypedQueryBuilder | ((qb: QueryBuilder) => TypedQueryBuilder),\n\t\t\t): WithSubqueryWithSelection {\n\t\t\t\tif (typeof qb === 'function') {\n\t\t\t\t\tqb = qb(new QueryBuilder());\n\t\t\t\t}\n\n\t\t\t\treturn new Proxy(\n\t\t\t\t\tnew WithSubquery(qb.getSQL(), qb.getSelectedFields() as SelectedFields, alias, true),\n\t\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t\t) as WithSubqueryWithSelection;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Incorporates a previously defined CTE (using `$with`) into the main query.\n\t *\n\t * This method allows the main query to reference a temporary named result set.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param queries The CTEs to incorporate into the main query.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Define a subquery 'sq' as a CTE using $with\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * // Incorporate the CTE 'sq' into the main query and select from it\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t */\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\t/**\n\t\t * Creates a select query.\n\t\t *\n\t\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all columns and all rows from the 'cars' table\n\t\t * const allCars: Car[] = await db.select().from(cars);\n\t\t *\n\t\t * // Select specific columns and all rows from the 'cars' table\n\t\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * brand: cars.brand\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t *\n\t\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t\t *\n\t\t * ```ts\n\t\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * lowerBrand: sql`lower(${cars.brand})`,\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t */\n\t\tfunction select(): SQLiteSelectBuilder;\n\t\tfunction select(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder;\n\t\tfunction select(\n\t\t\tfields?: SelectedFields,\n\t\t): SQLiteSelectBuilder {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct` expression to the select query.\n\t\t *\n\t\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all unique rows from the 'cars' table\n\t\t * await db.selectDistinct()\n\t\t * .from(cars)\n\t\t * .orderBy(cars.id, cars.brand, cars.color);\n\t\t *\n\t\t * // Select all unique brands from the 'cars' table\n\t\t * await db.selectDistinct({ brand: cars.brand })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinct(): SQLiteSelectBuilder;\n\t\tfunction selectDistinct(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder;\n\t\tfunction selectDistinct(\n\t\t\tfields?: SelectedFields,\n\t\t): SQLiteSelectBuilder {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Creates an update query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t\t *\n\t\t * Use `.set()` method to specify which values to update.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t\t *\n\t\t * @param table The table to update.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Update all rows in the 'cars' table\n\t\t * await db.update(cars).set({ color: 'red' });\n\t\t *\n\t\t * // Update rows with filters and conditions\n\t\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t\t *\n\t\t * // Update with returning clause\n\t\t * const updatedCar: Car[] = await db.update(cars)\n\t\t * .set({ color: 'red' })\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction update(table: TTable): SQLiteUpdateBuilder {\n\t\t\treturn new SQLiteUpdateBuilder(table, self.session, self.dialect, queries);\n\t\t}\n\n\t\t/**\n\t\t * Creates an insert query.\n\t\t *\n\t\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t\t *\n\t\t * @param table The table to insert into.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Insert one row\n\t\t * await db.insert(cars).values({ brand: 'BMW' });\n\t\t *\n\t\t * // Insert multiple rows\n\t\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t\t *\n\t\t * // Insert with returning clause\n\t\t * const insertedCar: Car[] = await db.insert(cars)\n\t\t * .values({ brand: 'BMW' })\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction insert(into: TTable): SQLiteInsertBuilder {\n\t\t\treturn new SQLiteInsertBuilder(into, self.session, self.dialect, queries);\n\t\t}\n\n\t\t/**\n\t\t * Creates a delete query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t\t *\n\t\t * @param table The table to delete from.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Delete all rows in the 'cars' table\n\t\t * await db.delete(cars);\n\t\t *\n\t\t * // Delete rows with filters and conditions\n\t\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t\t *\n\t\t * // Delete with returning clause\n\t\t * const deletedCar: Car[] = await db.delete(cars)\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction delete_(from: TTable): SQLiteDeleteBase {\n\t\t\treturn new SQLiteDeleteBase(from, self.session, self.dialect, queries);\n\t\t}\n\n\t\treturn { select, selectDistinct, update, insert, delete: delete_ };\n\t}\n\n\t/**\n\t * Creates a select query.\n\t *\n\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all columns and all rows from the 'cars' table\n\t * const allCars: Car[] = await db.select().from(cars);\n\t *\n\t * // Select specific columns and all rows from the 'cars' table\n\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t * id: cars.id,\n\t * brand: cars.brand\n\t * })\n\t * .from(cars);\n\t * ```\n\t *\n\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t *\n\t * ```ts\n\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t * id: cars.id,\n\t * lowerBrand: sql`lower(${cars.brand})`,\n\t * })\n\t * .from(cars);\n\t * ```\n\t */\n\tselect(): SQLiteSelectBuilder;\n\tselect(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder;\n\tselect(fields?: SelectedFields): SQLiteSelectBuilder {\n\t\treturn new SQLiteSelectBuilder({ fields: fields ?? undefined, session: this.session, dialect: this.dialect });\n\t}\n\n\t/**\n\t * Adds `distinct` expression to the select query.\n\t *\n\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all unique rows from the 'cars' table\n\t * await db.selectDistinct()\n\t * .from(cars)\n\t * .orderBy(cars.id, cars.brand, cars.color);\n\t *\n\t * // Select all unique brands from the 'cars' table\n\t * await db.selectDistinct({ brand: cars.brand })\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t * ```\n\t */\n\tselectDistinct(): SQLiteSelectBuilder;\n\tselectDistinct(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder;\n\tselectDistinct(\n\t\tfields?: SelectedFields,\n\t): SQLiteSelectBuilder {\n\t\treturn new SQLiteSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: true,\n\t\t});\n\t}\n\n\t/**\n\t * Creates an update query.\n\t *\n\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t *\n\t * Use `.set()` method to specify which values to update.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param table The table to update.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Update all rows in the 'cars' table\n\t * await db.update(cars).set({ color: 'red' });\n\t *\n\t * // Update rows with filters and conditions\n\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t *\n\t * // Update with returning clause\n\t * const updatedCar: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tupdate(table: TTable): SQLiteUpdateBuilder {\n\t\treturn new SQLiteUpdateBuilder(table, this.session, this.dialect);\n\t}\n\n\t/**\n\t * Creates an insert query.\n\t *\n\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t *\n\t * @param table The table to insert into.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Insert one row\n\t * await db.insert(cars).values({ brand: 'BMW' });\n\t *\n\t * // Insert multiple rows\n\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t *\n\t * // Insert with returning clause\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t * ```\n\t */\n\tinsert(into: TTable): SQLiteInsertBuilder {\n\t\treturn new SQLiteInsertBuilder(into, this.session, this.dialect);\n\t}\n\n\t/**\n\t * Creates a delete query.\n\t *\n\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param table The table to delete from.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Delete all rows in the 'cars' table\n\t * await db.delete(cars);\n\t *\n\t * // Delete rows with filters and conditions\n\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t *\n\t * // Delete with returning clause\n\t * const deletedCar: Car[] = await db.delete(cars)\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tdelete(from: TTable): SQLiteDeleteBase {\n\t\treturn new SQLiteDeleteBase(from, this.session, this.dialect);\n\t}\n\n\trun(query: SQLWrapper): DBResult {\n\t\tconst sql = query.getSQL();\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteRaw(\n\t\t\t\tasync () => this.session.run(sql),\n\t\t\t\t() => sql,\n\t\t\t\t'run',\n\t\t\t\tthis.dialect as SQLiteAsyncDialect,\n\t\t\t\tthis.session.extractRawRunValueFromBatchResult.bind(this.session),\n\t\t\t) as DBResult;\n\t\t}\n\t\treturn this.session.run(sql) as DBResult;\n\t}\n\n\tall(query: SQLWrapper): DBResult {\n\t\tconst sql = query.getSQL();\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteRaw(\n\t\t\t\tasync () => this.session.all(sql),\n\t\t\t\t() => sql,\n\t\t\t\t'all',\n\t\t\t\tthis.dialect as SQLiteAsyncDialect,\n\t\t\t\tthis.session.extractRawAllValueFromBatchResult.bind(this.session),\n\t\t\t) as any;\n\t\t}\n\t\treturn this.session.all(sql) as DBResult;\n\t}\n\n\tget(query: SQLWrapper): DBResult {\n\t\tconst sql = query.getSQL();\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteRaw(\n\t\t\t\tasync () => this.session.get(sql),\n\t\t\t\t() => sql,\n\t\t\t\t'get',\n\t\t\t\tthis.dialect as SQLiteAsyncDialect,\n\t\t\t\tthis.session.extractRawGetValueFromBatchResult.bind(this.session),\n\t\t\t) as DBResult;\n\t\t}\n\t\treturn this.session.get(sql) as DBResult;\n\t}\n\n\tvalues(query: SQLWrapper): DBResult {\n\t\tconst sql = query.getSQL();\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteRaw(\n\t\t\t\tasync () => this.session.values(sql),\n\t\t\t\t() => sql,\n\t\t\t\t'values',\n\t\t\t\tthis.dialect as SQLiteAsyncDialect,\n\t\t\t\tthis.session.extractRawValuesValueFromBatchResult.bind(this.session),\n\t\t\t) as any;\n\t\t}\n\t\treturn this.session.values(sql) as DBResult;\n\t}\n\n\ttransaction(\n\t\ttransaction: (tx: SQLiteTransaction) => Result,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result {\n\t\treturn this.session.transaction(transaction, config);\n\t}\n}\n\nexport type SQLiteWithReplicas = Q & { $primary: Q };\n\nexport const withReplicas = <\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n\tQ extends BaseSQLiteDatabase<\n\t\tTResultKind,\n\t\tTRunResult,\n\t\tTFullSchema,\n\t\tTSchema extends Record ? ExtractTablesWithRelations : TSchema\n\t>,\n>(\n\tprimary: Q,\n\treplicas: [Q, ...Q[]],\n\tgetReplica: (replicas: Q[]) => Q = () => replicas[Math.floor(Math.random() * replicas.length)]!,\n): SQLiteWithReplicas => {\n\tconst select: Q['select'] = (...args: []) => getReplica(replicas).select(...args);\n\tconst selectDistinct: Q['selectDistinct'] = (...args: []) => getReplica(replicas).selectDistinct(...args);\n\tconst $with: Q['with'] = (...args: []) => getReplica(replicas).with(...args);\n\n\tconst update: Q['update'] = (...args: [any]) => primary.update(...args);\n\tconst insert: Q['insert'] = (...args: [any]) => primary.insert(...args);\n\tconst $delete: Q['delete'] = (...args: [any]) => primary.delete(...args);\n\tconst run: Q['run'] = (...args: [any]) => primary.run(...args);\n\tconst all: Q['all'] = (...args: [any]) => primary.all(...args);\n\tconst get: Q['get'] = (...args: [any]) => primary.get(...args);\n\tconst values: Q['values'] = (...args: [any]) => primary.values(...args);\n\tconst transaction: Q['transaction'] = (...args: [any]) => primary.transaction(...args);\n\n\treturn {\n\t\t...primary,\n\t\tupdate,\n\t\tinsert,\n\t\tdelete: $delete,\n\t\trun,\n\t\tall,\n\t\tget,\n\t\tvalues,\n\t\ttransaction,\n\t\t$primary: primary,\n\t\tselect,\n\t\tselectDistinct,\n\t\twith: $with,\n\t\tget query() {\n\t\t\treturn getReplica(replicas).query;\n\t\t},\n\t};\n};\n", "import { entityKind } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { QueryPromise } from '../index.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync extends QueryPromise {\n\tstatic readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult = TType extends 'async' ? Promise\n\t: ExecuteResultSync;\n\nexport abstract class SQLitePreparedQuery implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t) {}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record): Result;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record): Result;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record): Result;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record): Result;\n\n\texecute(placeholderValues?: Record): ExecuteResult {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t): SQLitePreparedQuery;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t): SQLitePreparedQuery {\n\t\treturn this.prepareQuery(query, fields, executeMethod);\n\t}\n\n\tabstract transaction(\n\t\ttransaction: (tx: SQLiteTransaction) => Result,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result;\n\n\trun(query: SQL): Result {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run').run() as Result;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall(query: SQL): Result {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run').all() as Result;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget(query: SQL): Result {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run').get() as Result;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues(\n\t\tquery: SQL,\n\t): Result {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run').values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result = { sync: TResult; async: Promise }[TKind];\n\nexport type DBResult = { sync: TResult; async: SQLiteRaw }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase {\n\tstatic readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n", "import type { BuildColumns } from '~/column-builder.ts';\nimport { entityKind } from '~/entity.ts';\nimport { Table, type TableConfig as TableConfigBase, type UpdateTableConfig } from '~/table.ts';\nimport type { CheckBuilder } from './checks.ts';\nimport type { MySqlColumn, MySqlColumnBuilder, MySqlColumnBuilderBase } from './columns/common.ts';\nimport type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { AnyIndexBuilder } from './indexes.ts';\nimport type { PrimaryKeyBuilder } from './primary-keys.ts';\nimport type { UniqueConstraintBuilder } from './unique-constraint.ts';\n\nexport type MySqlTableExtraConfig = Record<\n\tstring,\n\t| AnyIndexBuilder\n\t| CheckBuilder\n\t| ForeignKeyBuilder\n\t| PrimaryKeyBuilder\n\t| UniqueConstraintBuilder\n>;\n\nexport type TableConfig = TableConfigBase;\n\n/** @internal */\nexport const InlineForeignKeys = Symbol.for('drizzle:MySqlInlineForeignKeys');\n\nexport class MySqlTable extends Table {\n\tstatic readonly [entityKind]: string = 'MySqlTable';\n\n\tdeclare protected $columns: T['columns'];\n\n\t/** @internal */\n\tstatic override readonly Symbol = Object.assign({}, Table.Symbol, {\n\t\tInlineForeignKeys: InlineForeignKeys as typeof InlineForeignKeys,\n\t});\n\n\t/** @internal */\n\toverride [Table.Symbol.Columns]!: NonNullable;\n\n\t/** @internal */\n\t[InlineForeignKeys]: ForeignKey[] = [];\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigBuilder]:\n\t\t| ((self: Record) => MySqlTableExtraConfig)\n\t\t| undefined = undefined;\n}\n\nexport type AnyMySqlTable = {}> = MySqlTable<\n\tUpdateTableConfig\n>;\n\nexport type MySqlTableWithColumns =\n\t& MySqlTable\n\t& {\n\t\t[Key in keyof T['columns']]: T['columns'][Key];\n\t};\n\nexport function mysqlTableWithSchema<\n\tTTableName extends string,\n\tTSchemaName extends string | undefined,\n\tTColumnsMap extends Record,\n>(\n\tname: TTableName,\n\tcolumns: TColumnsMap,\n\textraConfig: ((self: BuildColumns) => MySqlTableExtraConfig) | undefined,\n\tschema: TSchemaName,\n\tbaseName = name,\n): MySqlTableWithColumns<{\n\tname: TTableName;\n\tschema: TSchemaName;\n\tcolumns: BuildColumns;\n\tdialect: 'mysql';\n}> {\n\tconst rawTable = new MySqlTable<{\n\t\tname: TTableName;\n\t\tschema: TSchemaName;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'mysql';\n\t}>(name, schema, baseName);\n\n\tconst builtColumns = Object.fromEntries(\n\t\tObject.entries(columns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as MySqlColumnBuilder;\n\t\t\tconst column = colBuilder.build(rawTable);\n\t\t\trawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildColumns;\n\n\tconst table = Object.assign(rawTable, builtColumns);\n\n\ttable[Table.Symbol.Columns] = builtColumns;\n\n\tif (extraConfig) {\n\t\ttable[MySqlTable.Symbol.ExtraConfigBuilder] = extraConfig as unknown as (\n\t\t\tself: Record,\n\t\t) => MySqlTableExtraConfig;\n\t}\n\n\treturn table;\n}\n\nexport interface MySqlTableFn {\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (self: BuildColumns) => MySqlTableExtraConfig,\n\t): MySqlTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchemaName;\n\t\tcolumns: BuildColumns;\n\t\tdialect: 'mysql';\n\t}>;\n}\n\nexport const mysqlTable: MySqlTableFn = (name, columns, extraConfig) => {\n\treturn mysqlTableWithSchema(name, columns, extraConfig, undefined, name);\n};\n\nexport function mysqlTableCreator(customizeTableName: (name: string) => string): MySqlTableFn {\n\treturn (name, columns, extraConfig) => {\n\t\treturn mysqlTableWithSchema(customizeTableName(name) as typeof name, columns, extraConfig, undefined, name);\n\t};\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { AnyMySqlColumn, MySqlColumn } from './columns/index.ts';\nimport { MySqlTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: MySqlColumn[];\n\treadonly foreignTable: MySqlTable;\n\treadonly foreignColumns: MySqlColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'MySqlForeignKeyBuilder';\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined;\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: MySqlColumn[];\n\t\t\tforeignColumns: MySqlColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as MySqlTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: MySqlTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport type AnyForeignKeyBuilder = ForeignKeyBuilder;\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'MySqlForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: MySqlTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName(): string {\n\t\tconst { name, columns, foreignColumns } = this.reference();\n\t\tconst columnNames = columns.map((column) => column.name);\n\t\tconst foreignColumnNames = foreignColumns.map((column) => column.name);\n\t\tconst chunks = [\n\t\t\tthis.table[MySqlTable.Symbol.Name],\n\t\t\t...columnNames,\n\t\t\tforeignColumns[0]!.table[MySqlTable.Symbol.Name],\n\t\t\t...foreignColumnNames,\n\t\t];\n\t\treturn name ?? `${chunks.join('_')}_fk`;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends MySqlColumn[],\n> = { [Key in keyof TColumns]: AnyMySqlColumn<{ tableName: TTableName }> };\n\nexport type GetColumnsTable = (\n\tTColumns extends MySqlColumn ? TColumns\n\t\t: TColumns extends MySqlColumn[] ? TColumns[number]\n\t\t: never\n) extends AnyMySqlColumn<{ tableName: infer TTableName extends string }> ? TTableName\n\t: never;\n\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnyMySqlColumn<{ tableName: TTableName }>, ...AnyMySqlColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable;\n\t},\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tconst { name, columns, foreignColumns } = config;\n\t\treturn {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tforeignColumns,\n\t\t};\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { MySqlColumn } from './columns/index.ts';\nimport { MySqlTable } from './table.ts';\n\nexport function unique(name?: string): UniqueOnConstraintBuilder {\n\treturn new UniqueOnConstraintBuilder(name);\n}\n\nexport function uniqueKeyName(table: MySqlTable, columns: string[]) {\n\treturn `${table[MySqlTable.Symbol.Name]}_${columns.join('_')}_unique`;\n}\n\nexport class UniqueConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: MySqlColumn[];\n\n\tconstructor(\n\t\tcolumns: MySqlColumn[],\n\t\tprivate name?: string,\n\t) {\n\t\tthis.columns = columns;\n\t}\n\n\t/** @internal */\n\tbuild(table: MySqlTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tname?: string,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [MySqlColumn, ...MySqlColumn[]]) {\n\t\treturn new UniqueConstraintBuilder(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'MySqlUniqueConstraint';\n\n\treadonly columns: MySqlColumn[];\n\treadonly name?: string;\n\treadonly nullsNotDistinct: boolean = false;\n\n\tconstructor(readonly table: MySqlTable, columns: MySqlColumn[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n\t}\n\n\tgetName() {\n\t\treturn this.name;\n\t}\n}\n", "import { ColumnBuilder } from '~/column-builder.ts';\nimport type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/mysql-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/mysql-core/foreign-keys.ts';\nimport type { AnyMySqlTable, MySqlTable } from '~/mysql-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => MySqlColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface MySqlColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase {}\n\nexport abstract class MySqlColumnBuilder<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig & {\n\t\tdata: any;\n\t},\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder\n\timplements MySqlColumnBuilderBase\n{\n\tstatic readonly [entityKind]: string = 'MySqlColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(ref: ReferenceConfig['ref'], actions: ReferenceConfig['actions'] = {}): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(name?: string): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: MySqlColumn, table: MySqlTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn ((ref, actions) => {\n\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t});\n\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t}\n\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t}\n\t\t\t\treturn builder.build(table);\n\t\t\t})(ref, actions);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build(\n\t\ttable: AnyMySqlTable<{ name: TTableName }>,\n\t): MySqlColumn>;\n}\n\n// To understand how to use `MySqlColumn` and `AnyMySqlColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class MySqlColumn<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\tTRuntimeConfig extends object = object,\n> extends Column {\n\tstatic readonly [entityKind]: string = 'MySqlColumn';\n\n\tconstructor(\n\t\toverride readonly table: MySqlTable,\n\t\tconfig: ColumnBuilderRuntimeConfig,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnyMySqlColumn> = {}> = MySqlColumn<\n\tRequired, TPartial>>\n>;\n\nexport interface MySqlColumnWithAutoIncrementConfig {\n\tautoIncrement: boolean;\n}\n\nexport abstract class MySqlColumnBuilderWithAutoIncrement<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends MySqlColumnBuilder {\n\tstatic readonly [entityKind]: string = 'MySqlColumnBuilderWithAutoIncrement';\n\n\tconstructor(name: NonNullable, dataType: T['dataType'], columnType: T['columnType']) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\tautoincrement(): HasDefault {\n\t\tthis.config.autoIncrement = true;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault;\n\t}\n}\n\nexport abstract class MySqlColumnWithAutoIncrement<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\tTRuntimeConfig extends object = object,\n> extends MySqlColumn {\n\tstatic readonly [entityKind]: string = 'MySqlColumnWithAutoIncrement';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMySqlTable } from '~/mysql-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { MySqlColumn, MySqlColumnBuilder } from './common.ts';\n\nexport type MySqlCharBuilderInitial = MySqlCharBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'MySqlChar';\n\tdata: TEnum[number];\n\tdriverParam: number | string;\n\tenumValues: TEnum;\n}>;\n\nexport class MySqlCharBuilder> extends MySqlColumnBuilder<\n\tT,\n\tMySqlCharConfig\n> {\n\tstatic readonly [entityKind]: string = 'MySqlCharBuilder';\n\n\tconstructor(name: T['name'], config: MySqlCharConfig) {\n\t\tsuper(name, 'string', 'MySqlChar');\n\t\tthis.config.length = config.length;\n\t\tthis.config.enum = config.enum;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyMySqlTable<{ name: TTableName }>,\n\t): MySqlChar & { enumValues: T['enumValues'] }> {\n\t\treturn new MySqlChar & { enumValues: T['enumValues'] }>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class MySqlChar>\n\textends MySqlColumn>\n{\n\tstatic readonly [entityKind]: string = 'MySqlChar';\n\n\treadonly length: number | undefined = this.config.length;\n\toverride readonly enumValues = this.config.enum;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `char` : `char(${this.length})`;\n\t}\n}\n\nexport interface MySqlCharConfig {\n\tlength?: number;\n\tenum?: TEnum;\n}\n\nexport function char>(\n\tname: TName,\n\tconfig: MySqlCharConfig> = {},\n): MySqlCharBuilderInitial> {\n\treturn new MySqlCharBuilder(name, config);\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMySqlTable } from '~/mysql-core/table.ts';\nimport { MySqlColumn, MySqlColumnBuilder } from './common.ts';\n\nexport type MySqlVarBinaryBuilderInitial = MySqlVarBinaryBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'MySqlVarBinary';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class MySqlVarBinaryBuilder>\n\textends MySqlColumnBuilder\n{\n\tstatic readonly [entityKind]: string = 'MySqlVarBinaryBuilder';\n\n\t/** @internal */\n\tconstructor(name: T['name'], config: MySqlVarbinaryOptions) {\n\t\tsuper(name, 'string', 'MySqlVarBinary');\n\t\tthis.config.length = config?.length;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyMySqlTable<{ name: TTableName }>,\n\t): MySqlVarBinary> {\n\t\treturn new MySqlVarBinary>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class MySqlVarBinary<\n\tT extends ColumnBaseConfig<'string', 'MySqlVarBinary'>,\n> extends MySqlColumn {\n\tstatic readonly [entityKind]: string = 'MySqlVarBinary';\n\n\tlength: number | undefined = this.config.length;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `varbinary` : `varbinary(${this.length})`;\n\t}\n}\n\nexport interface MySqlVarbinaryOptions {\n\tlength: number;\n}\n\nexport function varbinary(\n\tname: TName,\n\toptions: MySqlVarbinaryOptions,\n): MySqlVarBinaryBuilderInitial {\n\treturn new MySqlVarBinaryBuilder(name, options);\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMySqlTable } from '~/mysql-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { MySqlColumn, MySqlColumnBuilder } from './common.ts';\n\nexport type MySqlVarCharBuilderInitial = MySqlVarCharBuilder<\n\t{\n\t\tname: TName;\n\t\tdataType: 'string';\n\t\tcolumnType: 'MySqlVarChar';\n\t\tdata: TEnum[number];\n\t\tdriverParam: number | string;\n\t\tenumValues: TEnum;\n\t}\n>;\n\nexport class MySqlVarCharBuilder>\n\textends MySqlColumnBuilder>\n{\n\tstatic readonly [entityKind]: string = 'MySqlVarCharBuilder';\n\n\t/** @internal */\n\tconstructor(name: T['name'], config: MySqlVarCharConfig) {\n\t\tsuper(name, 'string', 'MySqlVarChar');\n\t\tthis.config.length = config.length;\n\t\tthis.config.enum = config.enum;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyMySqlTable<{ name: TTableName }>,\n\t): MySqlVarChar & { enumValues: T['enumValues'] }> {\n\t\treturn new MySqlVarChar & { enumValues: T['enumValues'] }>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t);\n\t}\n}\n\nexport class MySqlVarChar>\n\textends MySqlColumn>\n{\n\tstatic readonly [entityKind]: string = 'MySqlVarChar';\n\n\treadonly length: number | undefined = this.config.length;\n\n\toverride readonly enumValues = this.config.enum;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `varchar` : `varchar(${this.length})`;\n\t}\n}\n\nexport interface MySqlVarCharConfig {\n\tlength: number;\n\tenum?: TEnum;\n}\n\nexport function varchar>(\n\tname: TName,\n\tconfig: MySqlVarCharConfig>,\n): MySqlVarCharBuilderInitial> {\n\treturn new MySqlVarCharBuilder(name, config);\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { AnyPgColumn, PgColumn } from './columns/index.ts';\nimport { PgTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: PgColumn[];\n\treadonly foreignTable: PgTable;\n\treadonly foreignColumns: PgColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'PgForeignKeyBuilder';\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined = 'no action';\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined = 'no action';\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: PgColumn[];\n\t\t\tforeignColumns: PgColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as PgTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action === undefined ? 'no action' : action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action === undefined ? 'no action' : action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: PgTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport type AnyForeignKeyBuilder = ForeignKeyBuilder;\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'PgForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: PgTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName(): string {\n\t\tconst { name, columns, foreignColumns } = this.reference();\n\t\tconst columnNames = columns.map((column) => column.name);\n\t\tconst foreignColumnNames = foreignColumns.map((column) => column.name);\n\t\tconst chunks = [\n\t\t\tthis.table[PgTable.Symbol.Name],\n\t\t\t...columnNames,\n\t\t\tforeignColumns[0]!.table[PgTable.Symbol.Name],\n\t\t\t...foreignColumnNames,\n\t\t];\n\t\treturn name ?? `${chunks.join('_')}_fk`;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends PgColumn[],\n> = { [Key in keyof TColumns]: AnyPgColumn<{ tableName: TTableName }> };\n\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnyPgColumn<{ tableName: TTableName }>, ...AnyPgColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable;\n\t},\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tconst { name, columns, foreignColumns } = config;\n\t\treturn {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tforeignColumns,\n\t\t};\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { PgColumn } from './columns/index.ts';\nimport { PgTable } from './table.ts';\n\nexport function unique(name?: string): UniqueOnConstraintBuilder {\n\treturn new UniqueOnConstraintBuilder(name);\n}\n\nexport function uniqueKeyName(table: PgTable, columns: string[]) {\n\treturn `${table[PgTable.Symbol.Name]}_${columns.join('_')}_unique`;\n}\n\nexport class UniqueConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'PgUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: PgColumn[];\n\t/** @internal */\n\tnullsNotDistinctConfig = false;\n\n\tconstructor(\n\t\tcolumns: PgColumn[],\n\t\tprivate name?: string,\n\t) {\n\t\tthis.columns = columns;\n\t}\n\n\tnullsNotDistinct() {\n\t\tthis.nullsNotDistinctConfig = true;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: PgTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.nullsNotDistinctConfig, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'PgUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tname?: string,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [PgColumn, ...PgColumn[]]) {\n\t\treturn new UniqueConstraintBuilder(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'PgUniqueConstraint';\n\n\treadonly columns: PgColumn[];\n\treadonly name?: string;\n\treadonly nullsNotDistinct: boolean = false;\n\n\tconstructor(readonly table: PgTable, columns: PgColumn[], nullsNotDistinct: boolean, name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n\t\tthis.nullsNotDistinct = nullsNotDistinct;\n\t}\n\n\tgetName() {\n\t\treturn this.name;\n\t}\n}\n", "function parsePgArrayValue(arrayString: string, startFrom: number, inQuotes: boolean): [string, number] {\n\tfor (let i = startFrom; i < arrayString.length; i++) {\n\t\tconst char = arrayString[i];\n\n\t\tif (char === '\\\\') {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"') {\n\t\t\treturn [arrayString.slice(startFrom, i).replace(/\\\\/g, ''), i + 1];\n\t\t}\n\n\t\tif (inQuotes) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === ',' || char === '}') {\n\t\t\treturn [arrayString.slice(startFrom, i).replace(/\\\\/g, ''), i];\n\t\t}\n\t}\n\n\treturn [arrayString.slice(startFrom).replace(/\\\\/g, ''), arrayString.length];\n}\n\nexport function parsePgNestedArray(arrayString: string, startFrom = 0): [any[], number] {\n\tconst result: any[] = [];\n\tlet i = startFrom;\n\tlet lastCharIsComma = false;\n\n\twhile (i < arrayString.length) {\n\t\tconst char = arrayString[i];\n\n\t\tif (char === ',') {\n\t\t\tif (lastCharIsComma || i === startFrom) {\n\t\t\t\tresult.push('');\n\t\t\t}\n\t\t\tlastCharIsComma = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tlastCharIsComma = false;\n\n\t\tif (char === '\\\\') {\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"') {\n\t\t\tconst [value, startFrom] = parsePgArrayValue(arrayString, i + 1, true);\n\t\t\tresult.push(value);\n\t\t\ti = startFrom;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '}') {\n\t\t\treturn [result, i + 1];\n\t\t}\n\n\t\tif (char === '{') {\n\t\t\tconst [value, startFrom] = parsePgNestedArray(arrayString, i + 1);\n\t\t\tresult.push(value);\n\t\t\ti = startFrom;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [value, newStartFrom] = parsePgArrayValue(arrayString, i, false);\n\t\tresult.push(value);\n\t\ti = newStartFrom;\n\t}\n\n\treturn [result, i];\n}\n\nexport function parsePgArray(arrayString: string): any[] {\n\tconst [result] = parsePgNestedArray(arrayString, 1);\n\treturn result;\n}\n\nexport function makePgArray(array: any[]): string {\n\treturn `{${\n\t\tarray.map((item) => {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturn makePgArray(item);\n\t\t\t}\n\n\t\t\tif (typeof item === 'string') {\n\t\t\t\treturn `\"${item.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n\t\t\t}\n\n\t\t\treturn `${item}`;\n\t\t}).join(',')\n\t}}`;\n}\n", "import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Update } from '~/utils.ts';\n\nimport type { ForeignKey, UpdateDeleteAction } from '~/pg-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/pg-core/foreign-keys.ts';\nimport type { AnyPgTable, PgTable } from '~/pg-core/table.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\nimport { makePgArray, parsePgArray } from '../utils/array.ts';\nimport { iife } from '~/tracing-utils.ts';\n\nexport interface ReferenceConfig {\n\tref: () => PgColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface PgColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase {}\n\nexport abstract class PgColumnBuilder<\n\tT extends ColumnBuilderBaseConfig = ColumnBuilderBaseConfig,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder\n\timplements PgColumnBuilderBase\n{\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\tstatic readonly [entityKind]: string = 'PgColumnBuilder';\n\n\tarray(size?: number): PgArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'PgArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn new PgArrayBuilder(this.config.name, this as PgColumnBuilder, size);\n\t}\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t\tconfig?: { nulls: 'distinct' | 'not distinct' },\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\tthis.config.uniqueType = config?.nulls;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: PgColumn, table: PgTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn iife(\n\t\t\t\t(ref, actions) => {\n\t\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t\t});\n\t\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t\t}\n\t\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t\t}\n\t\t\t\t\treturn builder.build(table);\n\t\t\t\t},\n\t\t\t\tref,\n\t\t\t\tactions,\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgColumn>;\n}\n\n// To understand how to use `PgColumn` and `PgColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class PgColumn<\n\tT extends ColumnBaseConfig = ColumnBaseConfig,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends Column {\n\tstatic readonly [entityKind]: string = 'PgColumn';\n\n\tconstructor(\n\t\toverride readonly table: PgTable,\n\t\tconfig: ColumnBuilderRuntimeConfig,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnyPgColumn> = {}> = PgColumn<\n\tRequired, TPartial>>\n>;\n\nexport class PgArrayBuilder<\n\tT extends ColumnBuilderBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig,\n> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tbaseBuilder: PgColumnBuilder;\n\t\tsize: number | undefined;\n\t},\n\t{\n\t\tbaseBuilder: PgColumnBuilder;\n\t}\n> {\n\tstatic override readonly [entityKind] = 'PgArrayBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tbaseBuilder: PgArrayBuilder['config']['baseBuilder'],\n\t\tsize: number | undefined,\n\t) {\n\t\tsuper(name, 'array', 'PgArray');\n\t\tthis.config.baseBuilder = baseBuilder;\n\t\tthis.config.size = size;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgArray, TBase> {\n\t\tconst baseColumn = this.config.baseBuilder.build(table);\n\t\treturn new PgArray, TBase>(\n\t\t\ttable as AnyPgTable<{ name: MakeColumnConfig['tableName'] }>,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig,\n\t\t\tbaseColumn,\n\t\t);\n\t}\n}\n\nexport class PgArray<\n\tT extends ColumnBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig,\n> extends PgColumn {\n\treadonly size: number | undefined;\n\n\tstatic readonly [entityKind]: string = 'PgArray';\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgArrayBuilder['config'],\n\t\treadonly baseColumn: PgColumn,\n\t\treadonly range?: [number | undefined, number | undefined],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.size = config.size;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;\n\t}\n\n\toverride mapFromDriverValue(value: unknown[] | string): T['data'] {\n\t\tif (typeof value === 'string') {\n\t\t\t// Thank you node-postgres for not parsing enum arrays\n\t\t\tvalue = parsePgArray(value);\n\t\t}\n\t\treturn value.map((v) => this.baseColumn.mapFromDriverValue(v));\n\t}\n\n\toverride mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {\n\t\tconst a = value.map((v) =>\n\t\t\tv === null\n\t\t\t\t? null\n\t\t\t\t: is(this.baseColumn, PgArray)\n\t\t\t\t? this.baseColumn.mapToDriverValue(v as unknown[], true)\n\t\t\t\t: this.baseColumn.mapToDriverValue(v)\n\t\t);\n\t\tif (isNestedArray) return a;\n\t\treturn makePgArray(a);\n\t}\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgCharBuilderInitial = PgCharBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgChar';\n\tdata: TEnum[number];\n\tenumValues: TEnum;\n\tdriverParam: string;\n}>;\n\nexport class PgCharBuilder> extends PgColumnBuilder<\n\tT,\n\t{ length: number | undefined; enumValues: T['enumValues'] }\n> {\n\tstatic readonly [entityKind]: string = 'PgCharBuilder';\n\n\tconstructor(name: string, config: PgCharConfig) {\n\t\tsuper(name, 'string', 'PgChar');\n\t\tthis.config.length = config.length;\n\t\tthis.config.enumValues = config.enum;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgChar> {\n\t\treturn new PgChar>(table, this.config as ColumnBuilderRuntimeConfig);\n\t}\n}\n\nexport class PgChar>\n\textends PgColumn\n{\n\tstatic readonly [entityKind]: string = 'PgChar';\n\n\treadonly length = this.config.length;\n\toverride readonly enumValues = this.config.enumValues;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `char` : `char(${this.length})`;\n\t}\n}\n\nexport interface PgCharConfig {\n\tlength?: number;\n\tenum?: TEnum;\n}\n\nexport function char>(\n\tname: TName,\n\tconfig: PgCharConfig> = {},\n): PgCharBuilderInitial> {\n\treturn new PgCharBuilder(name, config);\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { sql } from '~/sql/sql.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgUUIDBuilderInitial = PgUUIDBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgUUID';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgUUIDBuilder> extends PgColumnBuilder {\n\tstatic readonly [entityKind]: string = 'PgUUIDBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'string', 'PgUUID');\n\t}\n\n\t/**\n\t * Adds `default gen_random_uuid()` to the column definition.\n\t */\n\tdefaultRandom(): ReturnType {\n\t\treturn this.default(sql`gen_random_uuid()`) as ReturnType;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgUUID> {\n\t\treturn new PgUUID>(table, this.config as ColumnBuilderRuntimeConfig);\n\t}\n}\n\nexport class PgUUID> extends PgColumn {\n\tstatic readonly [entityKind]: string = 'PgUUID';\n\n\tgetSQLType(): string {\n\t\treturn 'uuid';\n\t}\n}\n\nexport function uuid(name: TName): PgUUIDBuilderInitial {\n\treturn new PgUUIDBuilder(name);\n}\n", "import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgVarcharBuilderInitial = PgVarcharBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgVarchar';\n\tdata: TEnum[number];\n\tdriverParam: string;\n\tenumValues: TEnum;\n}>;\n\nexport class PgVarcharBuilder> extends PgColumnBuilder<\n\tT,\n\t{ length: number | undefined; enumValues: T['enumValues'] }\n> {\n\tstatic readonly [entityKind]: string = 'PgVarcharBuilder';\n\n\tconstructor(name: string, config: PgVarcharConfig) {\n\t\tsuper(name, 'string', 'PgVarchar');\n\t\tthis.config.length = config.length;\n\t\tthis.config.enumValues = config.enum;\n\t}\n\n\t/** @internal */\n\toverride build(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgVarchar> {\n\t\treturn new PgVarchar>(table, this.config as ColumnBuilderRuntimeConfig);\n\t}\n}\n\nexport class PgVarchar>\n\textends PgColumn\n{\n\tstatic readonly [entityKind]: string = 'PgVarchar';\n\n\treadonly length = this.config.length;\n\toverride readonly enumValues = this.config.enumValues;\n\n\tgetSQLType(): string {\n\t\treturn this.length === undefined ? `varchar` : `varchar(${this.length})`;\n\t}\n}\n\nexport interface PgVarcharConfig {\n\tlength?: number;\n\tenum?: TEnum;\n}\n\nexport function varchar>(\n\tname: TName,\n\tconfig: PgVarcharConfig> = {},\n): PgVarcharBuilderInitial> {\n\treturn new PgVarcharBuilder(name, config);\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", null, "import { integer, sqliteTable, text, index } from \"drizzle-orm/sqlite-core\";\nimport { createInsertSchema } from \"drizzle-zod\";\nimport * as z from \"zod\";\n\n// ==================== API Keys \u8868 ====================\nexport const apiKeys = sqliteTable(\"api_keys\", {\n id: text(\"id\").primaryKey(),\n key: text(\"key\").notNull().unique(), // API Key \u503C\n keyPrefix: text(\"key_prefix\").notNull(), // Key \u524D\u7F00\u7528\u4E8E\u663E\u793A (\u5982 vmail_xxx...)\n name: text(\"name\"), // API Key \u540D\u79F0\n rateLimit: integer(\"rate_limit\").default(100), // \u6BCF\u5206\u949F\u8BF7\u6C42\u9650\u5236\n isActive: integer(\"is_active\", { mode: \"boolean\" }).default(true).notNull(),\n lastUsedAt: integer(\"last_used_at\", { mode: \"timestamp\" }),\n expiresAt: integer(\"expires_at\", { mode: \"timestamp\" }),\n createdAt: integer(\"created_at\", { mode: \"timestamp\" }).notNull(),\n updatedAt: integer(\"updated_at\", { mode: \"timestamp\" }).notNull(),\n});\n\nexport const insertApiKeySchema = createInsertSchema(apiKeys);\nexport type InsertApiKey = z.infer;\nexport type ApiKey = typeof apiKeys.$inferSelect;\n\n// ==================== Mailboxes \u8868 ====================\nexport const mailboxes = sqliteTable(\"mailboxes\", {\n id: text(\"id\").primaryKey(),\n address: text(\"address\").notNull().unique(), // \u5B8C\u6574\u90AE\u7BB1\u5730\u5740\n domain: text(\"domain\").notNull(), // \u90AE\u7BB1\u57DF\u540D\n expiresAt: integer(\"expires_at\", { mode: \"timestamp\" }),\n apiKeyId: text(\"api_key_id\").notNull(), // \u5173\u8054\u7684 API Key ID\n createdAt: integer(\"created_at\", { mode: \"timestamp\" }).notNull(),\n updatedAt: integer(\"updated_at\", { mode: \"timestamp\" }).notNull(),\n});\n\nexport const insertMailboxSchema = createInsertSchema(mailboxes);\nexport type InsertMailbox = z.infer;\nexport type Mailbox = typeof mailboxes.$inferSelect;\n\n// \u5B9A\u4E49 Header \u7C7B\u578B\uFF0C\u7528\u4E8E\u5B58\u50A8\u90AE\u4EF6\u5934\u4FE1\u606F\nexport type Header = Record;\n\n// \u5B9A\u4E49 Address \u7C7B\u578B\uFF0C\u7528\u4E8E\u5B58\u50A8\u53D1\u4EF6\u4EBA\u3001\u6536\u4EF6\u4EBA\u7B49\u5730\u5740\u4FE1\u606F\nexport type Address = {\n address: string;\n name: string;\n};\n\n// \u5B9A\u4E49 Email \u7C7B\u578B\uFF0C\u901A\u8FC7 drizzle-orm \u4ECE\u6570\u636E\u5E93\u8868\u7ED3\u6784\u63A8\u65AD\u5F97\u51FA\nexport type Email = typeof emails.$inferSelect;\n\n// \u4F7F\u7528 drizzle-orm \u5B9A\u4E49 emails \u8868\u7684\u7ED3\u6784\nexport const emails = sqliteTable(\"emails\", {\n id: text(\"id\").primaryKey(),\n messageFrom: text(\"message_from\").notNull(),\n messageTo: text(\"message_to\").notNull(),\n headers: text(\"headers\", { mode: \"json\" }).$type().notNull(),\n from: text(\"from\", { mode: \"json\" }).$type
().notNull(),\n sender: text(\"sender\", { mode: \"json\" }).$type
(),\n replyTo: text(\"reply_to\", { mode: \"json\" }).$type(),\n deliveredTo: text(\"delivered_to\"),\n returnPath: text(\"return_path\"),\n to: text(\"to\", { mode: \"json\" }).$type(),\n cc: text(\"cc\", { mode: \"json\" }).$type(),\n bcc: text(\"bcc\", { mode: \"json\" }).$type(),\n subject: text(\"subject\"),\n messageId: text(\"message_id\").notNull(),\n inReplyTo: text(\"in_reply_to\"),\n references: text(\"references\"),\n date: text(\"date\"),\n html: text(\"html\"),\n text: text(\"text\"),\n createdAt: integer(\"created_at\", { mode: \"timestamp\" }).notNull(),\n updatedAt: integer(\"updated_at\", { mode: \"timestamp\" }).notNull(),\n});\n\n// \u4F7F\u7528 Zod \u5B9A\u4E49 Address \u5BF9\u8C61\u7684\u9A8C\u8BC1 schema\nconst AddressSchema = z.object({\n address: z.string(),\n name: z.string(),\n});\n\n// \u4F7F\u7528 drizzle-zod \u57FA\u4E8E emails \u8868\u7ED3\u6784\u521B\u5EFA\u7528\u4E8E\u63D2\u5165\u64CD\u4F5C\u7684 Zod schema\nexport const insertEmailSchema = createInsertSchema(emails, {\n headers: z.array(z.record(z.string())),\n from: AddressSchema,\n sender: AddressSchema.optional(),\n replyTo: z.array(AddressSchema).optional(),\n to: z.array(AddressSchema).optional(),\n cc: z.array(AddressSchema).optional(),\n bcc: z.array(AddressSchema).optional(),\n});\n\n// \u5B9A\u4E49 InsertEmail \u7C7B\u578B\uFF0C\u4ECE Zod schema \u63A8\u65AD\nexport type InsertEmail = z.infer;\n\n// ==================== Site Stats \u8868 ====================\nexport const siteStats = sqliteTable(\"site_stats\", {\n id: text(\"id\").primaryKey(), // \u7EDF\u8BA1\u9879 ID (\u56FA\u5B9A\u4E3A 'global')\n totalAddressesCreated: integer(\"total_addresses_created\").default(0).notNull(), // \u7D2F\u8BA1\u521B\u5EFA\u90AE\u5740\u6570\u91CF\n totalEmailsReceived: integer(\"total_emails_received\").default(0).notNull(), // \u7D2F\u8BA1\u63A5\u6536\u90AE\u4EF6\u6570\u91CF\n totalApiCalls: integer(\"total_api_calls\").default(0).notNull(), // \u7D2F\u8BA1 API \u8C03\u7528\u6B21\u6570\n totalApiKeysCreated: integer(\"total_api_keys_created\").default(0).notNull(), // \u7D2F\u8BA1\u521B\u5EFA API Key \u6570\u91CF\n updatedAt: integer(\"updated_at\", { mode: \"timestamp\" }).notNull(),\n});\n\nexport type SiteStats = typeof siteStats.$inferSelect;", "import { count, desc, asc, eq, and, inArray, lt, sql } from \"drizzle-orm\";\n// fix: \u5C06\u6570\u636E\u5E93\u7C7B\u578B\u4ECE LibSQLDatabase \u66F4\u6539\u4E3A DrizzleD1Database\uFF0C\u4EE5\u5339\u914D Cloudflare D1\nimport { DrizzleD1Database } from \"drizzle-orm/d1\";\n// refactor: \u66F4\u65B0 schema \u7684\u5BFC\u5165\u8DEF\u5F84\nimport { emails, InsertEmail, apiKeys, InsertApiKey, mailboxes, InsertMailbox, siteStats, SiteStats } from \"./schema\";\n\nexport async function insertEmail(db: DrizzleD1Database, email: InsertEmail) {\n try {\n await db.insert(emails).values(email).execute();\n } catch (e) {\n console.error(e);\n }\n}\n\nexport async function getEmails(db: DrizzleD1Database) {\n try {\n return await db.select().from(emails).execute();\n } catch (e) {\n return [];\n }\n}\n\n// \u51FD\u6570\u91CD\u547D\u540D\uFF1A\u5C06 getEmail \u91CD\u547D\u540D\u4E3A findEmailById \u4EE5\u5339\u914D worker \u4E2D\u7684\u8C03\u7528\nexport async function findEmailById(db: DrizzleD1Database, id: string) {\n try {\n const result = await db\n .select()\n .from(emails)\n .where(and(eq(emails.id, id)))\n .execute();\n if (result.length != 1) {\n return null;\n }\n return result[0];\n } catch (e) {\n return null;\n }\n}\n\n// \u8BE5\u51FD\u6570\u5DF2\u4E0D\u518D\u9700\u8981\uFF0C\u56E0\u4E3A\u5BC6\u7801\u73B0\u5728\u662F\u90AE\u7BB1\u5730\u5740\u7684\u52A0\u5BC6\u7248\u672C\n// export async function getEmailByPassword(db: DrizzleD1Database, id: string) {\n// ...\n// }\n\nexport async function getEmailsByMessageTo(\n db: DrizzleD1Database,\n messageTo: string\n) {\n try {\n return await db\n .select()\n .from(emails)\n .where(eq(emails.messageTo, messageTo))\n .orderBy(desc(emails.createdAt))\n .execute();\n } catch (e) {\n return [];\n }\n}\n\nexport async function getEmailsCount(db: DrizzleD1Database) {\n try {\n const res = await db.select({ count: count() }).from(emails);\n return res[0]?.count;\n } catch (e) {\n return 0;\n }\n}\n\n// \u65B0\u589E\u51FD\u6570\uFF1A\u6DFB\u52A0 worker \u4E2D\u7F3A\u5931\u7684 deleteEmails \u51FD\u6570\nexport async function deleteEmails(db: DrizzleD1Database, ids: string[]) {\n if (!ids || ids.length === 0) {\n return { count: 0 };\n }\n try {\n const result = await db.delete(emails).where(inArray(emails.id, ids));\n return { count: result.rowsAffected };\n } catch (e) {\n console.error(e);\n return { count: 0 };\n }\n}\n\n/**\n * \u65B0\u589E\u51FD\u6570\uFF1A\u6839\u636E\u63D0\u4F9B\u7684\u8FC7\u671F\u65F6\u95F4\u5220\u9664\u6B64\u65F6\u95F4\u4E4B\u524D\u7684\u6240\u6709\u90AE\u4EF6\u3002\n * @param db Drizzle \u6570\u636E\u5E93\u5B9E\u4F8B\u3002\n * @param expirationTime \u4E00\u4E2A Date \u5BF9\u8C61\uFF0C\u8868\u793A\u8FC7\u671F\u65F6\u95F4\u70B9\u3002\n * @returns \u8FD4\u56DE\u4E00\u4E2A\u5305\u542B\u5DF2\u5220\u9664\u90AE\u4EF6\u6570\u91CF\u7684\u5BF9\u8C61\uFF0C\u6216\u5728\u51FA\u9519\u65F6\u8FD4\u56DE { count: 0 }\u3002\n */\nexport async function deleteExpiredEmails(db: DrizzleD1Database, expirationTime: Date) {\n try {\n // \u4F7F\u7528Drizzle\u7684lt\uFF08\u5C0F\u4E8E\uFF09\u64CD\u4F5C\u7B26\u6765\u6BD4\u8F83createdAt\u5B57\u6BB5\u548CexpirationTime\n const result = await db.delete(emails).where(lt(emails.createdAt, expirationTime)).execute();\n // \u8FD4\u56DE\u53D7\u5F71\u54CD\u7684\u884C\u6570\uFF0C\u5373\u5DF2\u5220\u9664\u7684\u90AE\u4EF6\u6570\u91CF\n return { count: result.rowsAffected };\n } catch (e) {\n // \u5982\u679C\u5728\u5220\u9664\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF\uFF0C\u5219\u5728\u63A7\u5236\u53F0\u6253\u5370\u9519\u8BEF\u4FE1\u606F\n console.error('\u6E05\u7406\u8FC7\u671F\u90AE\u4EF6\u5931\u8D25:', e);\n // \u5E76\u8FD4\u56DE\u4E00\u4E2A\u8868\u793A\u5220\u9664\u6570\u91CF\u4E3A0\u7684\u5BF9\u8C61\n return { count: 0 };\n }\n}\n\n// ==================== API Key \u76F8\u5173\u51FD\u6570 ====================\n\n/**\n * \u901A\u8FC7 API Key \u503C\u67E5\u627E\u8BB0\u5F55\n */\nexport async function findApiKeyByKey(db: DrizzleD1Database, key: string) {\n try {\n const result = await db\n .select()\n .from(apiKeys)\n .where(eq(apiKeys.key, key))\n .execute();\n return result.length === 1 ? result[0] : null;\n } catch (e) {\n console.error('findApiKeyByKey error:', e);\n return null;\n }\n}\n\n/**\n * \u66F4\u65B0 API Key \u6700\u540E\u4F7F\u7528\u65F6\u95F4\n */\nexport async function updateApiKeyLastUsed(db: DrizzleD1Database, id: string) {\n try {\n await db\n .update(apiKeys)\n .set({ lastUsedAt: new Date(), updatedAt: new Date() })\n .where(eq(apiKeys.id, id))\n .execute();\n } catch (e) {\n console.error('updateApiKeyLastUsed error:', e);\n }\n}\n\n/**\n * \u521B\u5EFA API Key\n */\nexport async function insertApiKey(db: DrizzleD1Database, apiKey: InsertApiKey) {\n try {\n await db.insert(apiKeys).values(apiKey).execute();\n return apiKey;\n } catch (e) {\n console.error('insertApiKey error:', e);\n return null;\n }\n}\n\n// ==================== Mailbox \u76F8\u5173\u51FD\u6570 ====================\n\n/**\n * \u521B\u5EFA\u90AE\u7BB1\n */\nexport async function insertMailbox(db: DrizzleD1Database, mailbox: InsertMailbox) {\n try {\n await db.insert(mailboxes).values(mailbox).execute();\n return mailbox;\n } catch (e) {\n console.error('insertMailbox error:', e);\n throw e;\n }\n}\n\n/**\n * \u901A\u8FC7 ID \u67E5\u627E\u90AE\u7BB1\n */\nexport async function findMailboxById(db: DrizzleD1Database, id: string) {\n try {\n const result = await db\n .select()\n .from(mailboxes)\n .where(eq(mailboxes.id, id))\n .execute();\n return result.length === 1 ? result[0] : null;\n } catch (e) {\n console.error('findMailboxById error:', e);\n return null;\n }\n}\n\n/**\n * \u901A\u8FC7\u90AE\u7BB1\u5730\u5740\u67E5\u627E\u90AE\u7BB1\n */\nexport async function findMailboxByAddress(db: DrizzleD1Database, address: string) {\n try {\n const result = await db\n .select()\n .from(mailboxes)\n .where(eq(mailboxes.address, address))\n .execute();\n return result.length === 1 ? result[0] : null;\n } catch (e) {\n console.error('findMailboxByAddress error:', e);\n return null;\n }\n}\n\n/**\n * \u83B7\u53D6\u90AE\u7BB1\u7684\u90AE\u4EF6\u5217\u8868\uFF08\u5E26\u5206\u9875\uFF09\n */\nexport async function getMailboxMessages(\n db: DrizzleD1Database,\n address: string,\n options: { page: number; limit: number; sort: 'asc' | 'desc' }\n) {\n try {\n const offset = (options.page - 1) * options.limit;\n const orderFn = options.sort === 'asc' ? asc : desc;\n\n const [messages, countResult] = await Promise.all([\n db\n .select()\n .from(emails)\n .where(eq(emails.messageTo, address))\n .orderBy(orderFn(emails.createdAt))\n .limit(options.limit)\n .offset(offset)\n .execute(),\n db\n .select({ count: count() })\n .from(emails)\n .where(eq(emails.messageTo, address))\n .execute(),\n ]);\n\n const total = countResult[0]?.count || 0;\n\n return {\n messages,\n total,\n totalPages: Math.ceil(total / options.limit),\n };\n } catch (e) {\n console.error('getMailboxMessages error:', e);\n return { messages: [], total: 0, totalPages: 0 };\n }\n}\n\n/**\n * \u83B7\u53D6\u7279\u5B9A\u90AE\u7BB1\u7684\u7279\u5B9A\u90AE\u4EF6\uFF08\u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\uFF09\n */\nexport async function findMailboxMessage(\n db: DrizzleD1Database,\n address: string,\n messageId: string\n) {\n try {\n const result = await db\n .select()\n .from(emails)\n .where(and(eq(emails.id, messageId), eq(emails.messageTo, address)))\n .execute();\n return result.length === 1 ? result[0] : null;\n } catch (e) {\n console.error('findMailboxMessage error:', e);\n return null;\n }\n}\n\n/**\n * \u5220\u9664\u7279\u5B9A\u90AE\u7BB1\u7684\u7279\u5B9A\u90AE\u4EF6\uFF08\u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\uFF09\n */\nexport async function deleteMailboxMessage(\n db: DrizzleD1Database,\n address: string,\n messageId: string\n) {\n try {\n const result = await db\n .delete(emails)\n .where(and(eq(emails.id, messageId), eq(emails.messageTo, address)))\n .execute();\n return result.rowsAffected > 0;\n } catch (e) {\n console.error('deleteMailboxMessage error:', e);\n return false;\n }\n}\n\n/**\n * \u83B7\u53D6\u90AE\u7BB1\u7684\u90AE\u4EF6\u6570\u91CF\n */\nexport async function getMailboxMessageCount(\n db: DrizzleD1Database,\n address: string\n) {\n try {\n const result = await db\n .select({ count: count() })\n .from(emails)\n .where(eq(emails.messageTo, address))\n .execute();\n return result[0]?.count || 0;\n } catch (e) {\n console.error('getMailboxMessageCount error:', e);\n return 0;\n }\n}\n\n/**\n * \u5220\u9664\u8FC7\u671F\u7684\u90AE\u7BB1\n */\nexport async function deleteExpiredMailboxes(db: DrizzleD1Database) {\n try {\n const now = new Date();\n const result = await db\n .delete(mailboxes)\n .where(lt(mailboxes.expiresAt, now))\n .execute();\n return { count: result.rowsAffected };\n } catch (e) {\n console.error('deleteExpiredMailboxes error:', e);\n return { count: 0 };\n }\n}\n\n// ==================== Site Stats \u76F8\u5173\u51FD\u6570 ====================\n\nconst GLOBAL_STATS_ID = 'global';\n\n/**\n * \u83B7\u53D6\u7AD9\u70B9\u7EDF\u8BA1\u6570\u636E\n */\nexport async function getSiteStats(db: DrizzleD1Database): Promise {\n try {\n const result = await db\n .select()\n .from(siteStats)\n .where(eq(siteStats.id, GLOBAL_STATS_ID))\n .execute();\n return result.length === 1 ? result[0] : null;\n } catch (e) {\n console.error('getSiteStats error:', e);\n return null;\n }\n}\n\n/**\n * \u521D\u59CB\u5316\u7AD9\u70B9\u7EDF\u8BA1\u8BB0\u5F55\uFF08\u5982\u679C\u4E0D\u5B58\u5728\uFF09\n */\nexport async function initSiteStats(db: DrizzleD1Database) {\n try {\n const existing = await getSiteStats(db);\n if (!existing) {\n await db.insert(siteStats).values({\n id: GLOBAL_STATS_ID,\n totalAddressesCreated: 0,\n totalEmailsReceived: 0,\n totalApiCalls: 0,\n totalApiKeysCreated: 0,\n updatedAt: new Date(),\n }).execute();\n }\n } catch (e) {\n console.error('initSiteStats error:', e);\n }\n}\n\n/**\n * \u589E\u52A0\u90AE\u4EF6\u63A5\u6536\u8BA1\u6570\n */\nexport async function incrementEmailsReceived(db: DrizzleD1Database, amount: number = 1) {\n try {\n await initSiteStats(db);\n await db\n .update(siteStats)\n .set({\n totalEmailsReceived: sql`${siteStats.totalEmailsReceived} + ${amount}`,\n updatedAt: new Date(),\n })\n .where(eq(siteStats.id, GLOBAL_STATS_ID))\n .execute();\n } catch (e) {\n console.error('incrementEmailsReceived error:', e);\n }\n}\n\n/**\n * \u589E\u52A0\u90AE\u7BB1\u5730\u5740\u521B\u5EFA\u8BA1\u6570\n */\nexport async function incrementAddressesCreated(db: DrizzleD1Database, amount: number = 1) {\n try {\n await initSiteStats(db);\n await db\n .update(siteStats)\n .set({\n totalAddressesCreated: sql`${siteStats.totalAddressesCreated} + ${amount}`,\n updatedAt: new Date(),\n })\n .where(eq(siteStats.id, GLOBAL_STATS_ID))\n .execute();\n } catch (e) {\n console.error('incrementAddressesCreated error:', e);\n }\n}\n\n/**\n * \u589E\u52A0 API Key \u521B\u5EFA\u8BA1\u6570\n */\nexport async function incrementApiKeysCreated(db: DrizzleD1Database, amount: number = 1) {\n try {\n await initSiteStats(db);\n await db\n .update(siteStats)\n .set({\n totalApiKeysCreated: sql`${siteStats.totalApiKeysCreated} + ${amount}`,\n updatedAt: new Date(),\n })\n .where(eq(siteStats.id, GLOBAL_STATS_ID))\n .execute();\n } catch (e) {\n console.error('incrementApiKeysCreated error:', e);\n }\n}\n\n/**\n * \u589E\u52A0 API \u8C03\u7528\u8BA1\u6570\n */\nexport async function incrementApiCalls(db: DrizzleD1Database, amount: number = 1) {\n try {\n await initSiteStats(db);\n await db\n .update(siteStats)\n .set({\n totalApiCalls: sql`${siteStats.totalApiCalls} + ${amount}`,\n updatedAt: new Date(),\n })\n .where(eq(siteStats.id, GLOBAL_STATS_ID))\n .execute();\n } catch (e) {\n console.error('incrementApiCalls error:', e);\n }\n}", "/// \n\nimport type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface SQLiteD1SessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit;\n\nexport class SQLiteD1Session<\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', D1Result, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteD1Session';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: D1Database,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig | undefined,\n\t\tprivate options: SQLiteD1SessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): D1PreparedQuery {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new D1PreparedQuery(stmt, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\t/*override */ async batch>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: D1PreparedStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tif (builtQuery.params.length > 0) {\n\t\t\t\tbuiltQueries.push((preparedQuery as D1PreparedQuery).stmt.bind(...builtQuery.params));\n\t\t\t} else {\n\t\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\t\tbuiltQueries.push(\n\t\t\t\t\tthis.client.prepare(builtQuery.sql).bind(...builtQuery.params),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// const queryToType: (\n\t\t// \t| { mode: 'all' }\n\t\t// \t| {\n\t\t// \t\tmode: 'all_mapped';\n\t\t// \t\tconfig: { fields: SelectedFieldsOrdered; joinsNotNullableMap?: Record };\n\t\t// \t}\n\t\t// \t| { mode: 'get' }\n\t\t// \t| { mode: 'values' }\n\t\t// \t| { mode: 'raw' }\n\t\t// \t| { mode: 'rqb'; mapper: any }\n\t\t// )[] = [];\n\n\t\t// const builtQueries: D1PreparedStatement[] = queries.map((query) => {\n\t\t// \tif (is(query, SQLiteSelectBase)) {\n\t\t// \t\tconst prepared = query.prepare() as D1PreparedQuery;\n\t\t// \t\tprepared.fields === undefined\n\t\t// \t\t\t? queryToType.push({ mode: 'all' })\n\t\t// \t\t\t: queryToType.push({\n\t\t// \t\t\t\tmode: 'all_mapped',\n\t\t// \t\t\t\tconfig: { fields: prepared.fields, joinsNotNullableMap: prepared.joinsNotNullableMap },\n\t\t// \t\t\t});\n\t\t// \t\treturn prepared.stmt.bind(...prepared.params);\n\t\t// \t} else if (\n\t\t// \t\tis(query, SQLiteInsertBase) || is(query, SQLiteUpdateBase)\n\t\t// \t\t|| is(query, SQLiteDeleteBase)\n\t\t// \t) {\n\t\t// \t\tconst prepared = query.prepare() as D1PreparedQuery;\n\t\t// \t\tqueryToType.push(\n\t\t// \t\t\tquery.config.returning\n\t\t// \t\t\t\t? {\n\t\t// \t\t\t\t\tmode: 'all_mapped',\n\t\t// \t\t\t\t\tconfig: { fields: query.config.returning },\n\t\t// \t\t\t\t}\n\t\t// \t\t\t\t: { mode: 'raw' },\n\t\t// \t\t);\n\t\t// \t\treturn prepared.stmt.bind(...prepared.params);\n\t\t// \t} else if (is(query, SQLiteRaw)) {\n\t\t// \t\tconst builtQuery = this.dialect.sqlToQuery(query.getSQL());\n\t\t// \t\tqueryToType.push(\n\t\t// \t\t\tquery.config.action === 'run' ? { mode: 'raw' } : { mode: query.config.action },\n\t\t// \t\t);\n\t\t// \t\treturn this.client.prepare(builtQuery.sql).bind(...builtQuery.params);\n\t\t// \t} else if (is(query, SQLiteRelationalQuery)) {\n\t\t// \t\tconst preparedRqb = query.prepare() as D1PreparedQuery;\n\t\t// \t\tqueryToType.push({ mode: 'rqb', mapper: preparedRqb.customResultMapper });\n\t\t// \t\treturn preparedRqb.stmt.bind(...preparedRqb.params);\n\t\t// \t}\n\t\t// \tthrow new DrizzleError({ message: 'You can use only drizzle queries in D1 batch API' });\n\t\t// });\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\n\t\t// const res = this.client.batch(builtQueries).then((stmt) =>\n\t\t// \tstmt.map(({ results }, index) => {\n\t\t// \t\tconst action = queryToType[index]!;\n\t\t// \t\tif (action.mode === 'all') {\n\t\t// \t\t\treturn results;\n\t\t// \t\t}\n\t\t// \t\tif (action.mode === 'all_mapped') {\n\t\t// \t\t\tconst mappedRows = this.d1ToRawMapping(results);\n\t\t// \t\t\treturn mappedRows!.map((row) => {\n\t\t// \t\t\t\treturn mapResultRow(\n\t\t// \t\t\t\t\taction.config.fields,\n\t\t// \t\t\t\t\trow,\n\t\t// \t\t\t\t\taction.config.joinsNotNullableMap,\n\t\t// \t\t\t\t);\n\t\t// \t\t\t});\n\t\t// \t\t}\n\t\t// \t\tif (action.mode === 'get') {\n\t\t// \t\t\treturn results![0] as unknown[];\n\t\t// \t\t}\n\t\t// \t\tif (action.mode === 'values') {\n\t\t// \t\t\treturn this.d1ToRawMapping(results);\n\t\t// \t\t}\n\t\t// \t\tif (action.mode === 'raw') {\n\t\t// \t\t\treturn stmt[index];\n\t\t// \t\t}\n\t\t// \t\treturn action.mapper(this.d1ToRawMapping(results));\n\t\t// \t})\n\t\t// );\n\t\t// return res;\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as D1Result).results[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn d1ToRawMapping((result as D1Result).results);\n\t}\n\n\toverride async transaction(\n\t\ttransaction: (tx: D1Transaction) => T | Promise,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise {\n\t\tconst tx = new D1Transaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class D1Transaction<\n\tTFullSchema extends Record,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', D1Result, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'D1Transaction';\n\n\toverride async transaction(transaction: (tx: D1Transaction) => Promise): Promise {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new D1Transaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\n/**\n * This function was taken from the D1 implementation: https://github.com/cloudflare/workerd/blob/4aae9f4c7ae30a59a88ca868c4aff88bda85c956/src/cloudflare/internal/d1-api.ts#L287\n * It may cause issues with duplicated column names in join queries, which should be fixed on the D1 side.\n * @param results\n * @returns\n */\nfunction d1ToRawMapping(results: any) {\n\tconst rows: unknown[][] = [];\n\tfor (const row of results) {\n\t\tconst entry = Object.keys(row).map((k) => row[k]);\n\t\trows.push(entry);\n\t}\n\treturn rows;\n}\n\nexport class D1PreparedQuery extends SQLitePreparedQuery<\n\t{ type: 'async'; run: D1Result; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'D1PreparedQuery';\n\n\t/** @internal */\n\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown;\n\n\t/** @internal */\n\tfields?: SelectedFieldsOrdered;\n\n\t/** @internal */\n\tstmt: D1PreparedStatement;\n\n\tconstructor(\n\t\tstmt: D1PreparedStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t\tthis.stmt = stmt;\n\t}\n\n\trun(placeholderValues?: Record): Promise {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).run();\n\t}\n\n\tasync all(placeholderValues?: Record): Promise {\n\t\tconst { fields, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results!));\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = d1ToRawMapping((rows as D1Result).results);\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record): Promise {\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.bind(...params).all().then(({ results }) => results![0]);\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues);\n\n\t\tif (!rows[0]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, rows[0], joinsNotNullableMap);\n\t}\n\n\toverride mapGetResult(result: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\tresult = d1ToRawMapping((result as D1Result).results)[0];\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper([result as unknown[]]) as T['all'];\n\t\t}\n\n\t\treturn mapResultRow(this.fields!, result as unknown[], this.joinsNotNullableMap);\n\t}\n\n\tvalues(placeholderValues?: Record): Promise {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.bind(...params).raw();\n\t}\n}\n", "/// \nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteD1Session } from './session.ts';\n\nexport class DrizzleD1Database<\n\tTSchema extends Record = Record,\n> extends BaseSQLiteDatabase<'async', D1Result, TSchema> {\n\tstatic readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteD1Session>;\n\n\tasync batch, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise> {\n\t\treturn this.session.batch(batch) as Promise>;\n\t}\n}\n\nexport function drizzle = Record>(\n\tclient: D1Database,\n\tconfig: DrizzleConfig = {},\n): DrizzleD1Database {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteD1Session(client, dialect, schema, { logger });\n\treturn new DrizzleD1Database('async', dialect, session, schema) as DrizzleD1Database;\n}\n", "import { drizzle, DrizzleD1Database } from \"drizzle-orm/d1\";\n\n// \u4FEE\u6539 getWebTursoDB \u4E3A getD1DB\uFF0C\u5E76\u9002\u914D D1 \u6570\u636E\u5E93\nexport function getD1DB(db: D1Database): DrizzleD1Database {\n return drizzle(db);\n}", "/* @ts-self-types=\"./index.d.ts\" */\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n", "export const textEncoder = new TextEncoder();\n\nconst base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst base64Lookup = new Uint8Array(256);\nfor (var i = 0; i < base64Chars.length; i++) {\n base64Lookup[base64Chars.charCodeAt(i)] = i;\n}\n\nexport function decodeBase64(base64) {\n let bufferLength = Math.ceil(base64.length / 4) * 3;\n const len = base64.length;\n\n let p = 0;\n\n if (base64.length % 4 === 3) {\n bufferLength--;\n } else if (base64.length % 4 === 2) {\n bufferLength -= 2;\n } else if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arrayBuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < len; i += 4) {\n let encoded1 = base64Lookup[base64.charCodeAt(i)];\n let encoded2 = base64Lookup[base64.charCodeAt(i + 1)];\n let encoded3 = base64Lookup[base64.charCodeAt(i + 2)];\n let encoded4 = base64Lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arrayBuffer;\n}\n\nexport function getDecoder(charset) {\n charset = charset || 'utf8';\n let decoder;\n\n try {\n decoder = new TextDecoder(charset);\n } catch (err) {\n decoder = new TextDecoder('windows-1252');\n }\n\n return decoder;\n}\n\n/**\n * Converts a Blob into an ArrayBuffer\n * @param {Blob} blob Blob to convert\n * @returns {ArrayBuffer} Converted value\n */\nexport async function blobToArrayBuffer(blob) {\n if ('arrayBuffer' in blob) {\n return await blob.arrayBuffer();\n }\n\n const fr = new FileReader();\n\n return new Promise((resolve, reject) => {\n fr.onload = function (e) {\n resolve(e.target.result);\n };\n\n fr.onerror = function (e) {\n reject(fr.error);\n };\n\n fr.readAsArrayBuffer(blob);\n });\n}\n\nexport function getHex(c) {\n if (\n (c >= 0x30 /* 0 */ && c <= 0x39) /* 9 */ ||\n (c >= 0x61 /* a */ && c <= 0x66) /* f */ ||\n (c >= 0x41 /* A */ && c <= 0x46) /* F */\n ) {\n return String.fromCharCode(c);\n }\n return false;\n}\n\n/**\n * Decode a complete mime word encoded string\n *\n * @param {String} str Mime word encoded string\n * @return {String} Decoded unicode string\n */\nexport function decodeWord(charset, encoding, str) {\n // RFC2231 added language tag to the encoding\n // see: https://tools.ietf.org/html/rfc2231#section-5\n // this implementation silently ignores this tag\n let splitPos = charset.indexOf('*');\n if (splitPos >= 0) {\n charset = charset.substr(0, splitPos);\n }\n\n encoding = encoding.toUpperCase();\n\n let byteStr;\n\n if (encoding === 'Q') {\n str = str\n // remove spaces between = and hex char, this might indicate invalidly applied line splitting\n .replace(/=\\s+([0-9a-fA-F])/g, '=$1')\n // convert all underscores to spaces\n .replace(/[_\\s]/g, ' ');\n\n let buf = textEncoder.encode(str);\n let encodedBytes = [];\n for (let i = 0, len = buf.length; i < len; i++) {\n let c = buf[i];\n if (i <= len - 2 && c === 0x3d /* = */) {\n let c1 = getHex(buf[i + 1]);\n let c2 = getHex(buf[i + 2]);\n if (c1 && c2) {\n let c = parseInt(c1 + c2, 16);\n encodedBytes.push(c);\n i += 2;\n continue;\n }\n }\n encodedBytes.push(c);\n }\n byteStr = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n } else if (encoding === 'B') {\n byteStr = decodeBase64(str.replace(/[^a-zA-Z0-9\\+\\/=]+/g, ''));\n } else {\n // keep as is, convert ArrayBuffer to unicode string, assume utf8\n byteStr = textEncoder.encode(str);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nexport function decodeWords(str) {\n let joinString = true;\n let done = false;\n\n while (!done) {\n let result = (str || '')\n .toString()\n // find base64 words that can be joined\n .replace(\n /(=\\?([^?]+)\\?[Bb]\\?([^?]*)\\?=)\\s*(?==\\?([^?]+)\\?[Bb]\\?[^?]*\\?=)/g,\n (match, left, chLeft, encodedLeftStr, chRight) => {\n if (!joinString) {\n return match;\n }\n // only mark b64 chunks to be joined if charsets match and left side does not end with =\n if (chLeft === chRight && encodedLeftStr.length % 4 === 0 && !/=$/.test(encodedLeftStr)) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n\n return match;\n }\n )\n // find QP words that can be joined\n .replace(\n /(=\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)\\s*(?==\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)/g,\n (match, left, chLeft, chRight) => {\n if (!joinString) {\n return match;\n }\n // only mark QP chunks to be joined if charsets match\n if (chLeft === chRight) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n return match;\n }\n )\n // join base64 encoded words\n .replace(/(\\?=)?__\\x00JOIN\\x00__(=\\?([^?]+)\\?[QqBb]\\?)?/g, '')\n // remove spaces between mime encoded words\n .replace(/(=\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)\\s+(?==\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)/g, '$1')\n // decode words\n .replace(/=\\?([\\w_\\-*]+)\\?([QqBb])\\?([^?]*)\\?=/g, (m, charset, encoding, text) =>\n decodeWord(charset, encoding, text)\n );\n\n if (joinString && result.indexOf('\\ufffd') >= 0) {\n // text contains \\ufffd (EF BF BD), so unicode conversion failed, retry without joining strings\n joinString = false;\n } else {\n return result;\n }\n }\n}\n\nexport function decodeURIComponentWithCharset(encodedStr, charset) {\n charset = charset || 'utf-8';\n\n let encodedBytes = [];\n for (let i = 0; i < encodedStr.length; i++) {\n let c = encodedStr.charAt(i);\n if (c === '%' && /^[a-f0-9]{2}/i.test(encodedStr.substr(i + 1, 2))) {\n // encoded sequence\n let byte = encodedStr.substr(i + 1, 2);\n i += 2;\n encodedBytes.push(parseInt(byte, 16));\n } else if (c.charCodeAt(0) > 126) {\n c = textEncoder.encode(c);\n for (let j = 0; j < c.length; j++) {\n encodedBytes.push(c[j]);\n }\n } else {\n // \"normal\" char\n encodedBytes.push(c.charCodeAt(0));\n }\n }\n\n const byteStr = new ArrayBuffer(encodedBytes.length);\n const dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nexport function decodeParameterValueContinuations(header) {\n // handle parameter value continuations\n // https://tools.ietf.org/html/rfc2231#section-3\n\n // preprocess values\n let paramKeys = new Map();\n\n Object.keys(header.params).forEach(key => {\n let match = key.match(/\\*((\\d+)\\*?)?$/);\n if (!match) {\n // nothing to do here, does not seem like a continuation param\n return;\n }\n\n let actualKey = key.substr(0, match.index).toLowerCase();\n let nr = Number(match[2]) || 0;\n\n let paramVal;\n if (!paramKeys.has(actualKey)) {\n paramVal = {\n charset: false,\n values: []\n };\n paramKeys.set(actualKey, paramVal);\n } else {\n paramVal = paramKeys.get(actualKey);\n }\n\n let value = header.params[key];\n if (nr === 0 && match[0].charAt(match[0].length - 1) === '*' && (match = value.match(/^([^']*)'[^']*'(.*)$/))) {\n paramVal.charset = match[1] || 'utf-8';\n value = match[2];\n }\n\n paramVal.values.push({ nr, value });\n\n // remove the old reference\n delete header.params[key];\n });\n\n paramKeys.forEach((paramVal, key) => {\n header.params[key] = decodeURIComponentWithCharset(\n paramVal.values\n .sort((a, b) => a.nr - b.nr)\n .map(a => a.value)\n .join(''),\n paramVal.charset\n );\n });\n}\n", "import { blobToArrayBuffer } from './decode-strings.js';\n\nexport default class PassThroughDecoder {\n constructor() {\n this.chunks = [];\n }\n\n update(line) {\n this.chunks.push(line);\n this.chunks.push('\\n');\n }\n\n finalize() {\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n", "import { decodeBase64, blobToArrayBuffer } from './decode-strings.js';\n\nexport default class Base64Decoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.chunks = [];\n\n this.remainder = '';\n }\n\n update(buffer) {\n let str = this.decoder.decode(buffer);\n\n if (/[^a-zA-Z0-9+\\/]/.test(str)) {\n str = str.replace(/[^a-zA-Z0-9+\\/]+/g, '');\n }\n\n this.remainder += str;\n\n if (this.remainder.length >= this.maxChunkSize) {\n let allowedBytes = Math.floor(this.remainder.length / 4) * 4;\n let base64Str;\n\n if (allowedBytes === this.remainder.length) {\n base64Str = this.remainder;\n this.remainder = '';\n } else {\n base64Str = this.remainder.substr(0, allowedBytes);\n this.remainder = this.remainder.substr(allowedBytes);\n }\n\n if (base64Str.length) {\n this.chunks.push(decodeBase64(base64Str));\n }\n }\n }\n\n finalize() {\n if (this.remainder && !/^=+$/.test(this.remainder)) {\n this.chunks.push(decodeBase64(this.remainder));\n }\n\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n", "import { blobToArrayBuffer } from './decode-strings.js';\n\n// Regex patterns compiled once for performance\nconst VALID_QP_REGEX = /^=[a-f0-9]{2}$/i;\nconst QP_SPLIT_REGEX = /(?==[a-f0-9]{2})/i;\nconst SOFT_LINE_BREAK_REGEX = /=\\r?\\n/g;\nconst PARTIAL_QP_ENDING_REGEX = /=[a-fA-F0-9]?$/;\n\nexport default class QPDecoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.remainder = '';\n\n this.chunks = [];\n }\n\n decodeQPBytes(encodedBytes) {\n let buf = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(buf);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, parseInt(encodedBytes[i], 16));\n }\n return buf;\n }\n\n decodeChunks(str) {\n // unwrap newlines\n str = str.replace(SOFT_LINE_BREAK_REGEX, '');\n\n let list = str.split(QP_SPLIT_REGEX);\n let encodedBytes = [];\n for (let part of list) {\n if (part.charAt(0) !== '=') {\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n continue;\n }\n\n if (part.length === 3) {\n // Validate that this is actually a valid QP sequence\n if (VALID_QP_REGEX.test(part)) {\n encodedBytes.push(part.substr(1));\n } else {\n // Not a valid QP sequence, treat as literal text\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n }\n continue;\n }\n\n if (part.length > 3) {\n // First 3 chars should be a valid QP sequence\n const firstThree = part.substr(0, 3);\n if (VALID_QP_REGEX.test(firstThree)) {\n encodedBytes.push(part.substr(1, 2));\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n\n part = part.substr(3);\n this.chunks.push(part);\n } else {\n // Not a valid QP sequence, treat entire part as literal\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n }\n }\n }\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n }\n\n update(buffer) {\n // expect full lines, so add line terminator as well\n let str = this.decoder.decode(buffer) + '\\n';\n\n str = this.remainder + str;\n\n if (str.length < this.maxChunkSize) {\n this.remainder = str;\n return;\n }\n\n this.remainder = '';\n\n let partialEnding = str.match(PARTIAL_QP_ENDING_REGEX);\n if (partialEnding) {\n if (partialEnding.index === 0) {\n this.remainder = str;\n return;\n }\n this.remainder = str.substr(partialEnding.index);\n str = str.substr(0, partialEnding.index);\n }\n\n this.decodeChunks(str);\n }\n\n finalize() {\n if (this.remainder.length) {\n this.decodeChunks(this.remainder);\n this.remainder = '';\n }\n\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n", "import { getDecoder, decodeParameterValueContinuations, textEncoder } from './decode-strings.js';\nimport PassThroughDecoder from './pass-through-decoder.js';\nimport Base64Decoder from './base64-decoder.js';\nimport QPDecoder from './qp-decoder.js';\n\nexport default class MimeNode {\n constructor(options) {\n this.options = options || {};\n\n this.postalMime = this.options.postalMime;\n\n this.root = !!this.options.parentNode;\n this.childNodes = [];\n\n if (this.options.parentNode) {\n this.parentNode = this.options.parentNode;\n\n this.depth = this.parentNode.depth + 1;\n if (this.depth > this.options.maxNestingDepth) {\n throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);\n }\n\n this.options.parentNode.childNodes.push(this);\n } else {\n this.depth = 0;\n }\n\n this.state = 'header';\n\n this.headerLines = [];\n this.headerSize = 0;\n\n this.contentType = {\n value: 'text/plain',\n default: true\n };\n\n this.contentTransferEncoding = {\n value: '8bit'\n };\n\n this.contentDisposition = {\n value: ''\n };\n\n this.headers = [];\n\n this.contentDecoder = false;\n }\n\n setupContentDecoder(transferEncoding) {\n if (/base64/i.test(transferEncoding)) {\n this.contentDecoder = new Base64Decoder();\n } else if (/quoted-printable/i.test(transferEncoding)) {\n this.contentDecoder = new QPDecoder({ decoder: getDecoder(this.contentType.parsed.params.charset) });\n } else {\n this.contentDecoder = new PassThroughDecoder();\n }\n }\n\n async finalize() {\n if (this.state === 'finished') {\n return;\n }\n\n if (this.state === 'header') {\n this.processHeaders();\n }\n\n // remove self from boundary listing\n let boundaries = this.postalMime.boundaries;\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n if (boundary.node === this) {\n boundaries.splice(i, 1);\n break;\n }\n }\n\n await this.finalizeChildNodes();\n\n this.content = this.contentDecoder ? await this.contentDecoder.finalize() : null;\n\n this.state = 'finished';\n }\n\n async finalizeChildNodes() {\n for (let childNode of this.childNodes) {\n await childNode.finalize();\n }\n }\n\n parseStructuredHeader(str) {\n let response = {\n value: false,\n params: {}\n };\n\n let key = false;\n let value = '';\n let stage = 'value';\n\n let quote = false;\n let escaped = false;\n let chr;\n\n for (let i = 0, len = str.length; i < len; i++) {\n chr = str.charAt(i);\n switch (stage) {\n case 'key':\n if (chr === '=') {\n key = value.trim().toLowerCase();\n stage = 'value';\n value = '';\n break;\n }\n value += chr;\n break;\n case 'value':\n if (escaped) {\n value += chr;\n } else if (chr === '\\\\') {\n escaped = true;\n continue;\n } else if (quote && chr === quote) {\n quote = false;\n } else if (!quote && chr === '\"') {\n quote = chr;\n } else if (!quote && chr === ';') {\n if (key === false) {\n response.value = value.trim();\n } else {\n response.params[key] = value.trim();\n }\n stage = 'key';\n value = '';\n } else {\n value += chr;\n }\n escaped = false;\n break;\n }\n }\n\n // finalize remainder\n value = value.trim();\n if (stage === 'value') {\n if (key === false) {\n // default value\n response.value = value;\n } else {\n // subkey value\n response.params[key] = value;\n }\n } else if (value) {\n // treat as key without value, see emptykey:\n // Header-Key: somevalue; key=value; emptykey\n response.params[value.toLowerCase()] = '';\n }\n\n if (response.value) {\n response.value = response.value.toLowerCase();\n }\n\n // convert Parameter Value Continuations into single strings\n decodeParameterValueContinuations(response);\n\n return response;\n }\n\n decodeFlowedText(str, delSp) {\n return (\n str\n .split(/\\r?\\n/)\n // remove soft linebreaks\n // soft linebreaks are added after space symbols\n .reduce((previousValue, currentValue) => {\n if (/ $/.test(previousValue) && !/(^|\\n)-- $/.test(previousValue)) {\n if (delSp) {\n // delsp adds space to text to be able to fold it\n // these spaces can be removed once the text is unfolded\n return previousValue.slice(0, -1) + currentValue;\n } else {\n return previousValue + currentValue;\n }\n } else {\n return previousValue + '\\n' + currentValue;\n }\n })\n // remove whitespace stuffing\n // http://tools.ietf.org/html/rfc3676#section-4.4\n .replace(/^ /gm, '')\n );\n }\n\n getTextContent() {\n if (!this.content) {\n return '';\n }\n\n let str = getDecoder(this.contentType.parsed.params.charset).decode(this.content);\n\n if (/^flowed$/i.test(this.contentType.parsed.params.format)) {\n str = this.decodeFlowedText(str, /^yes$/i.test(this.contentType.parsed.params.delsp));\n }\n\n return str;\n }\n\n processHeaders() {\n for (let i = this.headerLines.length - 1; i >= 0; i--) {\n let line = this.headerLines[i];\n if (i && /^\\s/.test(line)) {\n this.headerLines[i - 1] += '\\n' + line;\n this.headerLines.splice(i, 1);\n } else {\n // remove folding and extra WS\n line = line.replace(/\\s+/g, ' ');\n let sep = line.indexOf(':');\n let key = sep < 0 ? line.trim() : line.substr(0, sep).trim();\n let value = sep < 0 ? '' : line.substr(sep + 1).trim();\n this.headers.push({ key: key.toLowerCase(), originalKey: key, value });\n\n switch (key.toLowerCase()) {\n case 'content-type':\n if (this.contentType.default) {\n this.contentType = { value, parsed: {} };\n }\n break;\n case 'content-transfer-encoding':\n this.contentTransferEncoding = { value, parsed: {} };\n break;\n case 'content-disposition':\n this.contentDisposition = { value, parsed: {} };\n break;\n case 'content-id':\n this.contentId = value;\n break;\n case 'content-description':\n this.contentDescription = value;\n break;\n }\n }\n }\n\n this.contentType.parsed = this.parseStructuredHeader(this.contentType.value);\n this.contentType.multipart = /^multipart\\//i.test(this.contentType.parsed.value)\n ? this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf('/') + 1)\n : false;\n\n if (this.contentType.multipart && this.contentType.parsed.params.boundary) {\n // add self to boundary terminator listing\n this.postalMime.boundaries.push({\n value: textEncoder.encode(this.contentType.parsed.params.boundary),\n node: this\n });\n }\n\n this.contentDisposition.parsed = this.parseStructuredHeader(this.contentDisposition.value);\n\n this.contentTransferEncoding.encoding = this.contentTransferEncoding.value\n .toLowerCase()\n .split(/[^\\w-]/)\n .shift();\n\n this.setupContentDecoder(this.contentTransferEncoding.encoding);\n }\n\n feed(line) {\n switch (this.state) {\n case 'header':\n if (!line.length) {\n this.state = 'body';\n return this.processHeaders();\n }\n\n this.headerSize += line.length;\n\n if (this.headerSize > this.options.maxHeadersSize) {\n let error = new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);\n throw error;\n }\n\n this.headerLines.push(getDecoder().decode(line));\n break;\n case 'body': {\n // add line to body\n this.contentDecoder.update(line);\n }\n }\n }\n}\n", "// Entity map from https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references\nexport const htmlEntities = {\n 'Æ': '\\u00C6',\n 'Æ': '\\u00C6',\n '&': '\\u0026',\n '&': '\\u0026',\n 'Á': '\\u00C1',\n 'Á': '\\u00C1',\n 'Ă': '\\u0102',\n 'Â': '\\u00C2',\n 'Â': '\\u00C2',\n 'А': '\\u0410',\n '𝔄': '\\uD835\\uDD04',\n 'À': '\\u00C0',\n 'À': '\\u00C0',\n 'Α': '\\u0391',\n 'Ā': '\\u0100',\n '⩓': '\\u2A53',\n 'Ą': '\\u0104',\n '𝔸': '\\uD835\\uDD38',\n '⁡': '\\u2061',\n 'Å': '\\u00C5',\n 'Å': '\\u00C5',\n '𝒜': '\\uD835\\uDC9C',\n '≔': '\\u2254',\n 'Ã': '\\u00C3',\n 'Ã': '\\u00C3',\n 'Ä': '\\u00C4',\n 'Ä': '\\u00C4',\n '∖': '\\u2216',\n '⫧': '\\u2AE7',\n '⌆': '\\u2306',\n 'Б': '\\u0411',\n '∵': '\\u2235',\n 'ℬ': '\\u212C',\n 'Β': '\\u0392',\n '𝔅': '\\uD835\\uDD05',\n '𝔹': '\\uD835\\uDD39',\n '˘': '\\u02D8',\n 'ℬ': '\\u212C',\n '≎': '\\u224E',\n 'Ч': '\\u0427',\n '©': '\\u00A9',\n '©': '\\u00A9',\n 'Ć': '\\u0106',\n '⋒': '\\u22D2',\n 'ⅅ': '\\u2145',\n 'ℭ': '\\u212D',\n 'Č': '\\u010C',\n 'Ç': '\\u00C7',\n 'Ç': '\\u00C7',\n 'Ĉ': '\\u0108',\n '∰': '\\u2230',\n 'Ċ': '\\u010A',\n '¸': '\\u00B8',\n '·': '\\u00B7',\n 'ℭ': '\\u212D',\n 'Χ': '\\u03A7',\n '⊙': '\\u2299',\n '⊖': '\\u2296',\n '⊕': '\\u2295',\n '⊗': '\\u2297',\n '∲': '\\u2232',\n '”': '\\u201D',\n '’': '\\u2019',\n '∷': '\\u2237',\n '⩴': '\\u2A74',\n '≡': '\\u2261',\n '∯': '\\u222F',\n '∮': '\\u222E',\n 'ℂ': '\\u2102',\n '∐': '\\u2210',\n '∳': '\\u2233',\n '⨯': '\\u2A2F',\n '𝒞': '\\uD835\\uDC9E',\n '⋓': '\\u22D3',\n '≍': '\\u224D',\n 'ⅅ': '\\u2145',\n '⤑': '\\u2911',\n 'Ђ': '\\u0402',\n 'Ѕ': '\\u0405',\n 'Џ': '\\u040F',\n '‡': '\\u2021',\n '↡': '\\u21A1',\n '⫤': '\\u2AE4',\n 'Ď': '\\u010E',\n 'Д': '\\u0414',\n '∇': '\\u2207',\n 'Δ': '\\u0394',\n '𝔇': '\\uD835\\uDD07',\n '´': '\\u00B4',\n '˙': '\\u02D9',\n '˝': '\\u02DD',\n '`': '\\u0060',\n '˜': '\\u02DC',\n '⋄': '\\u22C4',\n 'ⅆ': '\\u2146',\n '𝔻': '\\uD835\\uDD3B',\n '¨': '\\u00A8',\n '⃜': '\\u20DC',\n '≐': '\\u2250',\n '∯': '\\u222F',\n '¨': '\\u00A8',\n '⇓': '\\u21D3',\n '⇐': '\\u21D0',\n '⇔': '\\u21D4',\n '⫤': '\\u2AE4',\n '⟸': '\\u27F8',\n '⟺': '\\u27FA',\n '⟹': '\\u27F9',\n '⇒': '\\u21D2',\n '⊨': '\\u22A8',\n '⇑': '\\u21D1',\n '⇕': '\\u21D5',\n '∥': '\\u2225',\n '↓': '\\u2193',\n '⤓': '\\u2913',\n '⇵': '\\u21F5',\n '̑': '\\u0311',\n '⥐': '\\u2950',\n '⥞': '\\u295E',\n '↽': '\\u21BD',\n '⥖': '\\u2956',\n '⥟': '\\u295F',\n '⇁': '\\u21C1',\n '⥗': '\\u2957',\n '⊤': '\\u22A4',\n '↧': '\\u21A7',\n '⇓': '\\u21D3',\n '𝒟': '\\uD835\\uDC9F',\n 'Đ': '\\u0110',\n 'Ŋ': '\\u014A',\n 'Ð': '\\u00D0',\n 'Ð': '\\u00D0',\n 'É': '\\u00C9',\n 'É': '\\u00C9',\n 'Ě': '\\u011A',\n 'Ê': '\\u00CA',\n 'Ê': '\\u00CA',\n 'Э': '\\u042D',\n 'Ė': '\\u0116',\n '𝔈': '\\uD835\\uDD08',\n 'È': '\\u00C8',\n 'È': '\\u00C8',\n '∈': '\\u2208',\n 'Ē': '\\u0112',\n '◻': '\\u25FB',\n '▫': '\\u25AB',\n 'Ę': '\\u0118',\n '𝔼': '\\uD835\\uDD3C',\n 'Ε': '\\u0395',\n '⩵': '\\u2A75',\n '≂': '\\u2242',\n '⇌': '\\u21CC',\n 'ℰ': '\\u2130',\n '⩳': '\\u2A73',\n 'Η': '\\u0397',\n 'Ë': '\\u00CB',\n 'Ë': '\\u00CB',\n '∃': '\\u2203',\n 'ⅇ': '\\u2147',\n 'Ф': '\\u0424',\n '𝔉': '\\uD835\\uDD09',\n '◼': '\\u25FC',\n '▪': '\\u25AA',\n '𝔽': '\\uD835\\uDD3D',\n '∀': '\\u2200',\n 'ℱ': '\\u2131',\n 'ℱ': '\\u2131',\n 'Ѓ': '\\u0403',\n '>': '\\u003E',\n '>': '\\u003E',\n 'Γ': '\\u0393',\n 'Ϝ': '\\u03DC',\n 'Ğ': '\\u011E',\n 'Ģ': '\\u0122',\n 'Ĝ': '\\u011C',\n 'Г': '\\u0413',\n 'Ġ': '\\u0120',\n '𝔊': '\\uD835\\uDD0A',\n '⋙': '\\u22D9',\n '𝔾': '\\uD835\\uDD3E',\n '≥': '\\u2265',\n '⋛': '\\u22DB',\n '≧': '\\u2267',\n '⪢': '\\u2AA2',\n '≷': '\\u2277',\n '⩾': '\\u2A7E',\n '≳': '\\u2273',\n '𝒢': '\\uD835\\uDCA2',\n '≫': '\\u226B',\n 'Ъ': '\\u042A',\n 'ˇ': '\\u02C7',\n '^': '\\u005E',\n 'Ĥ': '\\u0124',\n 'ℌ': '\\u210C',\n 'ℋ': '\\u210B',\n 'ℍ': '\\u210D',\n '─': '\\u2500',\n 'ℋ': '\\u210B',\n 'Ħ': '\\u0126',\n '≎': '\\u224E',\n '≏': '\\u224F',\n 'Е': '\\u0415',\n 'IJ': '\\u0132',\n 'Ё': '\\u0401',\n 'Í': '\\u00CD',\n 'Í': '\\u00CD',\n 'Î': '\\u00CE',\n 'Î': '\\u00CE',\n 'И': '\\u0418',\n 'İ': '\\u0130',\n 'ℑ': '\\u2111',\n 'Ì': '\\u00CC',\n 'Ì': '\\u00CC',\n 'ℑ': '\\u2111',\n 'Ī': '\\u012A',\n 'ⅈ': '\\u2148',\n '⇒': '\\u21D2',\n '∬': '\\u222C',\n '∫': '\\u222B',\n '⋂': '\\u22C2',\n '⁣': '\\u2063',\n '⁢': '\\u2062',\n 'Į': '\\u012E',\n '𝕀': '\\uD835\\uDD40',\n 'Ι': '\\u0399',\n 'ℐ': '\\u2110',\n 'Ĩ': '\\u0128',\n 'І': '\\u0406',\n 'Ï': '\\u00CF',\n 'Ï': '\\u00CF',\n 'Ĵ': '\\u0134',\n 'Й': '\\u0419',\n '𝔍': '\\uD835\\uDD0D',\n '𝕁': '\\uD835\\uDD41',\n '𝒥': '\\uD835\\uDCA5',\n 'Ј': '\\u0408',\n 'Є': '\\u0404',\n 'Х': '\\u0425',\n 'Ќ': '\\u040C',\n 'Κ': '\\u039A',\n 'Ķ': '\\u0136',\n 'К': '\\u041A',\n '𝔎': '\\uD835\\uDD0E',\n '𝕂': '\\uD835\\uDD42',\n '𝒦': '\\uD835\\uDCA6',\n 'Љ': '\\u0409',\n '<': '\\u003C',\n '<': '\\u003C',\n 'Ĺ': '\\u0139',\n 'Λ': '\\u039B',\n '⟪': '\\u27EA',\n 'ℒ': '\\u2112',\n '↞': '\\u219E',\n 'Ľ': '\\u013D',\n 'Ļ': '\\u013B',\n 'Л': '\\u041B',\n '⟨': '\\u27E8',\n '←': '\\u2190',\n '⇤': '\\u21E4',\n '⇆': '\\u21C6',\n '⌈': '\\u2308',\n '⟦': '\\u27E6',\n '⥡': '\\u2961',\n '⇃': '\\u21C3',\n '⥙': '\\u2959',\n '⌊': '\\u230A',\n '↔': '\\u2194',\n '⥎': '\\u294E',\n '⊣': '\\u22A3',\n '↤': '\\u21A4',\n '⥚': '\\u295A',\n '⊲': '\\u22B2',\n '⧏': '\\u29CF',\n '⊴': '\\u22B4',\n '⥑': '\\u2951',\n '⥠': '\\u2960',\n '↿': '\\u21BF',\n '⥘': '\\u2958',\n '↼': '\\u21BC',\n '⥒': '\\u2952',\n '⇐': '\\u21D0',\n '⇔': '\\u21D4',\n '⋚': '\\u22DA',\n '≦': '\\u2266',\n '≶': '\\u2276',\n '⪡': '\\u2AA1',\n '⩽': '\\u2A7D',\n '≲': '\\u2272',\n '𝔏': '\\uD835\\uDD0F',\n '⋘': '\\u22D8',\n '⇚': '\\u21DA',\n 'Ŀ': '\\u013F',\n '⟵': '\\u27F5',\n '⟷': '\\u27F7',\n '⟶': '\\u27F6',\n '⟸': '\\u27F8',\n '⟺': '\\u27FA',\n '⟹': '\\u27F9',\n '𝕃': '\\uD835\\uDD43',\n '↙': '\\u2199',\n '↘': '\\u2198',\n 'ℒ': '\\u2112',\n '↰': '\\u21B0',\n 'Ł': '\\u0141',\n '≪': '\\u226A',\n '⤅': '\\u2905',\n 'М': '\\u041C',\n ' ': '\\u205F',\n 'ℳ': '\\u2133',\n '𝔐': '\\uD835\\uDD10',\n '∓': '\\u2213',\n '𝕄': '\\uD835\\uDD44',\n 'ℳ': '\\u2133',\n 'Μ': '\\u039C',\n 'Њ': '\\u040A',\n 'Ń': '\\u0143',\n 'Ň': '\\u0147',\n 'Ņ': '\\u0145',\n 'Н': '\\u041D',\n '​': '\\u200B',\n '​': '\\u200B',\n '​': '\\u200B',\n '​': '\\u200B',\n '≫': '\\u226B',\n '≪': '\\u226A',\n ' ': '\\u000A',\n '𝔑': '\\uD835\\uDD11',\n '⁠': '\\u2060',\n ' ': '\\u00A0',\n 'ℕ': '\\u2115',\n '⫬': '\\u2AEC',\n '≢': '\\u2262',\n '≭': '\\u226D',\n '∦': '\\u2226',\n '∉': '\\u2209',\n '≠': '\\u2260',\n '≂̸': '\\u2242\\u0338',\n '∄': '\\u2204',\n '≯': '\\u226F',\n '≱': '\\u2271',\n '≧̸': '\\u2267\\u0338',\n '≫̸': '\\u226B\\u0338',\n '≹': '\\u2279',\n '⩾̸': '\\u2A7E\\u0338',\n '≵': '\\u2275',\n '≎̸': '\\u224E\\u0338',\n '≏̸': '\\u224F\\u0338',\n '⋪': '\\u22EA',\n '⧏̸': '\\u29CF\\u0338',\n '⋬': '\\u22EC',\n '≮': '\\u226E',\n '≰': '\\u2270',\n '≸': '\\u2278',\n '≪̸': '\\u226A\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '≴': '\\u2274',\n '⪢̸': '\\u2AA2\\u0338',\n '⪡̸': '\\u2AA1\\u0338',\n '⊀': '\\u2280',\n '⪯̸': '\\u2AAF\\u0338',\n '⋠': '\\u22E0',\n '∌': '\\u220C',\n '⋫': '\\u22EB',\n '⧐̸': '\\u29D0\\u0338',\n '⋭': '\\u22ED',\n '⊏̸': '\\u228F\\u0338',\n '⋢': '\\u22E2',\n '⊐̸': '\\u2290\\u0338',\n '⋣': '\\u22E3',\n '⊂⃒': '\\u2282\\u20D2',\n '⊈': '\\u2288',\n '⊁': '\\u2281',\n '⪰̸': '\\u2AB0\\u0338',\n '⋡': '\\u22E1',\n '≿̸': '\\u227F\\u0338',\n '⊃⃒': '\\u2283\\u20D2',\n '⊉': '\\u2289',\n '≁': '\\u2241',\n '≄': '\\u2244',\n '≇': '\\u2247',\n '≉': '\\u2249',\n '∤': '\\u2224',\n '𝒩': '\\uD835\\uDCA9',\n 'Ñ': '\\u00D1',\n 'Ñ': '\\u00D1',\n 'Ν': '\\u039D',\n 'Œ': '\\u0152',\n 'Ó': '\\u00D3',\n 'Ó': '\\u00D3',\n 'Ô': '\\u00D4',\n 'Ô': '\\u00D4',\n 'О': '\\u041E',\n 'Ő': '\\u0150',\n '𝔒': '\\uD835\\uDD12',\n 'Ò': '\\u00D2',\n 'Ò': '\\u00D2',\n 'Ō': '\\u014C',\n 'Ω': '\\u03A9',\n 'Ο': '\\u039F',\n '𝕆': '\\uD835\\uDD46',\n '“': '\\u201C',\n '‘': '\\u2018',\n '⩔': '\\u2A54',\n '𝒪': '\\uD835\\uDCAA',\n 'Ø': '\\u00D8',\n 'Ø': '\\u00D8',\n 'Õ': '\\u00D5',\n 'Õ': '\\u00D5',\n '⨷': '\\u2A37',\n 'Ö': '\\u00D6',\n 'Ö': '\\u00D6',\n '‾': '\\u203E',\n '⏞': '\\u23DE',\n '⎴': '\\u23B4',\n '⏜': '\\u23DC',\n '∂': '\\u2202',\n 'П': '\\u041F',\n '𝔓': '\\uD835\\uDD13',\n 'Φ': '\\u03A6',\n 'Π': '\\u03A0',\n '±': '\\u00B1',\n 'ℌ': '\\u210C',\n 'ℙ': '\\u2119',\n '⪻': '\\u2ABB',\n '≺': '\\u227A',\n '⪯': '\\u2AAF',\n '≼': '\\u227C',\n '≾': '\\u227E',\n '″': '\\u2033',\n '∏': '\\u220F',\n '∷': '\\u2237',\n '∝': '\\u221D',\n '𝒫': '\\uD835\\uDCAB',\n 'Ψ': '\\u03A8',\n '"': '\\u0022',\n '"': '\\u0022',\n '𝔔': '\\uD835\\uDD14',\n 'ℚ': '\\u211A',\n '𝒬': '\\uD835\\uDCAC',\n '⤐': '\\u2910',\n '®': '\\u00AE',\n '®': '\\u00AE',\n 'Ŕ': '\\u0154',\n '⟫': '\\u27EB',\n '↠': '\\u21A0',\n '⤖': '\\u2916',\n 'Ř': '\\u0158',\n 'Ŗ': '\\u0156',\n 'Р': '\\u0420',\n 'ℜ': '\\u211C',\n '∋': '\\u220B',\n '⇋': '\\u21CB',\n '⥯': '\\u296F',\n 'ℜ': '\\u211C',\n 'Ρ': '\\u03A1',\n '⟩': '\\u27E9',\n '→': '\\u2192',\n '⇥': '\\u21E5',\n '⇄': '\\u21C4',\n '⌉': '\\u2309',\n '⟧': '\\u27E7',\n '⥝': '\\u295D',\n '⇂': '\\u21C2',\n '⥕': '\\u2955',\n '⌋': '\\u230B',\n '⊢': '\\u22A2',\n '↦': '\\u21A6',\n '⥛': '\\u295B',\n '⊳': '\\u22B3',\n '⧐': '\\u29D0',\n '⊵': '\\u22B5',\n '⥏': '\\u294F',\n '⥜': '\\u295C',\n '↾': '\\u21BE',\n '⥔': '\\u2954',\n '⇀': '\\u21C0',\n '⥓': '\\u2953',\n '⇒': '\\u21D2',\n 'ℝ': '\\u211D',\n '⥰': '\\u2970',\n '⇛': '\\u21DB',\n 'ℛ': '\\u211B',\n '↱': '\\u21B1',\n '⧴': '\\u29F4',\n 'Щ': '\\u0429',\n 'Ш': '\\u0428',\n 'Ь': '\\u042C',\n 'Ś': '\\u015A',\n '⪼': '\\u2ABC',\n 'Š': '\\u0160',\n 'Ş': '\\u015E',\n 'Ŝ': '\\u015C',\n 'С': '\\u0421',\n '𝔖': '\\uD835\\uDD16',\n '↓': '\\u2193',\n '←': '\\u2190',\n '→': '\\u2192',\n '↑': '\\u2191',\n 'Σ': '\\u03A3',\n '∘': '\\u2218',\n '𝕊': '\\uD835\\uDD4A',\n '√': '\\u221A',\n '□': '\\u25A1',\n '⊓': '\\u2293',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '⊔': '\\u2294',\n '𝒮': '\\uD835\\uDCAE',\n '⋆': '\\u22C6',\n '⋐': '\\u22D0',\n '⋐': '\\u22D0',\n '⊆': '\\u2286',\n '≻': '\\u227B',\n '⪰': '\\u2AB0',\n '≽': '\\u227D',\n '≿': '\\u227F',\n '∋': '\\u220B',\n '∑': '\\u2211',\n '⋑': '\\u22D1',\n '⊃': '\\u2283',\n '⊇': '\\u2287',\n '⋑': '\\u22D1',\n 'Þ': '\\u00DE',\n 'Þ': '\\u00DE',\n '™': '\\u2122',\n 'Ћ': '\\u040B',\n 'Ц': '\\u0426',\n ' ': '\\u0009',\n 'Τ': '\\u03A4',\n 'Ť': '\\u0164',\n 'Ţ': '\\u0162',\n 'Т': '\\u0422',\n '𝔗': '\\uD835\\uDD17',\n '∴': '\\u2234',\n 'Θ': '\\u0398',\n '  ': '\\u205F\\u200A',\n ' ': '\\u2009',\n '∼': '\\u223C',\n '≃': '\\u2243',\n '≅': '\\u2245',\n '≈': '\\u2248',\n '𝕋': '\\uD835\\uDD4B',\n '⃛': '\\u20DB',\n '𝒯': '\\uD835\\uDCAF',\n 'Ŧ': '\\u0166',\n 'Ú': '\\u00DA',\n 'Ú': '\\u00DA',\n '↟': '\\u219F',\n '⥉': '\\u2949',\n 'Ў': '\\u040E',\n 'Ŭ': '\\u016C',\n 'Û': '\\u00DB',\n 'Û': '\\u00DB',\n 'У': '\\u0423',\n 'Ű': '\\u0170',\n '𝔘': '\\uD835\\uDD18',\n 'Ù': '\\u00D9',\n 'Ù': '\\u00D9',\n 'Ū': '\\u016A',\n '_': '\\u005F',\n '⏟': '\\u23DF',\n '⎵': '\\u23B5',\n '⏝': '\\u23DD',\n '⋃': '\\u22C3',\n '⊎': '\\u228E',\n 'Ų': '\\u0172',\n '𝕌': '\\uD835\\uDD4C',\n '↑': '\\u2191',\n '⤒': '\\u2912',\n '⇅': '\\u21C5',\n '↕': '\\u2195',\n '⥮': '\\u296E',\n '⊥': '\\u22A5',\n '↥': '\\u21A5',\n '⇑': '\\u21D1',\n '⇕': '\\u21D5',\n '↖': '\\u2196',\n '↗': '\\u2197',\n 'ϒ': '\\u03D2',\n 'Υ': '\\u03A5',\n 'Ů': '\\u016E',\n '𝒰': '\\uD835\\uDCB0',\n 'Ũ': '\\u0168',\n 'Ü': '\\u00DC',\n 'Ü': '\\u00DC',\n '⊫': '\\u22AB',\n '⫫': '\\u2AEB',\n 'В': '\\u0412',\n '⊩': '\\u22A9',\n '⫦': '\\u2AE6',\n '⋁': '\\u22C1',\n '‖': '\\u2016',\n '‖': '\\u2016',\n '∣': '\\u2223',\n '|': '\\u007C',\n '❘': '\\u2758',\n '≀': '\\u2240',\n ' ': '\\u200A',\n '𝔙': '\\uD835\\uDD19',\n '𝕍': '\\uD835\\uDD4D',\n '𝒱': '\\uD835\\uDCB1',\n '⊪': '\\u22AA',\n 'Ŵ': '\\u0174',\n '⋀': '\\u22C0',\n '𝔚': '\\uD835\\uDD1A',\n '𝕎': '\\uD835\\uDD4E',\n '𝒲': '\\uD835\\uDCB2',\n '𝔛': '\\uD835\\uDD1B',\n 'Ξ': '\\u039E',\n '𝕏': '\\uD835\\uDD4F',\n '𝒳': '\\uD835\\uDCB3',\n 'Я': '\\u042F',\n 'Ї': '\\u0407',\n 'Ю': '\\u042E',\n 'Ý': '\\u00DD',\n 'Ý': '\\u00DD',\n 'Ŷ': '\\u0176',\n 'Ы': '\\u042B',\n '𝔜': '\\uD835\\uDD1C',\n '𝕐': '\\uD835\\uDD50',\n '𝒴': '\\uD835\\uDCB4',\n 'Ÿ': '\\u0178',\n 'Ж': '\\u0416',\n 'Ź': '\\u0179',\n 'Ž': '\\u017D',\n 'З': '\\u0417',\n 'Ż': '\\u017B',\n '​': '\\u200B',\n 'Ζ': '\\u0396',\n 'ℨ': '\\u2128',\n 'ℤ': '\\u2124',\n '𝒵': '\\uD835\\uDCB5',\n 'á': '\\u00E1',\n 'á': '\\u00E1',\n 'ă': '\\u0103',\n '∾': '\\u223E',\n '∾̳': '\\u223E\\u0333',\n '∿': '\\u223F',\n 'â': '\\u00E2',\n 'â': '\\u00E2',\n '´': '\\u00B4',\n '´': '\\u00B4',\n 'а': '\\u0430',\n 'æ': '\\u00E6',\n 'æ': '\\u00E6',\n '⁡': '\\u2061',\n '𝔞': '\\uD835\\uDD1E',\n 'à': '\\u00E0',\n 'à': '\\u00E0',\n 'ℵ': '\\u2135',\n 'ℵ': '\\u2135',\n 'α': '\\u03B1',\n 'ā': '\\u0101',\n '⨿': '\\u2A3F',\n '&': '\\u0026',\n '&': '\\u0026',\n '∧': '\\u2227',\n '⩕': '\\u2A55',\n '⩜': '\\u2A5C',\n '⩘': '\\u2A58',\n '⩚': '\\u2A5A',\n '∠': '\\u2220',\n '⦤': '\\u29A4',\n '∠': '\\u2220',\n '∡': '\\u2221',\n '⦨': '\\u29A8',\n '⦩': '\\u29A9',\n '⦪': '\\u29AA',\n '⦫': '\\u29AB',\n '⦬': '\\u29AC',\n '⦭': '\\u29AD',\n '⦮': '\\u29AE',\n '⦯': '\\u29AF',\n '∟': '\\u221F',\n '⊾': '\\u22BE',\n '⦝': '\\u299D',\n '∢': '\\u2222',\n 'Å': '\\u00C5',\n '⍼': '\\u237C',\n 'ą': '\\u0105',\n '𝕒': '\\uD835\\uDD52',\n '≈': '\\u2248',\n '⩰': '\\u2A70',\n '⩯': '\\u2A6F',\n '≊': '\\u224A',\n '≋': '\\u224B',\n ''': '\\u0027',\n '≈': '\\u2248',\n '≊': '\\u224A',\n 'å': '\\u00E5',\n 'å': '\\u00E5',\n '𝒶': '\\uD835\\uDCB6',\n '*': '\\u002A',\n '≈': '\\u2248',\n '≍': '\\u224D',\n 'ã': '\\u00E3',\n 'ã': '\\u00E3',\n 'ä': '\\u00E4',\n 'ä': '\\u00E4',\n '∳': '\\u2233',\n '⨑': '\\u2A11',\n '⫭': '\\u2AED',\n '≌': '\\u224C',\n '϶': '\\u03F6',\n '‵': '\\u2035',\n '∽': '\\u223D',\n '⋍': '\\u22CD',\n '⊽': '\\u22BD',\n '⌅': '\\u2305',\n '⌅': '\\u2305',\n '⎵': '\\u23B5',\n '⎶': '\\u23B6',\n '≌': '\\u224C',\n 'б': '\\u0431',\n '„': '\\u201E',\n '∵': '\\u2235',\n '∵': '\\u2235',\n '⦰': '\\u29B0',\n '϶': '\\u03F6',\n 'ℬ': '\\u212C',\n 'β': '\\u03B2',\n 'ℶ': '\\u2136',\n '≬': '\\u226C',\n '𝔟': '\\uD835\\uDD1F',\n '⋂': '\\u22C2',\n '◯': '\\u25EF',\n '⋃': '\\u22C3',\n '⨀': '\\u2A00',\n '⨁': '\\u2A01',\n '⨂': '\\u2A02',\n '⨆': '\\u2A06',\n '★': '\\u2605',\n '▽': '\\u25BD',\n '△': '\\u25B3',\n '⨄': '\\u2A04',\n '⋁': '\\u22C1',\n '⋀': '\\u22C0',\n '⤍': '\\u290D',\n '⧫': '\\u29EB',\n '▪': '\\u25AA',\n '▴': '\\u25B4',\n '▾': '\\u25BE',\n '◂': '\\u25C2',\n '▸': '\\u25B8',\n '␣': '\\u2423',\n '▒': '\\u2592',\n '░': '\\u2591',\n '▓': '\\u2593',\n '█': '\\u2588',\n '=⃥': '\\u003D\\u20E5',\n '≡⃥': '\\u2261\\u20E5',\n '⌐': '\\u2310',\n '𝕓': '\\uD835\\uDD53',\n '⊥': '\\u22A5',\n '⊥': '\\u22A5',\n '⋈': '\\u22C8',\n '╗': '\\u2557',\n '╔': '\\u2554',\n '╖': '\\u2556',\n '╓': '\\u2553',\n '═': '\\u2550',\n '╦': '\\u2566',\n '╩': '\\u2569',\n '╤': '\\u2564',\n '╧': '\\u2567',\n '╝': '\\u255D',\n '╚': '\\u255A',\n '╜': '\\u255C',\n '╙': '\\u2559',\n '║': '\\u2551',\n '╬': '\\u256C',\n '╣': '\\u2563',\n '╠': '\\u2560',\n '╫': '\\u256B',\n '╢': '\\u2562',\n '╟': '\\u255F',\n '⧉': '\\u29C9',\n '╕': '\\u2555',\n '╒': '\\u2552',\n '┐': '\\u2510',\n '┌': '\\u250C',\n '─': '\\u2500',\n '╥': '\\u2565',\n '╨': '\\u2568',\n '┬': '\\u252C',\n '┴': '\\u2534',\n '⊟': '\\u229F',\n '⊞': '\\u229E',\n '⊠': '\\u22A0',\n '╛': '\\u255B',\n '╘': '\\u2558',\n '┘': '\\u2518',\n '└': '\\u2514',\n '│': '\\u2502',\n '╪': '\\u256A',\n '╡': '\\u2561',\n '╞': '\\u255E',\n '┼': '\\u253C',\n '┤': '\\u2524',\n '├': '\\u251C',\n '‵': '\\u2035',\n '˘': '\\u02D8',\n '¦': '\\u00A6',\n '¦': '\\u00A6',\n '𝒷': '\\uD835\\uDCB7',\n '⁏': '\\u204F',\n '∽': '\\u223D',\n '⋍': '\\u22CD',\n '\': '\\u005C',\n '⧅': '\\u29C5',\n '⟈': '\\u27C8',\n '•': '\\u2022',\n '•': '\\u2022',\n '≎': '\\u224E',\n '⪮': '\\u2AAE',\n '≏': '\\u224F',\n '≏': '\\u224F',\n 'ć': '\\u0107',\n '∩': '\\u2229',\n '⩄': '\\u2A44',\n '⩉': '\\u2A49',\n '⩋': '\\u2A4B',\n '⩇': '\\u2A47',\n '⩀': '\\u2A40',\n '∩︀': '\\u2229\\uFE00',\n '⁁': '\\u2041',\n 'ˇ': '\\u02C7',\n '⩍': '\\u2A4D',\n 'č': '\\u010D',\n 'ç': '\\u00E7',\n 'ç': '\\u00E7',\n 'ĉ': '\\u0109',\n '⩌': '\\u2A4C',\n '⩐': '\\u2A50',\n 'ċ': '\\u010B',\n '¸': '\\u00B8',\n '¸': '\\u00B8',\n '⦲': '\\u29B2',\n '¢': '\\u00A2',\n '¢': '\\u00A2',\n '·': '\\u00B7',\n '𝔠': '\\uD835\\uDD20',\n 'ч': '\\u0447',\n '✓': '\\u2713',\n '✓': '\\u2713',\n 'χ': '\\u03C7',\n '○': '\\u25CB',\n '⧃': '\\u29C3',\n 'ˆ': '\\u02C6',\n '≗': '\\u2257',\n '↺': '\\u21BA',\n '↻': '\\u21BB',\n '®': '\\u00AE',\n 'Ⓢ': '\\u24C8',\n '⊛': '\\u229B',\n '⊚': '\\u229A',\n '⊝': '\\u229D',\n '≗': '\\u2257',\n '⨐': '\\u2A10',\n '⫯': '\\u2AEF',\n '⧂': '\\u29C2',\n '♣': '\\u2663',\n '♣': '\\u2663',\n ':': '\\u003A',\n '≔': '\\u2254',\n '≔': '\\u2254',\n ',': '\\u002C',\n '@': '\\u0040',\n '∁': '\\u2201',\n '∘': '\\u2218',\n '∁': '\\u2201',\n 'ℂ': '\\u2102',\n '≅': '\\u2245',\n '⩭': '\\u2A6D',\n '∮': '\\u222E',\n '𝕔': '\\uD835\\uDD54',\n '∐': '\\u2210',\n '©': '\\u00A9',\n '©': '\\u00A9',\n '℗': '\\u2117',\n '↵': '\\u21B5',\n '✗': '\\u2717',\n '𝒸': '\\uD835\\uDCB8',\n '⫏': '\\u2ACF',\n '⫑': '\\u2AD1',\n '⫐': '\\u2AD0',\n '⫒': '\\u2AD2',\n '⋯': '\\u22EF',\n '⤸': '\\u2938',\n '⤵': '\\u2935',\n '⋞': '\\u22DE',\n '⋟': '\\u22DF',\n '↶': '\\u21B6',\n '⤽': '\\u293D',\n '∪': '\\u222A',\n '⩈': '\\u2A48',\n '⩆': '\\u2A46',\n '⩊': '\\u2A4A',\n '⊍': '\\u228D',\n '⩅': '\\u2A45',\n '∪︀': '\\u222A\\uFE00',\n '↷': '\\u21B7',\n '⤼': '\\u293C',\n '⋞': '\\u22DE',\n '⋟': '\\u22DF',\n '⋎': '\\u22CE',\n '⋏': '\\u22CF',\n '¤': '\\u00A4',\n '¤': '\\u00A4',\n '↶': '\\u21B6',\n '↷': '\\u21B7',\n '⋎': '\\u22CE',\n '⋏': '\\u22CF',\n '∲': '\\u2232',\n '∱': '\\u2231',\n '⌭': '\\u232D',\n '⇓': '\\u21D3',\n '⥥': '\\u2965',\n '†': '\\u2020',\n 'ℸ': '\\u2138',\n '↓': '\\u2193',\n '‐': '\\u2010',\n '⊣': '\\u22A3',\n '⤏': '\\u290F',\n '˝': '\\u02DD',\n 'ď': '\\u010F',\n 'д': '\\u0434',\n 'ⅆ': '\\u2146',\n '‡': '\\u2021',\n '⇊': '\\u21CA',\n '⩷': '\\u2A77',\n '°': '\\u00B0',\n '°': '\\u00B0',\n 'δ': '\\u03B4',\n '⦱': '\\u29B1',\n '⥿': '\\u297F',\n '𝔡': '\\uD835\\uDD21',\n '⇃': '\\u21C3',\n '⇂': '\\u21C2',\n '⋄': '\\u22C4',\n '⋄': '\\u22C4',\n '♦': '\\u2666',\n '♦': '\\u2666',\n '¨': '\\u00A8',\n 'ϝ': '\\u03DD',\n '⋲': '\\u22F2',\n '÷': '\\u00F7',\n '÷': '\\u00F7',\n '÷': '\\u00F7',\n '⋇': '\\u22C7',\n '⋇': '\\u22C7',\n 'ђ': '\\u0452',\n '⌞': '\\u231E',\n '⌍': '\\u230D',\n '$': '\\u0024',\n '𝕕': '\\uD835\\uDD55',\n '˙': '\\u02D9',\n '≐': '\\u2250',\n '≑': '\\u2251',\n '∸': '\\u2238',\n '∔': '\\u2214',\n '⊡': '\\u22A1',\n '⌆': '\\u2306',\n '↓': '\\u2193',\n '⇊': '\\u21CA',\n '⇃': '\\u21C3',\n '⇂': '\\u21C2',\n '⤐': '\\u2910',\n '⌟': '\\u231F',\n '⌌': '\\u230C',\n '𝒹': '\\uD835\\uDCB9',\n 'ѕ': '\\u0455',\n '⧶': '\\u29F6',\n 'đ': '\\u0111',\n '⋱': '\\u22F1',\n '▿': '\\u25BF',\n '▾': '\\u25BE',\n '⇵': '\\u21F5',\n '⥯': '\\u296F',\n '⦦': '\\u29A6',\n 'џ': '\\u045F',\n '⟿': '\\u27FF',\n '⩷': '\\u2A77',\n '≑': '\\u2251',\n 'é': '\\u00E9',\n 'é': '\\u00E9',\n '⩮': '\\u2A6E',\n 'ě': '\\u011B',\n '≖': '\\u2256',\n 'ê': '\\u00EA',\n 'ê': '\\u00EA',\n '≕': '\\u2255',\n 'э': '\\u044D',\n 'ė': '\\u0117',\n 'ⅇ': '\\u2147',\n '≒': '\\u2252',\n '𝔢': '\\uD835\\uDD22',\n '⪚': '\\u2A9A',\n 'è': '\\u00E8',\n 'è': '\\u00E8',\n '⪖': '\\u2A96',\n '⪘': '\\u2A98',\n '⪙': '\\u2A99',\n '⏧': '\\u23E7',\n 'ℓ': '\\u2113',\n '⪕': '\\u2A95',\n '⪗': '\\u2A97',\n 'ē': '\\u0113',\n '∅': '\\u2205',\n '∅': '\\u2205',\n '∅': '\\u2205',\n ' ': '\\u2004',\n ' ': '\\u2005',\n ' ': '\\u2003',\n 'ŋ': '\\u014B',\n ' ': '\\u2002',\n 'ę': '\\u0119',\n '𝕖': '\\uD835\\uDD56',\n '⋕': '\\u22D5',\n '⧣': '\\u29E3',\n '⩱': '\\u2A71',\n 'ε': '\\u03B5',\n 'ε': '\\u03B5',\n 'ϵ': '\\u03F5',\n '≖': '\\u2256',\n '≕': '\\u2255',\n '≂': '\\u2242',\n '⪖': '\\u2A96',\n '⪕': '\\u2A95',\n '=': '\\u003D',\n '≟': '\\u225F',\n '≡': '\\u2261',\n '⩸': '\\u2A78',\n '⧥': '\\u29E5',\n '≓': '\\u2253',\n '⥱': '\\u2971',\n 'ℯ': '\\u212F',\n '≐': '\\u2250',\n '≂': '\\u2242',\n 'η': '\\u03B7',\n 'ð': '\\u00F0',\n 'ð': '\\u00F0',\n 'ë': '\\u00EB',\n 'ë': '\\u00EB',\n '€': '\\u20AC',\n '!': '\\u0021',\n '∃': '\\u2203',\n 'ℰ': '\\u2130',\n 'ⅇ': '\\u2147',\n '≒': '\\u2252',\n 'ф': '\\u0444',\n '♀': '\\u2640',\n 'ffi': '\\uFB03',\n 'ff': '\\uFB00',\n 'ffl': '\\uFB04',\n '𝔣': '\\uD835\\uDD23',\n 'fi': '\\uFB01',\n 'fj': '\\u0066\\u006A',\n '♭': '\\u266D',\n 'fl': '\\uFB02',\n '▱': '\\u25B1',\n 'ƒ': '\\u0192',\n '𝕗': '\\uD835\\uDD57',\n '∀': '\\u2200',\n '⋔': '\\u22D4',\n '⫙': '\\u2AD9',\n '⨍': '\\u2A0D',\n '½': '\\u00BD',\n '½': '\\u00BD',\n '⅓': '\\u2153',\n '¼': '\\u00BC',\n '¼': '\\u00BC',\n '⅕': '\\u2155',\n '⅙': '\\u2159',\n '⅛': '\\u215B',\n '⅔': '\\u2154',\n '⅖': '\\u2156',\n '¾': '\\u00BE',\n '¾': '\\u00BE',\n '⅗': '\\u2157',\n '⅜': '\\u215C',\n '⅘': '\\u2158',\n '⅚': '\\u215A',\n '⅝': '\\u215D',\n '⅞': '\\u215E',\n '⁄': '\\u2044',\n '⌢': '\\u2322',\n '𝒻': '\\uD835\\uDCBB',\n '≧': '\\u2267',\n '⪌': '\\u2A8C',\n 'ǵ': '\\u01F5',\n 'γ': '\\u03B3',\n 'ϝ': '\\u03DD',\n '⪆': '\\u2A86',\n 'ğ': '\\u011F',\n 'ĝ': '\\u011D',\n 'г': '\\u0433',\n 'ġ': '\\u0121',\n '≥': '\\u2265',\n '⋛': '\\u22DB',\n '≥': '\\u2265',\n '≧': '\\u2267',\n '⩾': '\\u2A7E',\n '⩾': '\\u2A7E',\n '⪩': '\\u2AA9',\n '⪀': '\\u2A80',\n '⪂': '\\u2A82',\n '⪄': '\\u2A84',\n '⋛︀': '\\u22DB\\uFE00',\n '⪔': '\\u2A94',\n '𝔤': '\\uD835\\uDD24',\n '≫': '\\u226B',\n '⋙': '\\u22D9',\n 'ℷ': '\\u2137',\n 'ѓ': '\\u0453',\n '≷': '\\u2277',\n '⪒': '\\u2A92',\n '⪥': '\\u2AA5',\n '⪤': '\\u2AA4',\n '≩': '\\u2269',\n '⪊': '\\u2A8A',\n '⪊': '\\u2A8A',\n '⪈': '\\u2A88',\n '⪈': '\\u2A88',\n '≩': '\\u2269',\n '⋧': '\\u22E7',\n '𝕘': '\\uD835\\uDD58',\n '`': '\\u0060',\n 'ℊ': '\\u210A',\n '≳': '\\u2273',\n '⪎': '\\u2A8E',\n '⪐': '\\u2A90',\n '>': '\\u003E',\n '>': '\\u003E',\n '⪧': '\\u2AA7',\n '⩺': '\\u2A7A',\n '⋗': '\\u22D7',\n '⦕': '\\u2995',\n '⩼': '\\u2A7C',\n '⪆': '\\u2A86',\n '⥸': '\\u2978',\n '⋗': '\\u22D7',\n '⋛': '\\u22DB',\n '⪌': '\\u2A8C',\n '≷': '\\u2277',\n '≳': '\\u2273',\n '≩︀': '\\u2269\\uFE00',\n '≩︀': '\\u2269\\uFE00',\n '⇔': '\\u21D4',\n ' ': '\\u200A',\n '½': '\\u00BD',\n 'ℋ': '\\u210B',\n 'ъ': '\\u044A',\n '↔': '\\u2194',\n '⥈': '\\u2948',\n '↭': '\\u21AD',\n 'ℏ': '\\u210F',\n 'ĥ': '\\u0125',\n '♥': '\\u2665',\n '♥': '\\u2665',\n '…': '\\u2026',\n '⊹': '\\u22B9',\n '𝔥': '\\uD835\\uDD25',\n '⤥': '\\u2925',\n '⤦': '\\u2926',\n '⇿': '\\u21FF',\n '∻': '\\u223B',\n '↩': '\\u21A9',\n '↪': '\\u21AA',\n '𝕙': '\\uD835\\uDD59',\n '―': '\\u2015',\n '𝒽': '\\uD835\\uDCBD',\n 'ℏ': '\\u210F',\n 'ħ': '\\u0127',\n '⁃': '\\u2043',\n '‐': '\\u2010',\n 'í': '\\u00ED',\n 'í': '\\u00ED',\n '⁣': '\\u2063',\n 'î': '\\u00EE',\n 'î': '\\u00EE',\n 'и': '\\u0438',\n 'е': '\\u0435',\n '¡': '\\u00A1',\n '¡': '\\u00A1',\n '⇔': '\\u21D4',\n '𝔦': '\\uD835\\uDD26',\n 'ì': '\\u00EC',\n 'ì': '\\u00EC',\n 'ⅈ': '\\u2148',\n '⨌': '\\u2A0C',\n '∭': '\\u222D',\n '⧜': '\\u29DC',\n '℩': '\\u2129',\n 'ij': '\\u0133',\n 'ī': '\\u012B',\n 'ℑ': '\\u2111',\n 'ℐ': '\\u2110',\n 'ℑ': '\\u2111',\n 'ı': '\\u0131',\n '⊷': '\\u22B7',\n 'Ƶ': '\\u01B5',\n '∈': '\\u2208',\n '℅': '\\u2105',\n '∞': '\\u221E',\n '⧝': '\\u29DD',\n 'ı': '\\u0131',\n '∫': '\\u222B',\n '⊺': '\\u22BA',\n 'ℤ': '\\u2124',\n '⊺': '\\u22BA',\n '⨗': '\\u2A17',\n '⨼': '\\u2A3C',\n 'ё': '\\u0451',\n 'į': '\\u012F',\n '𝕚': '\\uD835\\uDD5A',\n 'ι': '\\u03B9',\n '⨼': '\\u2A3C',\n '¿': '\\u00BF',\n '¿': '\\u00BF',\n '𝒾': '\\uD835\\uDCBE',\n '∈': '\\u2208',\n '⋹': '\\u22F9',\n '⋵': '\\u22F5',\n '⋴': '\\u22F4',\n '⋳': '\\u22F3',\n '∈': '\\u2208',\n '⁢': '\\u2062',\n 'ĩ': '\\u0129',\n 'і': '\\u0456',\n 'ï': '\\u00EF',\n 'ï': '\\u00EF',\n 'ĵ': '\\u0135',\n 'й': '\\u0439',\n '𝔧': '\\uD835\\uDD27',\n 'ȷ': '\\u0237',\n '𝕛': '\\uD835\\uDD5B',\n '𝒿': '\\uD835\\uDCBF',\n 'ј': '\\u0458',\n 'є': '\\u0454',\n 'κ': '\\u03BA',\n 'ϰ': '\\u03F0',\n 'ķ': '\\u0137',\n 'к': '\\u043A',\n '𝔨': '\\uD835\\uDD28',\n 'ĸ': '\\u0138',\n 'х': '\\u0445',\n 'ќ': '\\u045C',\n '𝕜': '\\uD835\\uDD5C',\n '𝓀': '\\uD835\\uDCC0',\n '⇚': '\\u21DA',\n '⇐': '\\u21D0',\n '⤛': '\\u291B',\n '⤎': '\\u290E',\n '≦': '\\u2266',\n '⪋': '\\u2A8B',\n '⥢': '\\u2962',\n 'ĺ': '\\u013A',\n '⦴': '\\u29B4',\n 'ℒ': '\\u2112',\n 'λ': '\\u03BB',\n '⟨': '\\u27E8',\n '⦑': '\\u2991',\n '⟨': '\\u27E8',\n '⪅': '\\u2A85',\n '«': '\\u00AB',\n '«': '\\u00AB',\n '←': '\\u2190',\n '⇤': '\\u21E4',\n '⤟': '\\u291F',\n '⤝': '\\u291D',\n '↩': '\\u21A9',\n '↫': '\\u21AB',\n '⤹': '\\u2939',\n '⥳': '\\u2973',\n '↢': '\\u21A2',\n '⪫': '\\u2AAB',\n '⤙': '\\u2919',\n '⪭': '\\u2AAD',\n '⪭︀': '\\u2AAD\\uFE00',\n '⤌': '\\u290C',\n '❲': '\\u2772',\n '{': '\\u007B',\n '[': '\\u005B',\n '⦋': '\\u298B',\n '⦏': '\\u298F',\n '⦍': '\\u298D',\n 'ľ': '\\u013E',\n 'ļ': '\\u013C',\n '⌈': '\\u2308',\n '{': '\\u007B',\n 'л': '\\u043B',\n '⤶': '\\u2936',\n '“': '\\u201C',\n '„': '\\u201E',\n '⥧': '\\u2967',\n '⥋': '\\u294B',\n '↲': '\\u21B2',\n '≤': '\\u2264',\n '←': '\\u2190',\n '↢': '\\u21A2',\n '↽': '\\u21BD',\n '↼': '\\u21BC',\n '⇇': '\\u21C7',\n '↔': '\\u2194',\n '⇆': '\\u21C6',\n '⇋': '\\u21CB',\n '↭': '\\u21AD',\n '⋋': '\\u22CB',\n '⋚': '\\u22DA',\n '≤': '\\u2264',\n '≦': '\\u2266',\n '⩽': '\\u2A7D',\n '⩽': '\\u2A7D',\n '⪨': '\\u2AA8',\n '⩿': '\\u2A7F',\n '⪁': '\\u2A81',\n '⪃': '\\u2A83',\n '⋚︀': '\\u22DA\\uFE00',\n '⪓': '\\u2A93',\n '⪅': '\\u2A85',\n '⋖': '\\u22D6',\n '⋚': '\\u22DA',\n '⪋': '\\u2A8B',\n '≶': '\\u2276',\n '≲': '\\u2272',\n '⥼': '\\u297C',\n '⌊': '\\u230A',\n '𝔩': '\\uD835\\uDD29',\n '≶': '\\u2276',\n '⪑': '\\u2A91',\n '↽': '\\u21BD',\n '↼': '\\u21BC',\n '⥪': '\\u296A',\n '▄': '\\u2584',\n 'љ': '\\u0459',\n '≪': '\\u226A',\n '⇇': '\\u21C7',\n '⌞': '\\u231E',\n '⥫': '\\u296B',\n '◺': '\\u25FA',\n 'ŀ': '\\u0140',\n '⎰': '\\u23B0',\n '⎰': '\\u23B0',\n '≨': '\\u2268',\n '⪉': '\\u2A89',\n '⪉': '\\u2A89',\n '⪇': '\\u2A87',\n '⪇': '\\u2A87',\n '≨': '\\u2268',\n '⋦': '\\u22E6',\n '⟬': '\\u27EC',\n '⇽': '\\u21FD',\n '⟦': '\\u27E6',\n '⟵': '\\u27F5',\n '⟷': '\\u27F7',\n '⟼': '\\u27FC',\n '⟶': '\\u27F6',\n '↫': '\\u21AB',\n '↬': '\\u21AC',\n '⦅': '\\u2985',\n '𝕝': '\\uD835\\uDD5D',\n '⨭': '\\u2A2D',\n '⨴': '\\u2A34',\n '∗': '\\u2217',\n '_': '\\u005F',\n '◊': '\\u25CA',\n '◊': '\\u25CA',\n '⧫': '\\u29EB',\n '(': '\\u0028',\n '⦓': '\\u2993',\n '⇆': '\\u21C6',\n '⌟': '\\u231F',\n '⇋': '\\u21CB',\n '⥭': '\\u296D',\n '‎': '\\u200E',\n '⊿': '\\u22BF',\n '‹': '\\u2039',\n '𝓁': '\\uD835\\uDCC1',\n '↰': '\\u21B0',\n '≲': '\\u2272',\n '⪍': '\\u2A8D',\n '⪏': '\\u2A8F',\n '[': '\\u005B',\n '‘': '\\u2018',\n '‚': '\\u201A',\n 'ł': '\\u0142',\n '<': '\\u003C',\n '<': '\\u003C',\n '⪦': '\\u2AA6',\n '⩹': '\\u2A79',\n '⋖': '\\u22D6',\n '⋋': '\\u22CB',\n '⋉': '\\u22C9',\n '⥶': '\\u2976',\n '⩻': '\\u2A7B',\n '⦖': '\\u2996',\n '◃': '\\u25C3',\n '⊴': '\\u22B4',\n '◂': '\\u25C2',\n '⥊': '\\u294A',\n '⥦': '\\u2966',\n '≨︀': '\\u2268\\uFE00',\n '≨︀': '\\u2268\\uFE00',\n '∺': '\\u223A',\n '¯': '\\u00AF',\n '¯': '\\u00AF',\n '♂': '\\u2642',\n '✠': '\\u2720',\n '✠': '\\u2720',\n '↦': '\\u21A6',\n '↦': '\\u21A6',\n '↧': '\\u21A7',\n '↤': '\\u21A4',\n '↥': '\\u21A5',\n '▮': '\\u25AE',\n '⨩': '\\u2A29',\n 'м': '\\u043C',\n '—': '\\u2014',\n '∡': '\\u2221',\n '𝔪': '\\uD835\\uDD2A',\n '℧': '\\u2127',\n 'µ': '\\u00B5',\n 'µ': '\\u00B5',\n '∣': '\\u2223',\n '*': '\\u002A',\n '⫰': '\\u2AF0',\n '·': '\\u00B7',\n '·': '\\u00B7',\n '−': '\\u2212',\n '⊟': '\\u229F',\n '∸': '\\u2238',\n '⨪': '\\u2A2A',\n '⫛': '\\u2ADB',\n '…': '\\u2026',\n '∓': '\\u2213',\n '⊧': '\\u22A7',\n '𝕞': '\\uD835\\uDD5E',\n '∓': '\\u2213',\n '𝓂': '\\uD835\\uDCC2',\n '∾': '\\u223E',\n 'μ': '\\u03BC',\n '⊸': '\\u22B8',\n '⊸': '\\u22B8',\n '⋙̸': '\\u22D9\\u0338',\n '≫⃒': '\\u226B\\u20D2',\n '≫̸': '\\u226B\\u0338',\n '⇍': '\\u21CD',\n '⇎': '\\u21CE',\n '⋘̸': '\\u22D8\\u0338',\n '≪⃒': '\\u226A\\u20D2',\n '≪̸': '\\u226A\\u0338',\n '⇏': '\\u21CF',\n '⊯': '\\u22AF',\n '⊮': '\\u22AE',\n '∇': '\\u2207',\n 'ń': '\\u0144',\n '∠⃒': '\\u2220\\u20D2',\n '≉': '\\u2249',\n '⩰̸': '\\u2A70\\u0338',\n '≋̸': '\\u224B\\u0338',\n 'ʼn': '\\u0149',\n '≉': '\\u2249',\n '♮': '\\u266E',\n '♮': '\\u266E',\n 'ℕ': '\\u2115',\n ' ': '\\u00A0',\n ' ': '\\u00A0',\n '≎̸': '\\u224E\\u0338',\n '≏̸': '\\u224F\\u0338',\n '⩃': '\\u2A43',\n 'ň': '\\u0148',\n 'ņ': '\\u0146',\n '≇': '\\u2247',\n '⩭̸': '\\u2A6D\\u0338',\n '⩂': '\\u2A42',\n 'н': '\\u043D',\n '–': '\\u2013',\n '≠': '\\u2260',\n '⇗': '\\u21D7',\n '⤤': '\\u2924',\n '↗': '\\u2197',\n '↗': '\\u2197',\n '≐̸': '\\u2250\\u0338',\n '≢': '\\u2262',\n '⤨': '\\u2928',\n '≂̸': '\\u2242\\u0338',\n '∄': '\\u2204',\n '∄': '\\u2204',\n '𝔫': '\\uD835\\uDD2B',\n '≧̸': '\\u2267\\u0338',\n '≱': '\\u2271',\n '≱': '\\u2271',\n '≧̸': '\\u2267\\u0338',\n '⩾̸': '\\u2A7E\\u0338',\n '⩾̸': '\\u2A7E\\u0338',\n '≵': '\\u2275',\n '≯': '\\u226F',\n '≯': '\\u226F',\n '⇎': '\\u21CE',\n '↮': '\\u21AE',\n '⫲': '\\u2AF2',\n '∋': '\\u220B',\n '⋼': '\\u22FC',\n '⋺': '\\u22FA',\n '∋': '\\u220B',\n 'њ': '\\u045A',\n '⇍': '\\u21CD',\n '≦̸': '\\u2266\\u0338',\n '↚': '\\u219A',\n '‥': '\\u2025',\n '≰': '\\u2270',\n '↚': '\\u219A',\n '↮': '\\u21AE',\n '≰': '\\u2270',\n '≦̸': '\\u2266\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '≮': '\\u226E',\n '≴': '\\u2274',\n '≮': '\\u226E',\n '⋪': '\\u22EA',\n '⋬': '\\u22EC',\n '∤': '\\u2224',\n '𝕟': '\\uD835\\uDD5F',\n '¬': '\\u00AC',\n '¬': '\\u00AC',\n '∉': '\\u2209',\n '⋹̸': '\\u22F9\\u0338',\n '⋵̸': '\\u22F5\\u0338',\n '∉': '\\u2209',\n '⋷': '\\u22F7',\n '⋶': '\\u22F6',\n '∌': '\\u220C',\n '∌': '\\u220C',\n '⋾': '\\u22FE',\n '⋽': '\\u22FD',\n '∦': '\\u2226',\n '∦': '\\u2226',\n '⫽⃥': '\\u2AFD\\u20E5',\n '∂̸': '\\u2202\\u0338',\n '⨔': '\\u2A14',\n '⊀': '\\u2280',\n '⋠': '\\u22E0',\n '⪯̸': '\\u2AAF\\u0338',\n '⊀': '\\u2280',\n '⪯̸': '\\u2AAF\\u0338',\n '⇏': '\\u21CF',\n '↛': '\\u219B',\n '⤳̸': '\\u2933\\u0338',\n '↝̸': '\\u219D\\u0338',\n '↛': '\\u219B',\n '⋫': '\\u22EB',\n '⋭': '\\u22ED',\n '⊁': '\\u2281',\n '⋡': '\\u22E1',\n '⪰̸': '\\u2AB0\\u0338',\n '𝓃': '\\uD835\\uDCC3',\n '∤': '\\u2224',\n '∦': '\\u2226',\n '≁': '\\u2241',\n '≄': '\\u2244',\n '≄': '\\u2244',\n '∤': '\\u2224',\n '∦': '\\u2226',\n '⋢': '\\u22E2',\n '⋣': '\\u22E3',\n '⊄': '\\u2284',\n '⫅̸': '\\u2AC5\\u0338',\n '⊈': '\\u2288',\n '⊂⃒': '\\u2282\\u20D2',\n '⊈': '\\u2288',\n '⫅̸': '\\u2AC5\\u0338',\n '⊁': '\\u2281',\n '⪰̸': '\\u2AB0\\u0338',\n '⊅': '\\u2285',\n '⫆̸': '\\u2AC6\\u0338',\n '⊉': '\\u2289',\n '⊃⃒': '\\u2283\\u20D2',\n '⊉': '\\u2289',\n '⫆̸': '\\u2AC6\\u0338',\n '≹': '\\u2279',\n 'ñ': '\\u00F1',\n 'ñ': '\\u00F1',\n '≸': '\\u2278',\n '⋪': '\\u22EA',\n '⋬': '\\u22EC',\n '⋫': '\\u22EB',\n '⋭': '\\u22ED',\n 'ν': '\\u03BD',\n '#': '\\u0023',\n '№': '\\u2116',\n ' ': '\\u2007',\n '⊭': '\\u22AD',\n '⤄': '\\u2904',\n '≍⃒': '\\u224D\\u20D2',\n '⊬': '\\u22AC',\n '≥⃒': '\\u2265\\u20D2',\n '>⃒': '\\u003E\\u20D2',\n '⧞': '\\u29DE',\n '⤂': '\\u2902',\n '≤⃒': '\\u2264\\u20D2',\n '<⃒': '\\u003C\\u20D2',\n '⊴⃒': '\\u22B4\\u20D2',\n '⤃': '\\u2903',\n '⊵⃒': '\\u22B5\\u20D2',\n '∼⃒': '\\u223C\\u20D2',\n '⇖': '\\u21D6',\n '⤣': '\\u2923',\n '↖': '\\u2196',\n '↖': '\\u2196',\n '⤧': '\\u2927',\n 'Ⓢ': '\\u24C8',\n 'ó': '\\u00F3',\n 'ó': '\\u00F3',\n '⊛': '\\u229B',\n '⊚': '\\u229A',\n 'ô': '\\u00F4',\n 'ô': '\\u00F4',\n 'о': '\\u043E',\n '⊝': '\\u229D',\n 'ő': '\\u0151',\n '⨸': '\\u2A38',\n '⊙': '\\u2299',\n '⦼': '\\u29BC',\n 'œ': '\\u0153',\n '⦿': '\\u29BF',\n '𝔬': '\\uD835\\uDD2C',\n '˛': '\\u02DB',\n 'ò': '\\u00F2',\n 'ò': '\\u00F2',\n '⧁': '\\u29C1',\n '⦵': '\\u29B5',\n 'Ω': '\\u03A9',\n '∮': '\\u222E',\n '↺': '\\u21BA',\n '⦾': '\\u29BE',\n '⦻': '\\u29BB',\n '‾': '\\u203E',\n '⧀': '\\u29C0',\n 'ō': '\\u014D',\n 'ω': '\\u03C9',\n 'ο': '\\u03BF',\n '⦶': '\\u29B6',\n '⊖': '\\u2296',\n '𝕠': '\\uD835\\uDD60',\n '⦷': '\\u29B7',\n '⦹': '\\u29B9',\n '⊕': '\\u2295',\n '∨': '\\u2228',\n '↻': '\\u21BB',\n '⩝': '\\u2A5D',\n 'ℴ': '\\u2134',\n 'ℴ': '\\u2134',\n 'ª': '\\u00AA',\n 'ª': '\\u00AA',\n 'º': '\\u00BA',\n 'º': '\\u00BA',\n '⊶': '\\u22B6',\n '⩖': '\\u2A56',\n '⩗': '\\u2A57',\n '⩛': '\\u2A5B',\n 'ℴ': '\\u2134',\n 'ø': '\\u00F8',\n 'ø': '\\u00F8',\n '⊘': '\\u2298',\n 'õ': '\\u00F5',\n 'õ': '\\u00F5',\n '⊗': '\\u2297',\n '⨶': '\\u2A36',\n 'ö': '\\u00F6',\n 'ö': '\\u00F6',\n '⌽': '\\u233D',\n '∥': '\\u2225',\n '¶': '\\u00B6',\n '¶': '\\u00B6',\n '∥': '\\u2225',\n '⫳': '\\u2AF3',\n '⫽': '\\u2AFD',\n '∂': '\\u2202',\n 'п': '\\u043F',\n '%': '\\u0025',\n '.': '\\u002E',\n '‰': '\\u2030',\n '⊥': '\\u22A5',\n '‱': '\\u2031',\n '𝔭': '\\uD835\\uDD2D',\n 'φ': '\\u03C6',\n 'ϕ': '\\u03D5',\n 'ℳ': '\\u2133',\n '☎': '\\u260E',\n 'π': '\\u03C0',\n '⋔': '\\u22D4',\n 'ϖ': '\\u03D6',\n 'ℏ': '\\u210F',\n 'ℎ': '\\u210E',\n 'ℏ': '\\u210F',\n '+': '\\u002B',\n '⨣': '\\u2A23',\n '⊞': '\\u229E',\n '⨢': '\\u2A22',\n '∔': '\\u2214',\n '⨥': '\\u2A25',\n '⩲': '\\u2A72',\n '±': '\\u00B1',\n '±': '\\u00B1',\n '⨦': '\\u2A26',\n '⨧': '\\u2A27',\n '±': '\\u00B1',\n '⨕': '\\u2A15',\n '𝕡': '\\uD835\\uDD61',\n '£': '\\u00A3',\n '£': '\\u00A3',\n '≺': '\\u227A',\n '⪳': '\\u2AB3',\n '⪷': '\\u2AB7',\n '≼': '\\u227C',\n '⪯': '\\u2AAF',\n '≺': '\\u227A',\n '⪷': '\\u2AB7',\n '≼': '\\u227C',\n '⪯': '\\u2AAF',\n '⪹': '\\u2AB9',\n '⪵': '\\u2AB5',\n '⋨': '\\u22E8',\n '≾': '\\u227E',\n '′': '\\u2032',\n 'ℙ': '\\u2119',\n '⪵': '\\u2AB5',\n '⪹': '\\u2AB9',\n '⋨': '\\u22E8',\n '∏': '\\u220F',\n '⌮': '\\u232E',\n '⌒': '\\u2312',\n '⌓': '\\u2313',\n '∝': '\\u221D',\n '∝': '\\u221D',\n '≾': '\\u227E',\n '⊰': '\\u22B0',\n '𝓅': '\\uD835\\uDCC5',\n 'ψ': '\\u03C8',\n ' ': '\\u2008',\n '𝔮': '\\uD835\\uDD2E',\n '⨌': '\\u2A0C',\n '𝕢': '\\uD835\\uDD62',\n '⁗': '\\u2057',\n '𝓆': '\\uD835\\uDCC6',\n 'ℍ': '\\u210D',\n '⨖': '\\u2A16',\n '?': '\\u003F',\n '≟': '\\u225F',\n '"': '\\u0022',\n '"': '\\u0022',\n '⇛': '\\u21DB',\n '⇒': '\\u21D2',\n '⤜': '\\u291C',\n '⤏': '\\u290F',\n '⥤': '\\u2964',\n '∽̱': '\\u223D\\u0331',\n 'ŕ': '\\u0155',\n '√': '\\u221A',\n '⦳': '\\u29B3',\n '⟩': '\\u27E9',\n '⦒': '\\u2992',\n '⦥': '\\u29A5',\n '⟩': '\\u27E9',\n '»': '\\u00BB',\n '»': '\\u00BB',\n '→': '\\u2192',\n '⥵': '\\u2975',\n '⇥': '\\u21E5',\n '⤠': '\\u2920',\n '⤳': '\\u2933',\n '⤞': '\\u291E',\n '↪': '\\u21AA',\n '↬': '\\u21AC',\n '⥅': '\\u2945',\n '⥴': '\\u2974',\n '↣': '\\u21A3',\n '↝': '\\u219D',\n '⤚': '\\u291A',\n '∶': '\\u2236',\n 'ℚ': '\\u211A',\n '⤍': '\\u290D',\n '❳': '\\u2773',\n '}': '\\u007D',\n ']': '\\u005D',\n '⦌': '\\u298C',\n '⦎': '\\u298E',\n '⦐': '\\u2990',\n 'ř': '\\u0159',\n 'ŗ': '\\u0157',\n '⌉': '\\u2309',\n '}': '\\u007D',\n 'р': '\\u0440',\n '⤷': '\\u2937',\n '⥩': '\\u2969',\n '”': '\\u201D',\n '”': '\\u201D',\n '↳': '\\u21B3',\n 'ℜ': '\\u211C',\n 'ℛ': '\\u211B',\n 'ℜ': '\\u211C',\n 'ℝ': '\\u211D',\n '▭': '\\u25AD',\n '®': '\\u00AE',\n '®': '\\u00AE',\n '⥽': '\\u297D',\n '⌋': '\\u230B',\n '𝔯': '\\uD835\\uDD2F',\n '⇁': '\\u21C1',\n '⇀': '\\u21C0',\n '⥬': '\\u296C',\n 'ρ': '\\u03C1',\n 'ϱ': '\\u03F1',\n '→': '\\u2192',\n '↣': '\\u21A3',\n '⇁': '\\u21C1',\n '⇀': '\\u21C0',\n '⇄': '\\u21C4',\n '⇌': '\\u21CC',\n '⇉': '\\u21C9',\n '↝': '\\u219D',\n '⋌': '\\u22CC',\n '˚': '\\u02DA',\n '≓': '\\u2253',\n '⇄': '\\u21C4',\n '⇌': '\\u21CC',\n '‏': '\\u200F',\n '⎱': '\\u23B1',\n '⎱': '\\u23B1',\n '⫮': '\\u2AEE',\n '⟭': '\\u27ED',\n '⇾': '\\u21FE',\n '⟧': '\\u27E7',\n '⦆': '\\u2986',\n '𝕣': '\\uD835\\uDD63',\n '⨮': '\\u2A2E',\n '⨵': '\\u2A35',\n ')': '\\u0029',\n '⦔': '\\u2994',\n '⨒': '\\u2A12',\n '⇉': '\\u21C9',\n '›': '\\u203A',\n '𝓇': '\\uD835\\uDCC7',\n '↱': '\\u21B1',\n ']': '\\u005D',\n '’': '\\u2019',\n '’': '\\u2019',\n '⋌': '\\u22CC',\n '⋊': '\\u22CA',\n '▹': '\\u25B9',\n '⊵': '\\u22B5',\n '▸': '\\u25B8',\n '⧎': '\\u29CE',\n '⥨': '\\u2968',\n '℞': '\\u211E',\n 'ś': '\\u015B',\n '‚': '\\u201A',\n '≻': '\\u227B',\n '⪴': '\\u2AB4',\n '⪸': '\\u2AB8',\n 'š': '\\u0161',\n '≽': '\\u227D',\n '⪰': '\\u2AB0',\n 'ş': '\\u015F',\n 'ŝ': '\\u015D',\n '⪶': '\\u2AB6',\n '⪺': '\\u2ABA',\n '⋩': '\\u22E9',\n '⨓': '\\u2A13',\n '≿': '\\u227F',\n 'с': '\\u0441',\n '⋅': '\\u22C5',\n '⊡': '\\u22A1',\n '⩦': '\\u2A66',\n '⇘': '\\u21D8',\n '⤥': '\\u2925',\n '↘': '\\u2198',\n '↘': '\\u2198',\n '§': '\\u00A7',\n '§': '\\u00A7',\n ';': '\\u003B',\n '⤩': '\\u2929',\n '∖': '\\u2216',\n '∖': '\\u2216',\n '✶': '\\u2736',\n '𝔰': '\\uD835\\uDD30',\n '⌢': '\\u2322',\n '♯': '\\u266F',\n 'щ': '\\u0449',\n 'ш': '\\u0448',\n '∣': '\\u2223',\n '∥': '\\u2225',\n '­': '\\u00AD',\n '­': '\\u00AD',\n 'σ': '\\u03C3',\n 'ς': '\\u03C2',\n 'ς': '\\u03C2',\n '∼': '\\u223C',\n '⩪': '\\u2A6A',\n '≃': '\\u2243',\n '≃': '\\u2243',\n '⪞': '\\u2A9E',\n '⪠': '\\u2AA0',\n '⪝': '\\u2A9D',\n '⪟': '\\u2A9F',\n '≆': '\\u2246',\n '⨤': '\\u2A24',\n '⥲': '\\u2972',\n '←': '\\u2190',\n '∖': '\\u2216',\n '⨳': '\\u2A33',\n '⧤': '\\u29E4',\n '∣': '\\u2223',\n '⌣': '\\u2323',\n '⪪': '\\u2AAA',\n '⪬': '\\u2AAC',\n '⪬︀': '\\u2AAC\\uFE00',\n 'ь': '\\u044C',\n '/': '\\u002F',\n '⧄': '\\u29C4',\n '⌿': '\\u233F',\n '𝕤': '\\uD835\\uDD64',\n '♠': '\\u2660',\n '♠': '\\u2660',\n '∥': '\\u2225',\n '⊓': '\\u2293',\n '⊓︀': '\\u2293\\uFE00',\n '⊔': '\\u2294',\n '⊔︀': '\\u2294\\uFE00',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '□': '\\u25A1',\n '□': '\\u25A1',\n '▪': '\\u25AA',\n '▪': '\\u25AA',\n '→': '\\u2192',\n '𝓈': '\\uD835\\uDCC8',\n '∖': '\\u2216',\n '⌣': '\\u2323',\n '⋆': '\\u22C6',\n '☆': '\\u2606',\n '★': '\\u2605',\n 'ϵ': '\\u03F5',\n 'ϕ': '\\u03D5',\n '¯': '\\u00AF',\n '⊂': '\\u2282',\n '⫅': '\\u2AC5',\n '⪽': '\\u2ABD',\n '⊆': '\\u2286',\n '⫃': '\\u2AC3',\n '⫁': '\\u2AC1',\n '⫋': '\\u2ACB',\n '⊊': '\\u228A',\n '⪿': '\\u2ABF',\n '⥹': '\\u2979',\n '⊂': '\\u2282',\n '⊆': '\\u2286',\n '⫅': '\\u2AC5',\n '⊊': '\\u228A',\n '⫋': '\\u2ACB',\n '⫇': '\\u2AC7',\n '⫕': '\\u2AD5',\n '⫓': '\\u2AD3',\n '≻': '\\u227B',\n '⪸': '\\u2AB8',\n '≽': '\\u227D',\n '⪰': '\\u2AB0',\n '⪺': '\\u2ABA',\n '⪶': '\\u2AB6',\n '⋩': '\\u22E9',\n '≿': '\\u227F',\n '∑': '\\u2211',\n '♪': '\\u266A',\n '¹': '\\u00B9',\n '¹': '\\u00B9',\n '²': '\\u00B2',\n '²': '\\u00B2',\n '³': '\\u00B3',\n '³': '\\u00B3',\n '⊃': '\\u2283',\n '⫆': '\\u2AC6',\n '⪾': '\\u2ABE',\n '⫘': '\\u2AD8',\n '⊇': '\\u2287',\n '⫄': '\\u2AC4',\n '⟉': '\\u27C9',\n '⫗': '\\u2AD7',\n '⥻': '\\u297B',\n '⫂': '\\u2AC2',\n '⫌': '\\u2ACC',\n '⊋': '\\u228B',\n '⫀': '\\u2AC0',\n '⊃': '\\u2283',\n '⊇': '\\u2287',\n '⫆': '\\u2AC6',\n '⊋': '\\u228B',\n '⫌': '\\u2ACC',\n '⫈': '\\u2AC8',\n '⫔': '\\u2AD4',\n '⫖': '\\u2AD6',\n '⇙': '\\u21D9',\n '⤦': '\\u2926',\n '↙': '\\u2199',\n '↙': '\\u2199',\n '⤪': '\\u292A',\n 'ß': '\\u00DF',\n 'ß': '\\u00DF',\n '⌖': '\\u2316',\n 'τ': '\\u03C4',\n '⎴': '\\u23B4',\n 'ť': '\\u0165',\n 'ţ': '\\u0163',\n 'т': '\\u0442',\n '⃛': '\\u20DB',\n '⌕': '\\u2315',\n '𝔱': '\\uD835\\uDD31',\n '∴': '\\u2234',\n '∴': '\\u2234',\n 'θ': '\\u03B8',\n 'ϑ': '\\u03D1',\n 'ϑ': '\\u03D1',\n '≈': '\\u2248',\n '∼': '\\u223C',\n ' ': '\\u2009',\n '≈': '\\u2248',\n '∼': '\\u223C',\n 'þ': '\\u00FE',\n 'þ': '\\u00FE',\n '˜': '\\u02DC',\n '×': '\\u00D7',\n '×': '\\u00D7',\n '⊠': '\\u22A0',\n '⨱': '\\u2A31',\n '⨰': '\\u2A30',\n '∭': '\\u222D',\n '⤨': '\\u2928',\n '⊤': '\\u22A4',\n '⌶': '\\u2336',\n '⫱': '\\u2AF1',\n '𝕥': '\\uD835\\uDD65',\n '⫚': '\\u2ADA',\n '⤩': '\\u2929',\n '‴': '\\u2034',\n '™': '\\u2122',\n '▵': '\\u25B5',\n '▿': '\\u25BF',\n '◃': '\\u25C3',\n '⊴': '\\u22B4',\n '≜': '\\u225C',\n '▹': '\\u25B9',\n '⊵': '\\u22B5',\n '◬': '\\u25EC',\n '≜': '\\u225C',\n '⨺': '\\u2A3A',\n '⨹': '\\u2A39',\n '⧍': '\\u29CD',\n '⨻': '\\u2A3B',\n '⏢': '\\u23E2',\n '𝓉': '\\uD835\\uDCC9',\n 'ц': '\\u0446',\n 'ћ': '\\u045B',\n 'ŧ': '\\u0167',\n '≬': '\\u226C',\n '↞': '\\u219E',\n '↠': '\\u21A0',\n '⇑': '\\u21D1',\n '⥣': '\\u2963',\n 'ú': '\\u00FA',\n 'ú': '\\u00FA',\n '↑': '\\u2191',\n 'ў': '\\u045E',\n 'ŭ': '\\u016D',\n 'û': '\\u00FB',\n 'û': '\\u00FB',\n 'у': '\\u0443',\n '⇅': '\\u21C5',\n 'ű': '\\u0171',\n '⥮': '\\u296E',\n '⥾': '\\u297E',\n '𝔲': '\\uD835\\uDD32',\n 'ù': '\\u00F9',\n 'ù': '\\u00F9',\n '↿': '\\u21BF',\n '↾': '\\u21BE',\n '▀': '\\u2580',\n '⌜': '\\u231C',\n '⌜': '\\u231C',\n '⌏': '\\u230F',\n '◸': '\\u25F8',\n 'ū': '\\u016B',\n '¨': '\\u00A8',\n '¨': '\\u00A8',\n 'ų': '\\u0173',\n '𝕦': '\\uD835\\uDD66',\n '↑': '\\u2191',\n '↕': '\\u2195',\n '↿': '\\u21BF',\n '↾': '\\u21BE',\n '⊎': '\\u228E',\n 'υ': '\\u03C5',\n 'ϒ': '\\u03D2',\n 'υ': '\\u03C5',\n '⇈': '\\u21C8',\n '⌝': '\\u231D',\n '⌝': '\\u231D',\n '⌎': '\\u230E',\n 'ů': '\\u016F',\n '◹': '\\u25F9',\n '𝓊': '\\uD835\\uDCCA',\n '⋰': '\\u22F0',\n 'ũ': '\\u0169',\n '▵': '\\u25B5',\n '▴': '\\u25B4',\n '⇈': '\\u21C8',\n 'ü': '\\u00FC',\n 'ü': '\\u00FC',\n '⦧': '\\u29A7',\n '⇕': '\\u21D5',\n '⫨': '\\u2AE8',\n '⫩': '\\u2AE9',\n '⊨': '\\u22A8',\n '⦜': '\\u299C',\n 'ϵ': '\\u03F5',\n 'ϰ': '\\u03F0',\n '∅': '\\u2205',\n 'ϕ': '\\u03D5',\n 'ϖ': '\\u03D6',\n '∝': '\\u221D',\n '↕': '\\u2195',\n 'ϱ': '\\u03F1',\n 'ς': '\\u03C2',\n '⊊︀': '\\u228A\\uFE00',\n '⫋︀': '\\u2ACB\\uFE00',\n '⊋︀': '\\u228B\\uFE00',\n '⫌︀': '\\u2ACC\\uFE00',\n 'ϑ': '\\u03D1',\n '⊲': '\\u22B2',\n '⊳': '\\u22B3',\n 'в': '\\u0432',\n '⊢': '\\u22A2',\n '∨': '\\u2228',\n '⊻': '\\u22BB',\n '≚': '\\u225A',\n '⋮': '\\u22EE',\n '|': '\\u007C',\n '|': '\\u007C',\n '𝔳': '\\uD835\\uDD33',\n '⊲': '\\u22B2',\n '⊂⃒': '\\u2282\\u20D2',\n '⊃⃒': '\\u2283\\u20D2',\n '𝕧': '\\uD835\\uDD67',\n '∝': '\\u221D',\n '⊳': '\\u22B3',\n '𝓋': '\\uD835\\uDCCB',\n '⫋︀': '\\u2ACB\\uFE00',\n '⊊︀': '\\u228A\\uFE00',\n '⫌︀': '\\u2ACC\\uFE00',\n '⊋︀': '\\u228B\\uFE00',\n '⦚': '\\u299A',\n 'ŵ': '\\u0175',\n '⩟': '\\u2A5F',\n '∧': '\\u2227',\n '≙': '\\u2259',\n '℘': '\\u2118',\n '𝔴': '\\uD835\\uDD34',\n '𝕨': '\\uD835\\uDD68',\n '℘': '\\u2118',\n '≀': '\\u2240',\n '≀': '\\u2240',\n '𝓌': '\\uD835\\uDCCC',\n '⋂': '\\u22C2',\n '◯': '\\u25EF',\n '⋃': '\\u22C3',\n '▽': '\\u25BD',\n '𝔵': '\\uD835\\uDD35',\n '⟺': '\\u27FA',\n '⟷': '\\u27F7',\n 'ξ': '\\u03BE',\n '⟸': '\\u27F8',\n '⟵': '\\u27F5',\n '⟼': '\\u27FC',\n '⋻': '\\u22FB',\n '⨀': '\\u2A00',\n '𝕩': '\\uD835\\uDD69',\n '⨁': '\\u2A01',\n '⨂': '\\u2A02',\n '⟹': '\\u27F9',\n '⟶': '\\u27F6',\n '𝓍': '\\uD835\\uDCCD',\n '⨆': '\\u2A06',\n '⨄': '\\u2A04',\n '△': '\\u25B3',\n '⋁': '\\u22C1',\n '⋀': '\\u22C0',\n 'ý': '\\u00FD',\n 'ý': '\\u00FD',\n 'я': '\\u044F',\n 'ŷ': '\\u0177',\n 'ы': '\\u044B',\n '¥': '\\u00A5',\n '¥': '\\u00A5',\n '𝔶': '\\uD835\\uDD36',\n 'ї': '\\u0457',\n '𝕪': '\\uD835\\uDD6A',\n '𝓎': '\\uD835\\uDCCE',\n 'ю': '\\u044E',\n 'ÿ': '\\u00FF',\n 'ÿ': '\\u00FF',\n 'ź': '\\u017A',\n 'ž': '\\u017E',\n 'з': '\\u0437',\n 'ż': '\\u017C',\n 'ℨ': '\\u2128',\n 'ζ': '\\u03B6',\n '𝔷': '\\uD835\\uDD37',\n 'ж': '\\u0436',\n '⇝': '\\u21DD',\n '𝕫': '\\uD835\\uDD6B',\n '𝓏': '\\uD835\\uDCCF',\n '‍': '\\u200D',\n '‌': '\\u200C'\n};\n\nexport default htmlEntities;\n", "import htmlEntities from './html-entities.js';\n\nexport function decodeHTMLEntities(str) {\n return str.replace(/&(#\\d+|#x[a-f0-9]+|[a-z]+\\d*);?/gi, (match, entity) => {\n if (typeof htmlEntities[match] === 'string') {\n return htmlEntities[match];\n }\n\n if (entity.charAt(0) !== '#' || match.charAt(match.length - 1) !== ';') {\n // keep as is, invalid or unknown sequence\n return match;\n }\n\n let codePoint;\n if (entity.charAt(1) === 'x') {\n // hex\n codePoint = parseInt(entity.substr(2), 16);\n } else {\n // dec\n codePoint = parseInt(entity.substr(1), 10);\n }\n\n var output = '';\n\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n // Invalid range, return a replacement character instead\n return '\\uFFFD';\n }\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n\n return output;\n });\n}\n\nexport function escapeHtml(str) {\n return str.trim().replace(/[<>\"'?&]/g, c => {\n let hex = c.charCodeAt(0).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n return '&#x' + hex.toUpperCase() + ';';\n });\n}\n\nexport function textToHtml(str) {\n let html = escapeHtml(str).replace(/\\n/g, '
');\n return '
' + html + '
';\n}\n\nexport function htmlToText(str) {\n str = str\n // we can't process tags on multiple lines so remove newlines first\n .replace(/\\r?\\n/g, '\\u0001')\n .replace(/<\\!\\-\\-.*?\\-\\->/gi, ' ')\n\n .replace(/]*>/gi, '\\n')\n .replace(/<\\/?(p|div|table|tr|td|th)\\b[^>]*>/gi, '\\n\\n')\n .replace(/]*>.*?<\\/script\\b[^>]*>/gi, ' ')\n .replace(/^.*]*>/i, '')\n .replace(/^.*<\\/head\\b[^>]*>/i, '')\n .replace(/^.*<\\!doctype\\b[^>]*>/i, '')\n .replace(/<\\/body\\b[^>]*>.*$/i, '')\n .replace(/<\\/html\\b[^>]*>.*$/i, '')\n\n .replace(/]*href\\s*=\\s*[\"']?([^\\s\"']+)[^>]*>/gi, ' ($1) ')\n\n .replace(/<\\/?(span|em|i|strong|b|u|a)\\b[^>]*>/gi, '')\n\n .replace(/]*>[\\n\\u0001\\s]*/gi, '* ')\n\n .replace(/]*>/g, '\\n-------------\\n')\n\n .replace(/<[^>]*>/g, ' ')\n\n // convert linebreak placeholders back to newlines\n .replace(/\\u0001/g, '\\n')\n\n .replace(/[ \\t]+/g, ' ')\n\n .replace(/^\\s+$/gm, '')\n\n .replace(/\\n\\n+/g, '\\n\\n')\n .replace(/^\\n+/, '\\n')\n .replace(/\\n+$/, '\\n');\n\n str = decodeHTMLEntities(str);\n\n return str;\n}\n\nfunction formatTextAddress(address) {\n return []\n .concat(address.name || [])\n .concat(address.name ? `<${address.address}>` : address.address)\n .join(' ');\n}\n\nfunction formatTextAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push(', ');\n }\n\n if (address.group) {\n let groupStart = `${address.name}:`;\n let groupEnd = `;`;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatTextAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join('');\n}\n\nfunction formatHtmlAddress(address) {\n return ``;\n}\n\nfunction formatHtmlAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push('');\n }\n\n if (address.group) {\n let groupStart = ``;\n let groupEnd = ``;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatHtmlAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join(' ');\n}\n\nfunction foldLines(str, lineLength, afterSpace) {\n str = (str || '').toString();\n lineLength = lineLength || 76;\n\n let pos = 0,\n len = str.length,\n result = '',\n line,\n match;\n\n while (pos < len) {\n line = str.substr(pos, lineLength);\n if (line.length < lineLength) {\n result += line;\n break;\n }\n if ((match = line.match(/^[^\\n\\r]*(\\r?\\n|\\r)/))) {\n line = match[0];\n result += line;\n pos += line.length;\n continue;\n } else if (\n (match = line.match(/(\\s+)[^\\s]*$/)) &&\n match[0].length - (afterSpace ? (match[1] || '').length : 0) < line.length\n ) {\n line = line.substr(0, line.length - (match[0].length - (afterSpace ? (match[1] || '').length : 0)));\n } else if ((match = str.substr(pos + line.length).match(/^[^\\s]+(\\s*)/))) {\n line = line + match[0].substr(0, match[0].length - (!afterSpace ? (match[1] || '').length : 0));\n }\n\n result += line;\n pos += line.length;\n if (pos < len) {\n result += '\\r\\n';\n }\n }\n\n return result;\n}\n\nexport function formatTextHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push({ key: 'From', val: formatTextAddress(message.from) });\n }\n\n if (message.subject) {\n rows.push({ key: 'Subject', val: message.subject });\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr =\n typeof Intl === 'undefined'\n ? message.date\n : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push({ key: 'Date', val: dateStr });\n }\n\n if (message.to && message.to.length) {\n rows.push({ key: 'To', val: formatTextAddresses(message.to) });\n }\n\n if (message.cc && message.cc.length) {\n rows.push({ key: 'Cc', val: formatTextAddresses(message.cc) });\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push({ key: 'Bcc', val: formatTextAddresses(message.bcc) });\n }\n\n // Align keys and values by adding space between these two\n // Also make sure that the separator line is as long as the longest line\n // Should end up with something like this:\n /*\n -----------------------------\n From: xx xx \n Subject: Example Subject\n Date: 16/02/2021, 02:57:06\n To: not@found.com\n -----------------------------\n */\n\n let maxKeyLength = rows\n .map(r => r.key.length)\n .reduce((acc, cur) => {\n return cur > acc ? cur : acc;\n }, 0);\n\n rows = rows.flatMap(row => {\n let sepLen = maxKeyLength - row.key.length;\n let prefix = `${row.key}: ${' '.repeat(sepLen)}`;\n let emptyPrefix = `${' '.repeat(row.key.length + 1)} ${' '.repeat(sepLen)}`;\n\n let foldedLines = foldLines(row.val, 80, true)\n .split(/\\r?\\n/)\n .map(line => line.trim());\n\n return foldedLines.map((line, i) => `${i ? emptyPrefix : prefix}${line}`);\n });\n\n let maxLineLength = rows\n .map(r => r.length)\n .reduce((acc, cur) => {\n return cur > acc ? cur : acc;\n }, 0);\n\n let lineMarker = '-'.repeat(maxLineLength);\n\n let template = `\n${lineMarker}\n${rows.join('\\n')}\n${lineMarker}\n`;\n\n return template;\n}\n\nexport function formatHtmlHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push(\n ``\n );\n }\n\n if (message.subject) {\n rows.push(\n ``\n );\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr =\n typeof Intl === 'undefined'\n ? message.date\n : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push(\n ``\n );\n }\n\n if (message.to && message.to.length) {\n rows.push(\n ``\n );\n }\n\n if (message.cc && message.cc.length) {\n rows.push(\n ``\n );\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push(\n ``\n );\n }\n\n let template = ``;\n\n return template;\n}\n", "import { decodeWords } from './decode-strings.js';\n\n/**\n * Converts tokens for a single address into an address object\n *\n * @param {Array} tokens Tokens object\n * @return {Object} Address object\n */\nfunction _handleAddress(tokens) {\n let isGroup = false;\n let state = 'text';\n let address;\n let addresses = [];\n let data = {\n address: [],\n comment: [],\n group: [],\n text: [],\n textWasQuoted: [] // Track which text tokens came from inside quotes\n };\n let i;\n let len;\n let insideQuotes = false; // Track if we're currently inside a quoted string\n\n // Filter out , (comments) and regular text\n for (i = 0, len = tokens.length; i < len; i++) {\n let token = tokens[i];\n let prevToken = i ? tokens[i - 1] : null;\n if (token.type === 'operator') {\n switch (token.value) {\n case '<':\n state = 'address';\n insideQuotes = false;\n break;\n case '(':\n state = 'comment';\n insideQuotes = false;\n break;\n case ':':\n state = 'group';\n isGroup = true;\n insideQuotes = false;\n break;\n case '\"':\n // Track quote state for text tokens\n insideQuotes = !insideQuotes;\n state = 'text';\n break;\n default:\n state = 'text';\n insideQuotes = false;\n break;\n }\n } else if (token.value) {\n if (state === 'address') {\n // handle use case where unquoted name includes a \"<\"\n // Apple Mail truncates everything between an unexpected < and an address\n // and so will we\n token.value = token.value.replace(/^[^<]*<\\s*/, '');\n }\n\n if (prevToken && prevToken.noBreak && data[state].length) {\n // join values\n data[state][data[state].length - 1] += token.value;\n if (state === 'text' && insideQuotes) {\n data.textWasQuoted[data.textWasQuoted.length - 1] = true;\n }\n } else {\n data[state].push(token.value);\n if (state === 'text') {\n data.textWasQuoted.push(insideQuotes);\n }\n }\n }\n }\n\n // If there is no text but a comment, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n if (isGroup) {\n // http://tools.ietf.org/html/rfc2822#appendix-A.1.3\n data.text = data.text.join(' ');\n\n // Parse group members, but flatten any nested groups (RFC 5322 doesn't allow nesting)\n let groupMembers = [];\n if (data.group.length) {\n let parsedGroup = addressParser(data.group.join(','));\n // Flatten: if any member is itself a group, extract its members into the sequence\n parsedGroup.forEach(member => {\n if (member.group) {\n // Nested group detected - flatten it by adding its members directly\n groupMembers = groupMembers.concat(member.group);\n } else {\n groupMembers.push(member);\n }\n });\n }\n\n addresses.push({\n name: decodeWords(data.text || (address && address.name)),\n group: groupMembers\n });\n } else {\n // If no address was found, try to detect one from regular text\n if (!data.address.length && data.text.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n // Security fix: Do not extract email addresses from quoted strings\n // RFC 5321 allows @ inside quoted local-parts like \"user@domain\"@example.com\n // Extracting emails from quoted text leads to misrouting vulnerabilities\n if (!data.textWasQuoted[i] && data.text[i].match(/^[^@\\s]+@[^@\\s]+$/)) {\n data.address = data.text.splice(i, 1);\n data.textWasQuoted.splice(i, 1);\n break;\n }\n }\n\n let _regexHandler = function (address) {\n if (!data.address.length) {\n data.address = [address.trim()];\n return ' ';\n } else {\n return address;\n }\n };\n\n // still no address\n if (!data.address.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n // Security fix: Do not extract email addresses from quoted strings\n if (!data.textWasQuoted[i]) {\n // fixed the regex to parse email address correctly when email address has more than one @\n data.text[i] = data.text[i].replace(/\\s*\\b[^@\\s]+@[^\\s]+\\b\\s*/, _regexHandler).trim();\n if (data.address.length) {\n break;\n }\n }\n }\n }\n }\n\n // If there's still is no text but a comment exixts, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n // Keep only the first address occurence, push others to regular text\n if (data.address.length > 1) {\n data.text = data.text.concat(data.address.splice(1));\n }\n\n // Join values with spaces\n data.text = data.text.join(' ');\n data.address = data.address.join(' ');\n\n if (!data.address && /^=\\?[^=]+?=$/.test(data.text.trim())) {\n // try to extract words from text content\n const parsedSubAddresses = addressParser(decodeWords(data.text));\n if (parsedSubAddresses && parsedSubAddresses.length) {\n return parsedSubAddresses;\n }\n }\n\n if (!data.address && isGroup) {\n return [];\n } else {\n address = {\n address: data.address || data.text || '',\n name: decodeWords(data.text || data.address || '')\n };\n\n if (address.address === address.name) {\n if ((address.address || '').match(/@/)) {\n address.name = '';\n } else {\n address.address = '';\n }\n }\n\n addresses.push(address);\n }\n }\n\n return addresses;\n}\n\n/**\n * Creates a Tokenizer object for tokenizing address field strings\n *\n * @constructor\n * @param {String} str Address field string\n */\nclass Tokenizer {\n constructor(str) {\n this.str = (str || '').toString();\n this.operatorCurrent = '';\n this.operatorExpecting = '';\n this.node = null;\n this.escaped = false;\n\n this.list = [];\n /**\n * Operator tokens and which tokens are expected to end the sequence\n */\n this.operators = {\n '\"': '\"',\n '(': ')',\n '<': '>',\n ',': '',\n ':': ';',\n // Semicolons are not a legal delimiter per the RFC2822 grammar other\n // than for terminating a group, but they are also not valid for any\n // other use in this context. Given that some mail clients have\n // historically allowed the semicolon as a delimiter equivalent to the\n // comma in their UI, it makes sense to treat them the same as a comma\n // when used outside of a group.\n ';': ''\n };\n }\n\n /**\n * Tokenizes the original input string\n *\n * @return {Array} An array of operator|text tokens\n */\n tokenize() {\n let list = [];\n\n for (let i = 0, len = this.str.length; i < len; i++) {\n let chr = this.str.charAt(i);\n let nextChr = i < len - 1 ? this.str.charAt(i + 1) : null;\n this.checkChar(chr, nextChr);\n }\n\n this.list.forEach(node => {\n node.value = (node.value || '').toString().trim();\n if (node.value) {\n list.push(node);\n }\n });\n\n return list;\n }\n\n /**\n * Checks if a character is an operator or text and acts accordingly\n *\n * @param {String} chr Character from the address field\n */\n checkChar(chr, nextChr) {\n if (this.escaped) {\n // ignore next condition blocks\n } else if (chr === this.operatorExpecting) {\n this.node = {\n type: 'operator',\n value: chr\n };\n\n if (nextChr && ![' ', '\\t', '\\r', '\\n', ',', ';'].includes(nextChr)) {\n this.node.noBreak = true;\n }\n\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = '';\n this.escaped = false;\n\n return;\n } else if (!this.operatorExpecting && chr in this.operators) {\n this.node = {\n type: 'operator',\n value: chr\n };\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = this.operators[chr];\n this.escaped = false;\n return;\n } else if (['\"', \"'\"].includes(this.operatorExpecting) && chr === '\\\\') {\n this.escaped = true;\n return;\n }\n\n if (!this.node) {\n this.node = {\n type: 'text',\n value: ''\n };\n this.list.push(this.node);\n }\n\n if (chr === '\\n') {\n // Convert newlines to spaces. Carriage return is ignored as \\r and \\n usually\n // go together anyway and there already is a WS for \\n. Lone \\r means something is fishy.\n chr = ' ';\n }\n\n if (chr.charCodeAt(0) >= 0x21 || [' ', '\\t'].includes(chr)) {\n // skip command bytes\n this.node.value += chr;\n }\n\n this.escaped = false;\n }\n}\n\n/**\n * Parses structured e-mail addresses from an address field\n *\n * Example:\n *\n * 'Name '\n *\n * will be converted to\n *\n * [{name: 'Name', address: 'address@domain'}]\n *\n * @param {String} str Address field\n * @return {Array} An array of address objects\n */\nfunction addressParser(str, options) {\n options = options || {};\n\n let tokenizer = new Tokenizer(str);\n let tokens = tokenizer.tokenize();\n\n let addresses = [];\n let address = [];\n let parsedAddresses = [];\n\n tokens.forEach(token => {\n if (token.type === 'operator' && (token.value === ',' || token.value === ';')) {\n if (address.length) {\n addresses.push(address);\n }\n address = [];\n } else {\n address.push(token);\n }\n });\n\n if (address.length) {\n addresses.push(address);\n }\n\n addresses.forEach(address => {\n address = _handleAddress(address);\n if (address.length) {\n parsedAddresses = parsedAddresses.concat(address);\n }\n });\n\n if (options.flatten) {\n let addresses = [];\n let walkAddressList = list => {\n list.forEach(address => {\n if (address.group) {\n return walkAddressList(address.group);\n } else {\n addresses.push(address);\n }\n });\n };\n walkAddressList(parsedAddresses);\n return addresses;\n }\n\n return parsedAddresses;\n}\n\n// expose to the world\nexport default addressParser;\n", "// Code from: https://gist.githubusercontent.com/jonleighton/958841/raw/fb05a8632efb75d85d43deb593df04367ce48371/base64ArrayBuffer.js\n\n// Converts an ArrayBuffer directly to base64, without any intermediate 'convert to string then\n// use window.btoa' step. According to my tests, this appears to be a faster approach:\n// http://jsperf.com/encoding-xhr-image-data/5\n\n/*\nMIT LICENSE\n\nCopyright 2011 Jon Leighton\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nexport function base64ArrayBuffer(arrayBuffer) {\n var base64 = '';\n var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n var bytes = new Uint8Array(arrayBuffer);\n var byteLength = bytes.byteLength;\n var byteRemainder = byteLength % 3;\n var mainLength = byteLength - byteRemainder;\n\n var a, b, c, d;\n var chunk;\n\n // Main loop deals with bytes in chunks of 3\n for (var i = 0; i < mainLength; i = i + 3) {\n // Combine the three bytes into a single integer\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n\n // Convert the raw binary segments to the appropriate ASCII encoding\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];\n }\n\n // Deal with the remaining bytes and padding\n if (byteRemainder == 1) {\n chunk = bytes[mainLength];\n\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n\n base64 += encodings[a] + encodings[b] + '==';\n } else if (byteRemainder == 2) {\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];\n\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n\n base64 += encodings[a] + encodings[b] + encodings[c] + '=';\n }\n\n return base64;\n}\n", "import MimeNode from './mime-node.js';\nimport { textToHtml, htmlToText, formatTextHeader, formatHtmlHeader } from './text-format.js';\nimport addressParser from './address-parser.js';\nimport { decodeWords, textEncoder, blobToArrayBuffer } from './decode-strings.js';\nimport { base64ArrayBuffer } from './base64-encoder.js';\n\nexport { addressParser, decodeWords };\n\nconst MAX_NESTING_DEPTH = 256;\nconst MAX_HEADERS_SIZE = 2 * 1024 * 1024;\n\nexport default class PostalMime {\n static parse(buf, options) {\n const parser = new PostalMime(options);\n return parser.parse(buf);\n }\n\n constructor(options) {\n this.options = options || {};\n this.mimeOptions = {\n maxNestingDepth: this.options.maxNestingDepth || MAX_NESTING_DEPTH,\n maxHeadersSize: this.options.maxHeadersSize || MAX_HEADERS_SIZE\n };\n\n this.root = this.currentNode = new MimeNode({\n postalMime: this,\n ...this.mimeOptions\n });\n this.boundaries = [];\n\n this.textContent = {};\n this.attachments = [];\n\n this.attachmentEncoding =\n (this.options.attachmentEncoding || '')\n .toString()\n .replace(/[-_\\s]/g, '')\n .trim()\n .toLowerCase() || 'arraybuffer';\n\n this.started = false;\n }\n\n async finalize() {\n // close all pending nodes\n await this.root.finalize();\n }\n\n async processLine(line, isFinal) {\n let boundaries = this.boundaries;\n\n // check if this is a mime boundary\n if (boundaries.length && line.length > 2 && line[0] === 0x2d && line[1] === 0x2d) {\n // could be a boundary marker\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n\n if (line.length !== boundary.value.length + 2 && line.length !== boundary.value.length + 4) {\n continue;\n }\n\n let isTerminator = line.length === boundary.value.length + 4;\n\n if (isTerminator && (line[line.length - 2] !== 0x2d || line[line.length - 1] !== 0x2d)) {\n continue;\n }\n\n let boudaryMatches = true;\n for (let i = 0; i < boundary.value.length; i++) {\n if (line[i + 2] !== boundary.value[i]) {\n boudaryMatches = false;\n break;\n }\n }\n if (!boudaryMatches) {\n continue;\n }\n\n if (isTerminator) {\n await boundary.node.finalize();\n\n this.currentNode = boundary.node.parentNode || this.root;\n } else {\n // finalize any open child nodes (should be just one though)\n await boundary.node.finalizeChildNodes();\n\n this.currentNode = new MimeNode({\n postalMime: this,\n parentNode: boundary.node,\n ...this.mimeOptions\n });\n }\n\n if (isFinal) {\n return this.finalize();\n }\n\n return;\n }\n }\n\n this.currentNode.feed(line);\n\n if (isFinal) {\n return this.finalize();\n }\n }\n\n readLine() {\n let startPos = this.readPos;\n let endPos = this.readPos;\n\n let res = () => {\n return {\n bytes: new Uint8Array(this.buf, startPos, endPos - startPos),\n done: this.readPos >= this.av.length\n };\n };\n\n while (this.readPos < this.av.length) {\n const c = this.av[this.readPos++];\n\n if (c !== 0x0d && c !== 0x0a) {\n endPos = this.readPos;\n }\n\n if (c === 0x0a) {\n return res();\n }\n }\n\n return res();\n }\n\n async processNodeTree() {\n // get text nodes\n\n let textContent = {};\n\n let textTypes = new Set();\n let textMap = (this.textMap = new Map());\n\n let forceRfc822Attachments = this.forceRfc822Attachments();\n\n let walk = async (node, alternative, related) => {\n alternative = alternative || false;\n related = related || false;\n\n if (!node.contentType.multipart) {\n // is it inline message/rfc822\n if (this.isInlineMessageRfc822(node) && !forceRfc822Attachments) {\n const subParser = new PostalMime();\n node.subMessage = await subParser.parse(node.content);\n\n if (!textMap.has(node)) {\n textMap.set(node, {});\n }\n\n let textEntry = textMap.get(node);\n\n // default to text if there is no content\n if (node.subMessage.text || !node.subMessage.html) {\n textEntry.plain = textEntry.plain || [];\n textEntry.plain.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('plain');\n }\n\n if (node.subMessage.html) {\n textEntry.html = textEntry.html || [];\n textEntry.html.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('html');\n }\n\n if (subParser.textMap) {\n subParser.textMap.forEach((subTextEntry, subTextNode) => {\n textMap.set(subTextNode, subTextEntry);\n });\n }\n\n for (let attachment of node.subMessage.attachments || []) {\n this.attachments.push(attachment);\n }\n }\n\n // is it text?\n else if (this.isInlineTextNode(node)) {\n let textType = node.contentType.parsed.value.substr(node.contentType.parsed.value.indexOf('/') + 1);\n\n let selectorNode = alternative || node;\n if (!textMap.has(selectorNode)) {\n textMap.set(selectorNode, {});\n }\n\n let textEntry = textMap.get(selectorNode);\n textEntry[textType] = textEntry[textType] || [];\n textEntry[textType].push({ type: 'text', value: node.getTextContent() });\n textTypes.add(textType);\n }\n\n // is it an attachment\n else if (node.content) {\n const filename =\n node.contentDisposition.parsed.params.filename || node.contentType.parsed.params.name || null;\n const attachment = {\n filename: filename ? decodeWords(filename) : null,\n mimeType: node.contentType.parsed.value,\n disposition: node.contentDisposition.parsed.value || null\n };\n\n if (related && node.contentId) {\n attachment.related = true;\n }\n\n if (node.contentDescription) {\n attachment.description = node.contentDescription;\n }\n\n if (node.contentId) {\n attachment.contentId = node.contentId;\n }\n\n switch (node.contentType.parsed.value) {\n // Special handling for calendar events\n case 'text/calendar':\n case 'application/ics': {\n if (node.contentType.parsed.params.method) {\n attachment.method = node.contentType.parsed.params.method\n .toString()\n .toUpperCase()\n .trim();\n }\n\n // Enforce into unicode\n const decodedText = node.getTextContent().replace(/\\r?\\n/g, '\\n').replace(/\\n*$/, '\\n');\n attachment.content = textEncoder.encode(decodedText);\n break;\n }\n\n // Regular attachments\n default:\n attachment.content = node.content;\n }\n\n this.attachments.push(attachment);\n }\n } else if (node.contentType.multipart === 'alternative') {\n alternative = node;\n } else if (node.contentType.multipart === 'related') {\n related = node;\n }\n\n for (let childNode of node.childNodes) {\n await walk(childNode, alternative, related);\n }\n };\n\n await walk(this.root, false, []);\n\n textMap.forEach(mapEntry => {\n textTypes.forEach(textType => {\n if (!textContent[textType]) {\n textContent[textType] = [];\n }\n\n if (mapEntry[textType]) {\n mapEntry[textType].forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n textContent[textType].push(textEntry.value);\n break;\n\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push(formatHtmlHeader(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(formatTextHeader(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n } else {\n let alternativeType;\n switch (textType) {\n case 'html':\n alternativeType = 'plain';\n break;\n case 'plain':\n alternativeType = 'html';\n break;\n }\n\n (mapEntry[alternativeType] || []).forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n switch (textType) {\n case 'html':\n textContent[textType].push(textToHtml(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(htmlToText(textEntry.value));\n break;\n }\n break;\n\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push(formatHtmlHeader(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(formatTextHeader(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n }\n });\n });\n\n Object.keys(textContent).forEach(textType => {\n textContent[textType] = textContent[textType].join('\\n');\n });\n\n this.textContent = textContent;\n }\n\n isInlineTextNode(node) {\n if (node.contentDisposition.parsed.value === 'attachment') {\n // no matter the type, this is an attachment\n return false;\n }\n\n switch (node.contentType.parsed.value) {\n case 'text/html':\n case 'text/plain':\n return true;\n\n case 'text/calendar':\n case 'text/csv':\n default:\n return false;\n }\n }\n\n isInlineMessageRfc822(node) {\n if (node.contentType.parsed.value !== 'message/rfc822') {\n return false;\n }\n let disposition =\n node.contentDisposition.parsed.value || (this.options.rfc822Attachments ? 'attachment' : 'inline');\n return disposition === 'inline';\n }\n\n // Check if this is a specially crafted report email where message/rfc822 content should not be inlined\n forceRfc822Attachments() {\n if (this.options.forceRfc822Attachments) {\n return true;\n }\n\n let forceRfc822Attachments = false;\n let walk = node => {\n if (!node.contentType.multipart) {\n if (['message/delivery-status', 'message/feedback-report'].includes(node.contentType.parsed.value)) {\n forceRfc822Attachments = true;\n }\n }\n\n for (let childNode of node.childNodes) {\n walk(childNode);\n }\n };\n walk(this.root);\n return forceRfc822Attachments;\n }\n\n async resolveStream(stream) {\n let chunkLen = 0;\n let chunks = [];\n const reader = stream.getReader();\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n chunkLen += value.length;\n }\n\n const result = new Uint8Array(chunkLen);\n let chunkPointer = 0;\n for (let chunk of chunks) {\n result.set(chunk, chunkPointer);\n chunkPointer += chunk.length;\n }\n\n return result;\n }\n\n async parse(buf) {\n if (this.started) {\n throw new Error('Can not reuse parser, create a new PostalMime object');\n }\n this.started = true;\n\n // Check if the input is a readable stream and resolve it into an ArrayBuffer\n if (buf && typeof buf.getReader === 'function') {\n buf = await this.resolveStream(buf);\n }\n\n // Should it throw for an empty value instead of defaulting to an empty ArrayBuffer?\n buf = buf || new ArrayBuffer(0);\n\n // Cast string input to Uint8Array\n if (typeof buf === 'string') {\n buf = textEncoder.encode(buf);\n }\n\n // Cast Blob to ArrayBuffer\n if (buf instanceof Blob || Object.prototype.toString.call(buf) === '[object Blob]') {\n buf = await blobToArrayBuffer(buf);\n }\n\n // Cast Node.js Buffer object or Uint8Array into ArrayBuffer\n if (buf.buffer instanceof ArrayBuffer) {\n buf = new Uint8Array(buf).buffer;\n }\n\n this.buf = buf;\n\n this.av = new Uint8Array(buf);\n this.readPos = 0;\n\n while (this.readPos < this.av.length) {\n const line = this.readLine();\n\n await this.processLine(line.bytes, line.done);\n }\n\n await this.processNodeTree();\n\n const message = {\n headers: this.root.headers.map(entry => ({ key: entry.key, value: entry.value })).reverse()\n };\n\n for (const key of ['from', 'sender']) {\n const addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n const addresses = addressParser(addressHeader.value);\n if (addresses && addresses.length) {\n message[key] = addresses[0];\n }\n }\n }\n\n for (const key of ['delivered-to', 'return-path']) {\n const addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n const addresses = addressParser(addressHeader.value);\n if (addresses && addresses.length && addresses[0].address) {\n const camelKey = key.replace(/\\-(.)/g, (o, c) => c.toUpperCase());\n message[camelKey] = addresses[0].address;\n }\n }\n }\n\n for (const key of ['to', 'cc', 'bcc', 'reply-to']) {\n const addressHeaders = this.root.headers.filter(line => line.key === key);\n let addresses = [];\n\n addressHeaders\n .filter(entry => entry && entry.value)\n .map(entry => addressParser(entry.value))\n .forEach(parsed => (addresses = addresses.concat(parsed || [])));\n\n if (addresses && addresses.length) {\n const camelKey = key.replace(/\\-(.)/g, (o, c) => c.toUpperCase());\n message[camelKey] = addresses;\n }\n }\n\n for (const key of ['subject', 'message-id', 'in-reply-to', 'references']) {\n const header = this.root.headers.find(line => line.key === key);\n if (header && header.value) {\n const camelKey = key.replace(/\\-(.)/g, (o, c) => c.toUpperCase());\n message[camelKey] = decodeWords(header.value);\n }\n }\n\n let dateHeader = this.root.headers.find(line => line.key === 'date');\n if (dateHeader) {\n let date = new Date(dateHeader.value);\n if (!date || date.toString() === 'Invalid Date') {\n date = dateHeader.value;\n } else {\n // enforce ISO format if seems to be a valid date\n date = date.toISOString();\n }\n message.date = date;\n }\n\n if (this.textContent?.html) {\n message.html = this.textContent.html;\n }\n\n if (this.textContent?.plain) {\n message.text = this.textContent.plain;\n }\n\n message.attachments = this.attachments;\n\n switch (this.attachmentEncoding) {\n case 'arraybuffer':\n break;\n\n case 'base64':\n for (let attachment of message.attachments || []) {\n if (attachment?.content) {\n attachment.content = base64ArrayBuffer(attachment.content);\n attachment.encoding = 'base64';\n }\n }\n break;\n\n case 'utf8':\n let attachmentDecoder = new TextDecoder('utf8');\n for (let attachment of message.attachments || []) {\n if (attachment?.content) {\n attachment.content = attachmentDecoder.decode(attachment.content);\n attachment.encoding = 'utf8';\n }\n }\n break;\n\n default:\n throw new Error('Unknwon attachment encoding');\n }\n\n return message;\n }\n}\n", "// worker/src/utils.ts\n/**\n * \u4F7F\u7528\u5BC6\u94A5\u5BF9\u6587\u672C\u8FDB\u884C\u7B80\u5355\u7684 XOR \u52A0\u5BC6\u3002\n * @param text \u8981\u52A0\u5BC6\u7684\u6587\u672C\u3002\n * @param secret \u52A0\u5BC6\u5BC6\u94A5\u3002\n * @returns \u52A0\u5BC6\u540E\u7684 Base64 \u7F16\u7801\u5B57\u7B26\u4E32\u3002\n */\nexport function encrypt(text: string, secret: string): string {\n let result = '';\n for (let i = 0; i < text.length; i++) {\n // \u5BF9\u6BCF\u4E2A\u5B57\u7B26\u7684 ASCII \u7801\u4E0E\u5BC6\u94A5\u4E2D\u5BF9\u5E94\u4F4D\u7F6E\u7684\u5B57\u7B26 ASCII \u7801\u8FDB\u884C\u5F02\u6216\u64CD\u4F5C\n result += String.fromCharCode(text.charCodeAt(i) ^ secret.charCodeAt(i % secret.length));\n }\n // \u5C06\u52A0\u5BC6\u540E\u7684\u7ED3\u679C\u8F6C\u6362\u4E3A Base64 \u7F16\u7801\uFF0C\u4F7F\u5176\u66F4\u5B89\u5168\u5730\u4F20\u8F93\n return btoa(result);\n}\n\n/**\n * \u4F7F\u7528\u5BC6\u94A5\u5BF9 Base64 \u7F16\u7801\u7684\u52A0\u5BC6\u6587\u672C\u8FDB\u884C\u89E3\u5BC6\u3002\n * @param encryptedText \u52A0\u5BC6\u540E\u7684 Base64 \u7F16\u7801\u5B57\u7B26\u4E32\u3002\n * @param secret \u89E3\u5BC6\u5BC6\u94A5\u3002\n * @returns \u89E3\u5BC6\u540E\u7684\u539F\u59CB\u6587\u672C\u3002\n */\nexport function decrypt(encryptedText: string, secret: string): string {\n // \u9996\u5148\u5BF9 Base64 \u7F16\u7801\u7684\u5B57\u7B26\u4E32\u8FDB\u884C\u89E3\u7801\n const text = atob(encryptedText);\n let result = '';\n for (let i = 0; i < text.length; i++) {\n // \u540C\u6837\u8FDB\u884C\u5F02\u6216\u64CD\u4F5C\u6765\u8FD8\u539F\u539F\u59CB\u5B57\u7B26\n result += String.fromCharCode(text.charCodeAt(i) ^ secret.charCodeAt(i % secret.length));\n }\n return result;\n}", "import { Context, Next } from 'hono';\nimport { getD1DB } from '../../../database/db';\nimport { findApiKeyByKey, updateApiKeyLastUsed, incrementApiCalls } from '../../../database/dao';\nimport type { Env } from '../../../index';\n\n/**\n * API Key \u8BA4\u8BC1\u4E2D\u95F4\u4EF6\n * \u4ECE\u8BF7\u6C42\u5934 X-API-Key \u6216 Authorization: Bearer \u4E2D\u63D0\u53D6 API Key\n */\nexport const apiKeyAuth = async (c: Context<{ Bindings: Env }>, next: Next) => {\n // 1. \u63D0\u53D6 API Key\n let apiKey = c.req.header('X-API-Key');\n\n if (!apiKey) {\n const authHeader = c.req.header('Authorization');\n if (authHeader?.startsWith('Bearer ')) {\n apiKey = authHeader.substring(7);\n }\n }\n\n if (!apiKey) {\n return c.json({\n error: {\n code: 'UNAUTHORIZED',\n message: 'Missing API Key. Provide it via X-API-Key header or Authorization: Bearer ',\n }\n }, 401);\n }\n\n // 2. \u9A8C\u8BC1 API Key\n const db = getD1DB(c.env.DB);\n const keyRecord = await findApiKeyByKey(db, apiKey);\n\n if (!keyRecord) {\n return c.json({\n error: {\n code: 'UNAUTHORIZED',\n message: 'Invalid API Key',\n }\n }, 401);\n }\n\n // 3. \u68C0\u67E5\u662F\u5426\u542F\u7528\n if (!keyRecord.isActive) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'API Key is disabled',\n }\n }, 403);\n }\n\n // 4. \u68C0\u67E5\u662F\u5426\u8FC7\u671F\n if (keyRecord.expiresAt && keyRecord.expiresAt < new Date()) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'API Key has expired',\n }\n }, 403);\n }\n\n // 5. \u66F4\u65B0\u6700\u540E\u4F7F\u7528\u65F6\u95F4 (\u5F02\u6B65\uFF0C\u4E0D\u963B\u585E\u8BF7\u6C42)\n c.executionCtx.waitUntil(updateApiKeyLastUsed(db, keyRecord.id));\n\n // 6. \u589E\u52A0 API \u8C03\u7528\u8BA1\u6570 (\u5F02\u6B65\uFF0C\u4E0D\u963B\u585E\u8BF7\u6C42)\n c.executionCtx.waitUntil(incrementApiCalls(db));\n\n // 7. \u5C06 API Key \u4FE1\u606F\u5B58\u5165\u4E0A\u4E0B\u6587\n c.set('apiKey', {\n id: keyRecord.id,\n rateLimit: keyRecord.rateLimit || 100,\n });\n\n await next();\n};\n", "import { Hono } from 'hono';\nimport type { Env } from '../../../index';\nimport { getD1DB } from '../../../database/db';\nimport { nanoid } from 'nanoid/non-secure';\nimport {\n insertMailbox,\n findMailboxById,\n getMailboxMessages,\n findMailboxMessage,\n deleteMailboxMessage,\n getMailboxMessageCount,\n incrementAddressesCreated,\n} from '../../../database/dao';\n\n// \u968F\u673A\u90AE\u7BB1\u540D\u79F0\u751F\u6210\nfunction generateRandomLocalPart(): string {\n const adjectives = ['quick', 'lazy', 'happy', 'sad', 'bright', 'dark', 'warm', 'cold', 'soft', 'hard'];\n const nouns = ['fox', 'dog', 'cat', 'bird', 'fish', 'lion', 'bear', 'wolf', 'deer', 'hawk'];\n const adj = adjectives[Math.floor(Math.random() * adjectives.length)];\n const noun = nouns[Math.floor(Math.random() * nouns.length)];\n const num = Math.floor(Math.random() * 1000);\n return `${adj}-${noun}-${num}`;\n}\n\nconst mailboxesRouter = new Hono<{ Bindings: Env }>();\n\n// POST /api/v1/mailboxes - \u521B\u5EFA\u90AE\u7BB1\nmailboxesRouter.post('/', async (c) => {\n const db = getD1DB(c.env.DB);\n const apiKey = c.get('apiKey') as { id: string; rateLimit: number };\n\n let body: { localPart?: string; domain?: string; expiresIn?: number } = {};\n try {\n body = await c.req.json();\n } catch {\n // \u5141\u8BB8\u7A7A\u8BF7\u6C42\u4F53\n }\n\n // \u83B7\u53D6\u53EF\u7528\u57DF\u540D\n const availableDomains = c.env.EMAIL_DOMAIN ? c.env.EMAIL_DOMAIN.split(',').map(d => d.trim()) : [];\n if (availableDomains.length === 0) {\n return c.json({\n error: {\n code: 'CONFIGURATION_ERROR',\n message: 'No email domains configured',\n }\n }, 500);\n }\n\n // \u9A8C\u8BC1\u57DF\u540D\n const domain = body.domain || availableDomains[0];\n if (!availableDomains.includes(domain)) {\n return c.json({\n error: {\n code: 'VALIDATION_ERROR',\n message: `Invalid domain. Available domains: ${availableDomains.join(', ')}`,\n details: { field: 'domain', allowed: availableDomains }\n }\n }, 400);\n }\n\n // \u751F\u6210\u90AE\u7BB1\u5730\u5740\n const localPart = body.localPart || generateRandomLocalPart();\n const address = `${localPart}@${domain}`;\n\n // \u8BA1\u7B97\u8FC7\u671F\u65F6\u95F4\n const expiresIn = body.expiresIn || 24 * 60 * 60; // \u9ED8\u8BA4 24 \u5C0F\u65F6\n const expiresAt = new Date(Date.now() + expiresIn * 1000);\n\n const now = new Date();\n const mailbox = {\n id: nanoid(),\n address,\n domain,\n expiresAt,\n apiKeyId: apiKey.id,\n createdAt: now,\n updatedAt: now,\n };\n\n try {\n await insertMailbox(db, mailbox);\n // \u589E\u52A0\u90AE\u7BB1\u5730\u5740\u521B\u5EFA\u8BA1\u6570\n await incrementAddressesCreated(db);\n return c.json({\n data: {\n id: mailbox.id,\n address: mailbox.address,\n domain: mailbox.domain,\n expiresAt: mailbox.expiresAt.toISOString(),\n createdAt: mailbox.createdAt.toISOString(),\n }\n }, 201);\n } catch (e: any) {\n if (e.message?.includes('UNIQUE constraint failed')) {\n return c.json({\n error: {\n code: 'CONFLICT',\n message: 'Email address already exists',\n }\n }, 409);\n }\n console.error('Create mailbox error:', e);\n return c.json({\n error: {\n code: 'INTERNAL_ERROR',\n message: 'Failed to create mailbox',\n }\n }, 500);\n }\n});\n\n// GET /api/v1/mailboxes/:id - \u83B7\u53D6\u90AE\u7BB1\u4FE1\u606F\nmailboxesRouter.get('/:id', async (c) => {\n const db = getD1DB(c.env.DB);\n const apiKey = c.get('apiKey') as { id: string; rateLimit: number };\n const { id } = c.req.param();\n\n const mailbox = await findMailboxById(db, id);\n if (!mailbox) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Mailbox not found',\n }\n }, 404);\n }\n\n // \u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\n if (mailbox.apiKeyId !== apiKey.id) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'You do not have access to this mailbox',\n }\n }, 403);\n }\n\n const messageCount = await getMailboxMessageCount(db, mailbox.address);\n\n return c.json({\n data: {\n id: mailbox.id,\n address: mailbox.address,\n domain: mailbox.domain,\n expiresAt: mailbox.expiresAt?.toISOString() || null,\n createdAt: mailbox.createdAt.toISOString(),\n messageCount,\n }\n });\n});\n\n// GET /api/v1/mailboxes/:id/messages - \u83B7\u53D6\u6536\u4EF6\u7BB1\nmailboxesRouter.get('/:id/messages', async (c) => {\n const db = getD1DB(c.env.DB);\n const apiKey = c.get('apiKey') as { id: string; rateLimit: number };\n const { id } = c.req.param();\n\n const mailbox = await findMailboxById(db, id);\n if (!mailbox) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Mailbox not found',\n }\n }, 404);\n }\n\n // \u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\n if (mailbox.apiKeyId !== apiKey.id) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'You do not have access to this mailbox',\n }\n }, 403);\n }\n\n // \u89E3\u6790\u5206\u9875\u53C2\u6570\n const page = Math.max(1, parseInt(c.req.query('page') || '1', 10));\n const limit = Math.min(100, Math.max(1, parseInt(c.req.query('limit') || '20', 10)));\n const sort = c.req.query('sort') === 'asc' ? 'asc' : 'desc';\n\n const { messages, total, totalPages } = await getMailboxMessages(db, mailbox.address, { page, limit, sort });\n\n return c.json({\n data: messages.map((msg) => ({\n id: msg.id,\n from: msg.from,\n subject: msg.subject,\n preview: msg.text?.substring(0, 100) || null,\n receivedAt: msg.createdAt.toISOString(),\n })),\n pagination: {\n page,\n limit,\n total,\n totalPages,\n hasMore: page < totalPages,\n }\n });\n});\n\n// GET /api/v1/mailboxes/:id/messages/:messageId - \u83B7\u53D6\u90AE\u4EF6\u8BE6\u60C5\nmailboxesRouter.get('/:id/messages/:messageId', async (c) => {\n const db = getD1DB(c.env.DB);\n const apiKey = c.get('apiKey') as { id: string; rateLimit: number };\n const { id, messageId } = c.req.param();\n\n const mailbox = await findMailboxById(db, id);\n if (!mailbox) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Mailbox not found',\n }\n }, 404);\n }\n\n // \u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\n if (mailbox.apiKeyId !== apiKey.id) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'You do not have access to this mailbox',\n }\n }, 403);\n }\n\n const message = await findMailboxMessage(db, mailbox.address, messageId);\n if (!message) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Message not found',\n }\n }, 404);\n }\n\n return c.json({\n data: {\n id: message.id,\n messageId: message.messageId,\n from: message.from,\n to: message.to,\n cc: message.cc,\n bcc: message.bcc,\n replyTo: message.replyTo,\n subject: message.subject,\n text: message.text,\n html: message.html,\n headers: message.headers,\n receivedAt: message.createdAt.toISOString(),\n }\n });\n});\n\n// DELETE /api/v1/mailboxes/:id/messages/:messageId - \u5220\u9664\u90AE\u4EF6\nmailboxesRouter.delete('/:id/messages/:messageId', async (c) => {\n const db = getD1DB(c.env.DB);\n const apiKey = c.get('apiKey') as { id: string; rateLimit: number };\n const { id, messageId } = c.req.param();\n\n const mailbox = await findMailboxById(db, id);\n if (!mailbox) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Mailbox not found',\n }\n }, 404);\n }\n\n // \u9A8C\u8BC1\u6240\u5C5E\u5173\u7CFB\n if (mailbox.apiKeyId !== apiKey.id) {\n return c.json({\n error: {\n code: 'FORBIDDEN',\n message: 'You do not have access to this mailbox',\n }\n }, 403);\n }\n\n const deleted = await deleteMailboxMessage(db, mailbox.address, messageId);\n if (!deleted) {\n return c.json({\n error: {\n code: 'NOT_FOUND',\n message: 'Message not found',\n }\n }, 404);\n }\n\n return c.json({\n data: {\n deleted: true,\n id: messageId,\n }\n });\n});\n\nexport default mailboxesRouter;\n", "import { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport type { Env } from '../../index';\nimport { apiKeyAuth } from './middleware/apiKeyAuth';\nimport mailboxesRouter from './routes/mailboxes';\n\nconst v1 = new Hono<{ Bindings: Env }>();\n\n// \u914D\u7F6E CORS\nv1.use('/*', cors());\n\n// \u6240\u6709 v1 \u8DEF\u7531\u90FD\u9700\u8981 API Key \u8BA4\u8BC1\nv1.use('/*', apiKeyAuth);\n\n// \u6302\u8F7D\u90AE\u7BB1\u8DEF\u7531\nv1.route('/mailboxes', mailboxesRouter);\n\nexport default v1;\n", "import { Hono } from 'hono';\nimport { serveStatic } from 'hono/cloudflare-workers';\nimport { cors } from 'hono/cors';\n// \u5BFC\u5165\u6570\u636E\u5E93\u76F8\u5173\u7684\u6A21\u5757\nimport { deleteEmails, findEmailById, getEmailsByMessageTo, insertEmail, deleteExpiredEmails, insertApiKey, getSiteStats, incrementEmailsReceived, incrementApiKeysCreated, incrementAddressesCreated } from './database/dao';\nimport { getD1DB } from './database/db';\nimport { InsertEmail, insertEmailSchema } from './database/schema';\nimport { nanoid } from 'nanoid/non-secure';\nimport PostalMime from 'postal-mime';\n// \u5BFC\u5165\u52A0\u89E3\u5BC6\u5DE5\u5177\u51FD\u6570\nimport { decrypt } from './utils';\n// \u5BFC\u5165 v1 API\nimport v1Api from './api/v1';\n\n\n// \u5B9A\u4E49 Cloudflare \u7ED1\u5B9A\u548C\u73AF\u5883\u53D8\u91CF\u7684\u7C7B\u578B\nexport interface Env {\n DB: D1Database;\n ASSETS: Fetcher;\n\n // \u4ECE wrangler.toml \u4E2D\u4F20\u5165\u7684\u73AF\u5883\u53D8\u91CF\n EMAIL_DOMAIN: string;\n COOKIES_SECRET: string;\n TURNSTILE_KEY: string;\n TURNSTILE_SECRET: string;\n}\n\n// \u521D\u59CB\u5316 Hono \u5E94\u7528\nconst app = new Hono<{ Bindings: Env }>();\n\n// \u914D\u7F6E CORS\napp.use('/api/*', cors());\n\n// fix: \u589E\u5F3A\u8BF7\u6C42\u4F53\u9A8C\u8BC1\u903B\u8F91\u3002\n// \u6B64\u524D\u7684\u5B9E\u73B0\u65B9\u5F0F\u5728\u8BF7\u6C42\u4F53\u89E3\u6790\u5931\u8D25\u65F6\u4F1A\u9759\u9ED8\u5904\u7406\uFF0C\u5BFC\u81F4\u540E\u7EED\u5904\u7406\u6D41\u7A0B\u56E0\u7F3A\u5C11\u6570\u636E\u800C\u8FD4\u56DE\u4E00\u4E2A\u6A21\u7CCA\u7684400\u9519\u8BEF\u3002\n// \u65B0\u7684\u5B9E\u73B0\u65B9\u5F0F\u4F1A\u4E25\u683C\u6821\u9A8C\u8BF7\u6C42\u4F53\uFF0C\u5982\u679C\u89E3\u6790\u4E3AJSON\u5931\u8D25\uFF08\u4F8B\u5982\u8BF7\u6C42\u4F53\u4E3A\u7A7A\u6216\u683C\u5F0F\u9519\u8BEF\uFF09\uFF0C\u5C06\u7ACB\u5373\u8FD4\u56DE\u4E00\u4E2A\u660E\u786E\u7684400\u9519\u8BEF\uFF0C\u4ECE\u800C\u963B\u6B62\u65E0\u6548\u8BF7\u6C42\u7EE7\u7EED\u6267\u884C\u3002\nconst turnstile = async (c, next) => {\n let body: any;\n try {\n // \u5C1D\u8BD5\u5C06\u8BF7\u6C42\u4F53\u89E3\u6790\u4E3AJSON\u3002\u5982\u679C\u5931\u8D25\uFF0C\u5C06\u629B\u51FA\u5F02\u5E38\u3002\n body = await c.req.json();\n } catch (e) {\n // \u6355\u83B7\u5F02\u5E38\uFF0C\u8BB0\u5F55\u9519\u8BEF\u65E5\u5FD7\uFF0C\u5E76\u8FD4\u56DE\u4E00\u4E2A\u6E05\u6670\u7684\u9519\u8BEF\u54CD\u5E94\u3002\n console.error(\"\u8BF7\u6C42\u4F53\u89E3\u6790\u4E3AJSON\u65F6\u51FA\u9519:\", e);\n return c.json({ message: '\u9519\u8BEF\u7684\u8BF7\u6C42\uFF1A\u8BF7\u6C42\u4F53\u65E0\u6548\u6216\u4E3A\u7A7A\u3002' }, 400);\n }\n\n // \u5C06\u89E3\u6790\u540E\u7684 body \u5B58\u5165\u4E0A\u4E0B\u6587\uFF0C\u4EE5\u4FBF\u4E0B\u6E38\u5904\u7406\u5668\u76F4\u63A5\u4F7F\u7528\uFF0C\u907F\u514D\u91CD\u590D\u89E3\u6790\u3002\n c.set('parsedBody', body);\n\n const token = body.token || c.req.header('cf-turnstile-token');\n const ip = c.req.header('CF-Connecting-IP');\n\n if (!token) {\n return c.json({ message: '\u7F3A\u5C11 turnstile token' }, 400);\n }\n\n // fix: \u5207\u6362\u5230 application/x-www-form-urlencoded \u683C\u5F0F\u6765\u53D1\u9001\u9A8C\u8BC1\u8BF7\u6C42\u3002\n // \u8FD9\u53EF\u4EE5\u63D0\u9AD8\u517C\u5BB9\u6027\uFF0C\u5E76\u53EF\u80FD\u89E3\u51B3\u7531 FormData \u7F16\u7801\u5F15\u8D77\u7684\u8FB9\u754C\u95EE\u9898\u3002\n const params = new URLSearchParams();\n params.append('secret', c.env.TURNSTILE_SECRET);\n params.append('response', token);\n if (ip) {\n params.append('remoteip', ip);\n }\n\n const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n\n const data = await res.json();\n if (!data.success) {\n // feat: \u589E\u52A0\u8BE6\u7EC6\u7684\u9519\u8BEF\u65E5\u5FD7\uFF0C\u65B9\u4FBF\u8C03\u8BD5\n console.error(\"Turnstile \u9A8C\u8BC1\u5931\u8D25:\", data['error-codes']);\n return c.json({ message: 'token \u65E0\u6548' }, 400);\n }\n\n await next();\n};\n\n// API \u8DEF\u7531\u7EC4\nconst api = app.basePath('/api');\n\n// feat: \u65B0\u589E\u4E00\u4E2A\u4E13\u95E8\u7528\u4E8E\u4EBA\u673A\u9A8C\u8BC1\u7684\u63A5\u53E3\u3002\n// \u524D\u7AEF\u5E94\u5728\u751F\u6210\u90AE\u7BB1\u5730\u5740\u524D\u5148\u8C03\u7528\u6B64\u63A5\u53E3\u3002\napi.post('/verify', turnstile, async (c) => {\n // turnstile \u4E2D\u95F4\u4EF6\u5DF2\u7ECF\u5B8C\u6210\u4E86\u9A8C\u8BC1\u5DE5\u4F5C\u3002\n // \u5982\u679C\u4EE3\u7801\u80FD\u6267\u884C\u5230\u8FD9\u91CC\uFF0C\u8BF4\u660E\u9A8C\u8BC1\u6210\u529F\u3002\n return c.json({ success: true });\n});\n\n// \u751F\u6210 API Key \u7684\u51FD\u6570\nfunction generateApiKey(): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let key = 'vmail_';\n for (let i = 0; i < 32; i++) {\n key += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return key;\n}\n\n// \u521B\u5EFA API Key \u63A5\u53E3\uFF08\u9700\u8981 Turnstile \u9A8C\u8BC1\uFF09\napi.post('/api-keys', turnstile, async (c) => {\n const db = getD1DB(c.env.DB);\n const body = c.get('parsedBody') as { name?: string };\n\n const now = new Date();\n const apiKey = generateApiKey();\n const keyPrefix = apiKey.substring(0, 12) + '...';\n\n const newApiKey = {\n id: nanoid(),\n key: apiKey,\n keyPrefix: keyPrefix,\n name: body?.name || null,\n rateLimit: 100,\n isActive: true,\n lastUsedAt: null,\n expiresAt: null,\n createdAt: now,\n updatedAt: now,\n };\n\n try {\n await insertApiKey(db, newApiKey);\n // \u589E\u52A0 API Key \u521B\u5EFA\u8BA1\u6570\n await incrementApiKeysCreated(db);\n // \u53EA\u8FD4\u56DE\u4E00\u6B21\u5B8C\u6574\u7684 API Key\uFF0C\u4E4B\u540E\u65E0\u6CD5\u518D\u83B7\u53D6\n return c.json({\n data: {\n id: newApiKey.id,\n key: apiKey, // \u5B8C\u6574\u7684 API Key\uFF0C\u53EA\u5C55\u793A\u8FD9\u4E00\u6B21\n keyPrefix: keyPrefix,\n name: newApiKey.name,\n createdAt: now.toISOString(),\n },\n message: 'API Key created successfully. Please save it now, it will not be shown again!'\n }, 201);\n } catch (e: any) {\n console.error('Create API Key error:', e);\n return c.json({\n error: {\n code: 'INTERNAL_ERROR',\n message: 'Failed to create API Key',\n }\n }, 500);\n }\n});\n\n// fix: \u79FB\u9664\u83B7\u53D6\u90AE\u4EF6\u5217\u8868\u63A5\u53E3\u7684 turnstile \u9A8C\u8BC1\u3002\n// \u8FD9\u4E2A\u63A5\u53E3\u73B0\u5728\u662F\u516C\u5F00\u7684\uFF0C\u5237\u65B0\u6536\u4EF6\u7BB1\u65F6\u53EF\u4EE5\u76F4\u63A5\u8C03\u7528\uFF0C\u4E0D\u518D\u9700\u8981\u91CD\u590D\u9A8C\u8BC1\u3002\napi.post('/emails', async (c) => {\n const db = getD1DB(c.env.DB);\n let body: any;\n try {\n body = await c.req.json();\n } catch (e) {\n return c.json({ message: '\u9519\u8BEF\u7684\u8BF7\u6C42\uFF1A\u8BF7\u6C42\u4F53\u65E0\u6548\u6216\u4E3A\u7A7A\u3002' }, 400);\n }\n const address = body?.address;\n\n if (!address) {\n return c.json({ message: 'address is required' }, 400);\n }\n const emails = await getEmailsByMessageTo(db, address as string);\n return c.json(emails);\n});\n\n\n// \u83B7\u53D6\u5355\u5C01\u90AE\u4EF6\u8BE6\u60C5\napi.get('/emails/:id', async (c) => {\n const db = getD1DB(c.env.DB);\n const { id } = c.req.param();\n // \u51FD\u6570\u8C03\u7528\u4FEE\u6B63\uFF1A\u4F7F\u7528 findEmailById \u51FD\u6570\n const email = await findEmailById(db, id);\n if (!email) {\n return c.json({ message: 'Email not found'}, 404);\n }\n return c.json(email);\n});\n\n// fix: \u5220\u9664\u90AE\u4EF6\u63A5\u53E3\u4E0D\u518D\u9700\u8981 turnstile \u9A8C\u8BC1\uFF0C\u56E0\u4E3A\u901A\u5E38\u8FD9\u662F\u5728\u5DF2\u77E5\u90AE\u7BB1\u4E0A\u4E0B\u6587\u4E2D\u64CD\u4F5C\u7684\u3002\napi.post('/delete-emails', async (c) => {\n const db = getD1DB(c.env.DB);\n const body = await c.req.json();\n const ids = body?.ids;\n if (!ids || !Array.isArray(ids) || ids.length === 0) {\n return c.json({ message: 'ids are required' }, 400);\n }\n const result = await deleteEmails(db, ids as string[]);\n return c.json(result);\n});\n\n// \u4FEE\u590D\uFF1A\u79FB\u9664\u767B\u5F55\u63A5\u53E3\u7684 turnstile \u4E2D\u95F4\u4EF6\uFF0C\u4F7F\u5176\u4E0D\u518D\u9700\u8981\u4EBA\u673A\u9A8C\u8BC1\u3002\napi.post('/login', async (c) => {\n // const db = getD1DB(c.env.DB); // \u6570\u636E\u5E93\u8FDE\u63A5\u4E0D\u518D\u9700\u8981\u7528\u4E8E\u9A8C\u8BC1\n // \u4FEE\u590D\uFF1A\u7531\u4E8E\u79FB\u9664\u4E86 turnstile \u4E2D\u95F4\u4EF6\uFF0C\u73B0\u5728\u9700\u8981\u5728\u6B64\u5904\u76F4\u63A5\u89E3\u6790\u8BF7\u6C42\u4F53\u3002\n const body = await c.req.json();\n const password = body?.password;\n\n if (!password) {\n return c.json({ message: 'Password is required' }, 400);\n }\n\n try {\n // \u89E3\u5BC6\u5BC6\u7801\u4EE5\u83B7\u53D6\u90AE\u7BB1\u5730\u5740\n const address = decrypt(password, c.env.COOKIES_SECRET);\n \n // **\u6838\u5FC3\u4FEE\u590D**\uFF1A\u79FB\u9664\u6570\u636E\u5E93\u90AE\u4EF6\u68C0\u67E5\u903B\u8F91\n // \u4E0D\u518D\u9700\u8981\u67E5\u8BE2\u6570\u636E\u5E93\u4E2D\u662F\u5426\u5B58\u5728\u8BE5\u5730\u5740\u7684\u90AE\u4EF6\n // const emails = await getEmailsByMessageTo(db, address);\n // if (emails.length === 0) {\n // \u5982\u679C\u8BE5\u5730\u5740\u4ECE\u672A\u6536\u5230\u8FC7\u90AE\u4EF6\uFF0C\u5219\u89C6\u4E3A\u65E0\u6548\u5BC6\u7801\n // return c.json({ message: 'Invalid password' }, 404);\n // }\n\n // \u53EF\u9009\uFF1A\u6DFB\u52A0\u4E00\u4E2A\u7B80\u5355\u7684\u90AE\u7BB1\u5730\u5740\u683C\u5F0F\u6821\u9A8C\uFF0C\u589E\u52A0\u5065\u58EE\u6027\n // \u4F8B\u5982\uFF0C\u68C0\u67E5\u662F\u5426\u5305\u542B '@' \u7B26\u53F7\n if (!address || typeof address !== 'string' || !address.includes('@')) {\n console.error(\"\u89E3\u5BC6\u540E\u7684\u5730\u5740\u683C\u5F0F\u65E0\u6548:\", address);\n return c.json({ message: 'Invalid password' }, 400); // \u5730\u5740\u683C\u5F0F\u4E0D\u5BF9\u4E5F\u89C6\u4E3A\u5BC6\u7801\u65E0\u6548\n }\n\n // \u767B\u5F55\u6210\u529F\uFF0C\u8FD4\u56DE\u90AE\u7BB1\u5730\u5740\n return c.json({ address });\n } catch (e) {\n console.error(\"Login error:\", e);\n // \u5982\u679C\u89E3\u5BC6\u5931\u8D25\u6216\u53D1\u751F\u5176\u4ED6\u9519\u8BEF\uFF0C\u8FD4\u56DE\u65E0\u6548\u5BC6\u7801\u9519\u8BEF\n return c.json({ message: 'Invalid password' }, 400);\n }\n});\n\n\n// \u524D\u7AEF\u914D\u7F6E\u63A5\u53E3\napp.get('/config', (c) => {\n // feat: \u5C06 emailDomain \u62C6\u5206\u4E3A\u6570\u7EC4\u4EE5\u652F\u6301\u591A\u57DF\u540D\n const emailDomain = c.env.EMAIL_DOMAIN ? c.env.EMAIL_DOMAIN.split(',').map(d => d.trim()) : [];\n return c.json({\n emailDomain: emailDomain, // \u8FD4\u56DE\u57DF\u540D\u6570\u7EC4\n turnstileKey: c.env.TURNSTILE_KEY,\n cookiesSecret: c.env.COOKIES_SECRET,\n });\n});\n\n// \u7AD9\u70B9\u7EDF\u8BA1\u6570\u636E\u63A5\u53E3\uFF08\u516C\u5F00\uFF09\napi.get('/stats', async (c) => {\n const db = getD1DB(c.env.DB);\n const stats = await getSiteStats(db);\n if (!stats) {\n return c.json({\n totalAddressesCreated: 0,\n totalEmailsReceived: 0,\n totalApiCalls: 0,\n totalApiKeysCreated: 0,\n });\n }\n return c.json({\n totalAddressesCreated: stats.totalAddressesCreated,\n totalEmailsReceived: stats.totalEmailsReceived,\n totalApiCalls: stats.totalApiCalls,\n totalApiKeysCreated: stats.totalApiKeysCreated,\n });\n});\n\n// \u6302\u8F7D v1 API \u8DEF\u7531\napp.route('/api/v1', v1Api);\n\n\n// \u9759\u6001\u8D44\u6E90\u670D\u52A1 (\u653E\u5728\u6700\u540E\uFF0C\u4F5C\u4E3A\u9ED8\u8BA4\u8DEF\u7531)\n// \u4FEE\u6B63: \u786E\u4FDD serveStatic \u6B63\u786E\u6307\u5411\u9759\u6001\u6587\u4EF6\u76EE\u5F55\n// Hono v4 \u4E2D serveStatic \u9ED8\u8BA4\u5904\u7406\u6839\u8DEF\u5F84\uFF0C\u6211\u4EEC\u9700\u8981\u786E\u4FDD\u5B83\u6307\u5411\u6B63\u786E\u7684\u5B50\u76EE\u5F55\napp.get('/*', serveStatic({ root: './' }))\napp.get('/assets/*', serveStatic({ root: './' }))\n\n\n// Worker \u4E3B\u5904\u7406\u903B\u8F91\nexport default {\n // \u90AE\u4EF6\u5904\u7406\u903B\u8F91\n async email(message: ForwardableEmail, env: Env, ctx: ExecutionContext) {\n try {\n const db = getD1DB(env.DB);\n // \u5C06\u539F\u59CB\u90AE\u4EF6\u6D41\u8F6C\u6362\u4E3A\u6587\u672C\n const raw = await new Response(message.raw).text();\n // \u4F7F\u7528 postal-mime \u89E3\u6790\u90AE\u4EF6\n const mail = await new PostalMime().parse(raw);\n const now = new Date();\n\n // **\u5173\u952E\u4FEE\u590D**\uFF1A\u663E\u5F0F\u5730\u4ECE\u89E3\u6790\u7ED3\u679C\u4E2D\u6620\u5C04\u5B57\u6BB5\uFF0C\u800C\u4E0D\u662F\u4F7F\u7528\u5BF9\u8C61\u5C55\u5F00(...)\n // \u8FD9\u6837\u53EF\u4EE5\u907F\u514D\u5C5E\u6027\u8986\u76D6\u548C\u7C7B\u578B\u4E0D\u5339\u914D\u7684\u95EE\u9898\n const newEmail: InsertEmail = {\n id: nanoid(),\n messageFrom: message.from,\n messageTo: message.to,\n headers: mail.headers || [], // \u786E\u4FDD headers \u5B58\u5728\n from: mail.from,\n sender: mail.sender,\n replyTo: mail.replyTo,\n deliveredTo: mail.deliveredTo,\n returnPath: mail.returnPath,\n to: mail.to,\n cc: mail.cc,\n bcc: mail.bcc,\n subject: mail.subject,\n messageId: mail.messageId, // messageId \u5728\u6570\u636E\u5E93\u4E2D\u662F\u5FC5\u9700\u7684\n inReplyTo: mail.inReplyTo,\n references: mail.references,\n date: mail.date,\n html: mail.html,\n text: mail.text,\n createdAt: now,\n updatedAt: now,\n };\n\n // \u9A8C\u8BC1\u5F85\u63D2\u5165\u7684\u6570\u636E\u662F\u5426\u7B26\u5408 schema\n const email = insertEmailSchema.parse(newEmail);\n // \u63D2\u5165\u6570\u636E\u5E93\n await insertEmail(db, email);\n // \u589E\u52A0\u90AE\u4EF6\u63A5\u6536\u8BA1\u6570\n await incrementEmailsReceived(db);\n } catch (e: any) {\n // **\u5173\u952E\u4FEE\u590D**\uFF1A\u5411 Cloudflare \u53D1\u51FA\u62D2\u7EDD\u4FE1\u53F7\n // \u5F53\u53D1\u751F\u4EFB\u4F55\u9519\u8BEF\u65F6\uFF0C\u8C03\u7528 message.setReject() \u544A\u77E5 Cloudflare \u5904\u7406\u5931\u8D25\u3002\n // \u8FD9\u4F1A\u8BA9 Cloudflare \u5C1D\u8BD5\u91CD\u65B0\u6295\u9012\u90AE\u4EF6\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u5220\u9664\u3002\n console.error('\u5904\u7406\u90AE\u4EF6\u5931\u8D25:', e);\n message.setReject(`\u90AE\u4EF6\u5904\u7406\u5931\u8D25: ${e.message}`);\n }\n },\n\n // HTTP \u8BF7\u6C42\u5904\u7406\u903B\u8F91\n async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise {\n const url = new URL(request.url);\n // API \u8DEF\u7531\n if (url.pathname.startsWith('/api/') || url.pathname === '/config') {\n return app.fetch(request, env, ctx);\n }\n\n // \u9759\u6001\u8D44\u6E90\u8BF7\u6C42\n const response = await env.ASSETS.fetch(request);\n\n // SPA \u8DEF\u7531\u56DE\u9000\uFF1A\u5982\u679C\u9759\u6001\u8D44\u6E90\u8FD4\u56DE 404\uFF0C\u5219\u8FD4\u56DE index.html\n // \u8FD9\u6837\u53EF\u4EE5\u652F\u6301\u76F4\u63A5\u8BBF\u95EE /api-docs \u7B49\u524D\u7AEF\u8DEF\u7531\n if (response.status === 404) {\n const indexRequest = new Request(new URL('/', request.url).toString(), request);\n return env.ASSETS.fetch(indexRequest);\n }\n\n return response;\n },\n\n // \u5B9A\u65F6\u4EFB\u52A1 (\u6E05\u7406\u8FC7\u671F\u90AE\u4EF6)\n async scheduled(event, env, ctx) {\n const db = getD1DB(env.DB);\n // \u4FEE\u590D\uFF1A\u5C06\u6E05\u7406\u65F6\u95F4\u4ECE1\u5C0F\u65F6\u4FEE\u6539\u4E3A24\u5C0F\u65F6\uFF081\u5929\uFF09\n const oneDayAgo = new Date(Date.now() - 1000 * 60 * 60 * 24);\n await deleteExpiredEmails(db, oneDayAgo);\n console.log(`\u5DF2\u6E05\u7406 ${oneDayAgo.toISOString()} \u4E4B\u524D\u7684\u8FC7\u671F\u90AE\u4EF6`); // \u6DFB\u52A0\u65E5\u5FD7\n },\n};\n", "import type { Middleware } from \"./common\";\n\nconst drainBody: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} finally {\n\t\ttry {\n\t\t\tif (request.body !== null && !request.bodyUsed) {\n\t\t\t\tconst reader = request.body.getReader();\n\t\t\t\twhile (!(await reader.read()).done) {}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Failed to drain the unused request body.\", e);\n\t\t}\n\t}\n};\n\nexport default drainBody;\n", "import type { Middleware } from \"./common\";\n\ninterface JsonError {\n\tmessage?: string;\n\tname?: string;\n\tstack?: string;\n\tcause?: JsonError;\n}\n\nfunction reduceError(e: any): JsonError {\n\treturn {\n\t\tname: e?.name,\n\t\tmessage: e?.message ?? String(e),\n\t\tstack: e?.stack,\n\t\tcause: e?.cause === undefined ? undefined : reduceError(e.cause),\n\t};\n}\n\n// See comment in `bundle.ts` for details on why this is needed\nconst jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} catch (e: any) {\n\t\tconst error = reduceError(e);\n\t\treturn Response.json(error, {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"MF-Experimental-Error-Stack\": \"true\" },\n\t\t});\n\t}\n};\n\nexport default jsonError;\n", "\t\t\t\timport worker, * as OTHER_EXPORTS from \"/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"/Users/songjunxi/Desktop/repos/vmail/worker/src/index.ts\";\n\n\t\t\t\texport const __INTERNAL_WRANGLER_MIDDLEWARE__ = [\n\t\t\t\t\t\n\t\t\t\t\t__MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default\n\t\t\t\t]\n\t\t\t\texport default worker;", "export type Awaitable = T | Promise;\n// TODO: allow dispatching more events?\nexport type Dispatcher = (\n\ttype: \"scheduled\",\n\tinit: { cron?: string }\n) => Awaitable;\n\nexport type IncomingRequest = Request<\n\tunknown,\n\tIncomingRequestCfProperties\n>;\n\nexport interface MiddlewareContext {\n\tdispatch: Dispatcher;\n\tnext(request: IncomingRequest, env: any): Awaitable;\n}\n\nexport type Middleware = (\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tmiddlewareCtx: MiddlewareContext\n) => Awaitable;\n\nconst __facade_middleware__: Middleware[] = [];\n\n// The register functions allow for the insertion of one or many middleware,\n// We register internal middleware first in the stack, but have no way of controlling\n// the order that addMiddleware is run in service workers so need an internal function.\nexport function __facade_register__(...args: (Middleware | Middleware[])[]) {\n\t__facade_middleware__.push(...args.flat());\n}\nexport function __facade_registerInternal__(\n\t...args: (Middleware | Middleware[])[]\n) {\n\t__facade_middleware__.unshift(...args.flat());\n}\n\nfunction __facade_invokeChain__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tmiddlewareChain: Middleware[]\n): Awaitable {\n\tconst [head, ...tail] = middlewareChain;\n\tconst middlewareCtx: MiddlewareContext = {\n\t\tdispatch,\n\t\tnext(newRequest, newEnv) {\n\t\t\treturn __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail);\n\t\t},\n\t};\n\treturn head(request, env, ctx, middlewareCtx);\n}\n\nexport function __facade_invoke__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tfinalMiddleware: Middleware\n): Awaitable {\n\treturn __facade_invokeChain__(request, env, ctx, dispatch, [\n\t\t...__facade_middleware__,\n\t\tfinalMiddleware,\n\t]);\n}\n", "// This loads all middlewares exposed on the middleware object and then starts\n// the invocation chain. The big idea is that we can add these to the middleware\n// export dynamically through wrangler, or we can potentially let users directly\n// add them as a sort of \"plugin\" system.\n\nimport ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from \"/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"/Users/songjunxi/Desktop/repos/vmail/node_modules/.pnpm/wrangler@3.114.15/node_modules/wrangler/templates/middleware/common.ts\";\nimport type { WorkerEntrypointConstructor } from \"/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"/Users/songjunxi/Desktop/repos/vmail/.wrangler/tmp/bundle-nk20cv/middleware-insertion-facade.js\";\n\nclass __Facade_ScheduledController__ implements ScheduledController {\n\treadonly #noRetry: ScheduledController[\"noRetry\"];\n\n\tconstructor(\n\t\treadonly scheduledTime: number,\n\t\treadonly cron: string,\n\t\tnoRetry: ScheduledController[\"noRetry\"]\n\t) {\n\t\tthis.#noRetry = noRetry;\n\t}\n\n\tnoRetry() {\n\t\tif (!(this instanceof __Facade_ScheduledController__)) {\n\t\t\tthrow new TypeError(\"Illegal invocation\");\n\t\t}\n\t\t// Need to call native method immediately in case uncaught error thrown\n\t\tthis.#noRetry();\n\t}\n}\n\nfunction wrapExportedHandler(worker: ExportedHandler): ExportedHandler {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn worker;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\tconst fetchDispatcher: ExportedHandlerFetchHandler = function (\n\t\trequest,\n\t\tenv,\n\t\tctx\n\t) {\n\t\tif (worker.fetch === undefined) {\n\t\t\tthrow new Error(\"Handler does not export a fetch() function.\");\n\t\t}\n\t\treturn worker.fetch(request, env, ctx);\n\t};\n\n\treturn {\n\t\t...worker,\n\t\tfetch(request, env, ctx) {\n\t\t\tconst dispatcher: Dispatcher = function (type, init) {\n\t\t\t\tif (type === \"scheduled\" && worker.scheduled !== undefined) {\n\t\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\t\tDate.now(),\n\t\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t\treturn worker.scheduled(controller, env, ctx);\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher);\n\t\t},\n\t};\n}\n\nfunction wrapWorkerEntrypoint(\n\tklass: WorkerEntrypointConstructor\n): WorkerEntrypointConstructor {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn klass;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\t// `extend`ing `klass` here so other RPC methods remain callable\n\treturn class extends klass {\n\t\t#fetchDispatcher: ExportedHandlerFetchHandler> = (\n\t\t\trequest,\n\t\t\tenv,\n\t\t\tctx\n\t\t) => {\n\t\t\tthis.env = env;\n\t\t\tthis.ctx = ctx;\n\t\t\tif (super.fetch === undefined) {\n\t\t\t\tthrow new Error(\"Entrypoint class does not define a fetch() function.\");\n\t\t\t}\n\t\t\treturn super.fetch(request);\n\t\t};\n\n\t\t#dispatcher: Dispatcher = (type, init) => {\n\t\t\tif (type === \"scheduled\" && super.scheduled !== undefined) {\n\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\tDate.now(),\n\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t() => {}\n\t\t\t\t);\n\t\t\t\treturn super.scheduled(controller);\n\t\t\t}\n\t\t};\n\n\t\tfetch(request: Request) {\n\t\t\treturn __facade_invoke__(\n\t\t\t\trequest,\n\t\t\t\tthis.env,\n\t\t\t\tthis.ctx,\n\t\t\t\tthis.#dispatcher,\n\t\t\t\tthis.#fetchDispatcher\n\t\t\t);\n\t\t}\n\t};\n}\n\nlet WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined;\nif (typeof ENTRY === \"object\") {\n\tWRAPPED_ENTRY = wrapExportedHandler(ENTRY);\n} else if (typeof ENTRY === \"function\") {\n\tWRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY);\n}\nexport default WRAPPED_ENTRY;\n"], - "mappings": "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", - "names": ["stripCfConnectingIPHeader", "input", "init", "request", "__name", "target", "thisArg", "argArray", "createNotImplementedError", "name", "__name", "notImplemented", "notImplementedClass", "name", "__name", "_timeOrigin", "_performanceNow", "nodeTiming", "PerformanceEntry", "name", "options", "__name", "PerformanceMark", "PerformanceMeasure", "PerformanceResourceTiming", "PerformanceObserverEntryList", "_name", "_type", "type", "Performance", "_fn", "_options", "createNotImplementedError", "markName", "e", "measureName", "entry", "startOrMeasureOptions", "endMark", "start", "end", "maxSize", "listener", "event", "PerformanceObserver", "callback", "fn", "thisArg", "args", "__publicField", "performance", "performance", "Performance", "PerformanceEntry", "PerformanceMark", "PerformanceMeasure", "PerformanceObserver", "PerformanceObserverEntryList", "PerformanceResourceTiming", "Writable", "noop_default", "_console", "_ignoreErrors", "_stderr", "Writable", "_stdout", "log", "noop_default", "info", "trace", "debug", "table", "error", "warn", "createTask", "notImplemented", "clear", "_console", "noop_default", "count", "countReset", "dir", "dirxml", "group", "groupEnd", "groupCollapsed", "profile", "profileEnd", "time", "timeEnd", "timeLog", "timeStamp", "Console", "notImplementedClass", "_times", "_stdoutErrorHandler", "noop_default", "_stderrErrorHandler", "workerdConsole", "assert", "clear", "context", "count", "countReset", "createTask", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "profile", "profileEnd", "table", "time", "timeEnd", "timeLog", "timeStamp", "trace", "warn", "Console", "_ignoreErrors", "_stderr", "_stderrErrorHandler", "_stdout", "_stdoutErrorHandler", "_times", "console_default", "console_default", "hrtime", "__name", "startTime", "now", "seconds", "nanos", "diffSeconds", "diffNanos", "EventEmitter", "Socket", "ReadStream", "Socket", "fd", "mode", "__name", "Socket", "WriteStream", "Socket", "fd", "dir", "callback", "x", "y", "dx", "dy", "env", "count", "__name", "Process", "EventEmitter", "impl", "prop", "value", "warning", "type", "code", "args", "eventName", "#stdin", "#stdout", "#stderr", "ReadStream", "WriteStream", "#cwd", "cwd", "createNotImplementedError", "notImplemented", "__name", "globalProcess", "getBuiltinModule", "exit", "platform", "nextTick", "unenvProcess", "Process", "hrtime", "abort", "addListener", "allowedNodeEnvironmentFlags", "hasUncaughtExceptionCaptureCallback", "setUncaughtExceptionCaptureCallback", "loadEnvFile", "sourceMapsEnabled", "arch", "argv", "argv0", "chdir", "config", "connected", "constrainedMemory", "availableMemory", "cpuUsage", "cwd", "debugPort", "dlopen", "disconnect", "emit", "emitWarning", "env", "eventNames", "execArgv", "execPath", "finalization", "features", "getActiveResourcesInfo", "getMaxListeners", "kill", "listeners", "listenerCount", "memoryUsage", "on", "off", "once", "pid", "ppid", "prependListener", "prependOnceListener", "rawListeners", "release", "removeAllListeners", "removeListener", "report", "resourceUsage", "setMaxListeners", "setSourceMapsEnabled", "stderr", "stdin", "stdout", "title", "throwDeprecation", "traceDeprecation", "umask", "uptime", "version", "versions", "domain", "initgroups", "moduleLoadList", "reallyExit", "openStdin", "assert", "binding", "send", "exitCode", "channel", "getegid", "geteuid", "getgid", "getgroups", "getuid", "setegid", "seteuid", "setgid", "setgroups", "setuid", "permission", "mainModule", "_events", "_eventsCount", "_exiting", "_maxListeners", "_debugEnd", "_debugProcess", "_fatalException", "_getActiveHandles", "_getActiveRequests", "_kill", "_preload_modules", "_rawDebug", "_startProfilerIdleNotifier", "_stopProfilerIdleNotifier", "_tickCallback", "_disconnect", "_handleQueue", "_pendingMessage", "_channel", "_send", "_linkedBinding", "_process", "process_default", "process_default", "compose", "__name", "middleware", "onError", "onNotFound", "context", "next", "index", "dispatch", "i", "res", "isError", "handler", "err", "GET_MATCH_RESULT", "parseBody", "__name", "request", "options", "all", "dot", "contentType", "HonoRequest", "parseFormData", "formData", "convertFormDataToBodyData", "form", "value", "key", "handleParsingAllValues", "handleParsingNestedValues", "nestedForm", "keys", "key2", "index", "splitPath", "__name", "path", "paths", "splitRoutingPath", "routePath", "groups", "extractGroupsFromPath", "replaceGroupMarks", "match", "index", "mark", "i", "j", "patternCache", "getPattern", "label", "next", "cacheKey", "tryDecode", "str", "decoder", "tryDecodeURI", "getPath", "request", "url", "start", "charCode", "queryIndex", "getPathNoStrict", "__name", "request", "result", "getPath", "mergePath", "base", "sub", "rest", "checkOptionalParameter", "path", "segments", "results", "basePath", "segment", "optionalSegment", "v", "_decodeURI", "value", "tryDecode", "decodeURIComponent_", "_getQueryParam", "url", "key", "multiple", "encoded", "keyIndex2", "trailingKeyCode", "valueIndex", "endIndex", "keyIndex", "nextKeyIndex", "name", "getQueryParam", "getQueryParams", "tryDecodeURIComponent", "__name", "str", "tryDecode", "decodeURIComponent_", "HonoRequest", "#validatedData", "#matchResult", "request", "path", "matchResult", "key", "#getDecodedParam", "#getAllDecodedParams", "paramKey", "param", "#getParamValue", "decoded", "keys", "value", "getQueryParam", "getQueryParams", "name", "headerData", "options", "parseBody", "#cachedBody", "bodyCache", "raw", "cachedBody", "anyCachedKey", "body", "text", "target", "data", "GET_MATCH_RESULT", "route", "HtmlEscapedCallbackPhase", "raw", "__name", "value", "callbacks", "escapedString", "resolveCallback", "__name", "str", "phase", "preserveCallbacks", "context", "buffer", "callbacks", "resStr", "c", "res", "str2", "raw", "TEXT_PLAIN", "setDefaultContentType", "__name", "contentType", "headers", "Context", "#rawRequest", "#req", "#var", "#status", "#executionCtx", "#res", "#layout", "#renderer", "#notFoundHandler", "#preparedHeaders", "#matchResult", "#path", "req", "options", "HonoRequest", "_res", "k", "v", "cookies", "cookie", "args", "content", "layout", "renderer", "name", "value", "status", "key", "#newResponse", "data", "arg", "responseHeaders", "argHeaders", "v2", "text", "object", "html", "res", "html2", "resolveCallback", "HtmlEscapedCallbackPhase", "location", "locationString", "METHOD_NAME_ALL", "METHOD_NAME_ALL_LOWERCASE", "METHODS", "MESSAGE_MATCHER_IS_ALREADY_BUILT", "UnsupportedPathError", "__name", "COMPOSED_HANDLER", "notFoundHandler", "__name", "c", "errorHandler", "err", "res", "Hono", "#path", "options", "METHODS", "METHOD_NAME_ALL_LOWERCASE", "method", "args1", "args", "#addRoute", "handler", "path", "handlers", "p", "m", "arg1", "METHOD_NAME_ALL", "strict", "optionsWithoutStrict", "getPath", "getPathNoStrict", "#clone", "clone", "#notFoundHandler", "app", "subApp", "r", "next", "compose", "COMPOSED_HANDLER", "mergePath", "applicationHandler", "replaceRequest", "optionHandler", "request", "getOptions", "options2", "executionContext", "mergedPath", "pathPrefixLength", "url", "#handleError", "#dispatch", "executionCtx", "env", "matchResult", "Context", "resolved", "composed", "context", "rest", "input", "requestInit", "Env", "event", "emptyParam", "match", "method", "path", "matchers", "match2", "__name", "method2", "path2", "matcher", "METHOD_NAME_ALL", "staticMatch", "match3", "index", "LABEL_REG_EXP_STR", "ONLY_WILDCARD_REG_EXP_STR", "TAIL_WILDCARD_REG_EXP_STR", "PATH_ERROR", "regExpMetaChars", "compareKey", "a", "b", "__name", "Node", "#index", "#varIndex", "#children", "tokens", "index", "paramMap", "context", "pathErrorCheckOnly", "token", "restTokens", "pattern", "node", "name", "regexpStr", "k", "strList", "c", "Trie", "__name", "#context", "#root", "Node", "path", "index", "pathErrorCheckOnly", "paramAssoc", "groups", "i", "replaced", "m", "mark", "tokens", "j", "regexp", "captureIndex", "indexReplacementMap", "paramReplacementMap", "_", "handlerIndex", "paramIndex", "nullMatcher", "wildcardRegExpCache", "buildWildcardRegExp", "path", "_", "metaChar", "__name", "clearWildcardRegExpCache", "buildMatcherFromPreprocessedRoutes", "routes", "trie", "Trie", "handlerData", "routesWithStaticPathFlag", "route", "isStaticA", "pathA", "isStaticB", "pathB", "staticMap", "i", "j", "len", "pathErrorCheckOnly", "handlers", "h", "emptyParam", "paramAssoc", "e", "PATH_ERROR", "UnsupportedPathError", "paramCount", "paramIndexMap", "key", "value", "regexp", "indexReplacementMap", "paramReplacementMap", "len2", "map", "keys", "k", "len3", "handlerMap", "findMiddleware", "middleware", "a", "b", "RegExpRouter", "#middleware", "#routes", "METHOD_NAME_ALL", "method", "handler", "MESSAGE_MATCHER_IS_ALREADY_BUILT", "p", "re", "m", "paths", "checkOptionalParameter", "path2", "match", "matchers", "#buildMatcher", "hasOwnRoute", "r", "ownRoute", "SmartRouter", "__name", "#routers", "#routes", "init", "method", "path", "handler", "MESSAGE_MATCHER_IS_ALREADY_BUILT", "routers", "routes", "len", "res", "router", "i2", "len2", "e", "UnsupportedPathError", "emptyParams", "Node", "__name", "#methods", "#children", "#patterns", "#order", "#params", "method", "handler", "children", "m", "path", "curNode", "parts", "splitRoutingPath", "possibleKeys", "i", "len", "p", "nextP", "pattern", "getPattern", "key", "v", "a", "#getHandlerSets", "node", "nodeParams", "params", "handlerSets", "handlerSet", "METHOD_NAME_ALL", "processedSet", "i2", "len2", "processed", "curNodes", "splitPath", "curNodesQueue", "part", "isLast", "tempNodes", "j", "nextNode", "k", "len3", "astNode", "name", "matcher", "child", "restPathString", "componentCount", "b", "TrieRouter", "__name", "#node", "Node", "method", "path", "handler", "results", "checkOptionalParameter", "i", "len", "Hono", "__name", "options", "SmartRouter", "RegExpRouter", "TrieRouter", "COMPRESSIBLE_CONTENT_TYPE_REGEX", "getMimeType", "__name", "filename", "mimes", "baseMimes", "regexp", "match", "mimeType", "_baseMimes", "baseMimes", "defaultJoin", "__name", "paths", "result", "p", "segments", "resolved", "segment", "ENCODINGS", "ENCODINGS_ORDERED_KEYS", "DEFAULT_DOCUMENT", "serveStatic", "__name", "options", "root", "optionPath", "join", "defaultJoin", "c", "next", "filename", "path", "getContent", "content", "mimeType", "getMimeType", "COMPRESSIBLE_CONTENT_TYPE_REGEX", "acceptEncodingSet", "encoding", "compressedContent", "getContentFromKVAsset", "__name", "path", "options", "ASSET_MANIFEST", "ASSET_NAMESPACE", "key", "content", "serveStatic", "__name", "options", "c", "next", "path", "getContentFromKVAsset", "module", "__name", "options", "serveStatic", "WSContext", "__name", "#init", "init", "source", "options", "code", "reason", "defineWebSocketHelper", "__name", "handler", "args", "createEvents", "options", "c", "next", "events", "result", "upgraded", "upgradeWebSocket", "defineWebSocketHelper", "c", "events", "webSocketPair", "client", "server", "wsContext", "WSContext", "code", "reason", "source", "evt", "cors", "__name", "options", "opts", "findAllowOrigin", "optsOrigin", "origin", "findAllowMethods", "optsAllowMethods", "c", "next", "set", "key", "value", "allowOrigin", "existingVary", "allowMethods", "headers", "requestHeaders", "entityKind", "hasOwnEntityKind", "is", "value", "type", "cls", "__name", "_a", "Column", "table", "config", "value", "__name", "entityKind", "__publicField", "SubqueryConfig", "_a", "Subquery", "entityKind", "sql", "selection", "alias", "isWith", "__name", "__publicField", "WithSubquery", "iife", "fn", "args", "__name", "version", "otel", "rawTracer", "tracer", "name", "fn", "version", "iife", "span", "e", "ViewBaseConfig", "TableName", "Schema", "Columns", "OriginalName", "BaseName", "IsAlias", "ExtraConfigBuilder", "IsDrizzleTable", "_a", "Table", "entityKind", "name", "schema", "baseName", "__name", "__publicField", "isTable", "table", "getTableName", "_a", "FakePrimitiveParam", "__name", "entityKind", "__publicField", "isSQLWrapper", "value", "mergeQueries", "queries", "result", "query", "StringChunk", "SQL", "_SQL", "queryChunks", "noopDecoder", "config", "tracer", "span", "chunks", "_config", "escapeName", "escapeParam", "prepareTyping", "inlineParams", "paramStartIndex", "chunk", "is", "Name", "i", "p", "Table", "schemaName", "tableName", "Column", "View", "ViewBaseConfig", "viewName", "Param", "mappedValue", "typings", "Placeholder", "Subquery", "SubqueryConfig", "escapeString", "mappedValueAsString", "alias", "decoder", "isDriverValueEncoder", "value", "__name", "noopDecoder", "noopEncoder", "noopMapper", "_a", "Param", "encoder", "SQL", "entityKind", "__publicField", "sql", "strings", "params", "queryChunks", "StringChunk", "paramIndex", "param", "SQL", "__name", "empty", "fromList", "list", "raw", "str", "join", "chunks", "separator", "result", "i", "chunk", "identifier", "value", "Name", "placeholder", "name", "Placeholder", "encoder", "Param", "Aliased", "fieldAlias", "entityKind", "_a", "__publicField", "fillPlaceholders", "params", "values", "p", "is", "Placeholder", "__name", "_a", "View", "entityKind", "ViewBaseConfig", "name", "schema", "selectedFields", "query", "SQL", "__publicField", "Column", "Table", "Subquery", "_a", "ColumnAliasProxyHandler", "table", "columnObj", "prop", "__name", "entityKind", "__publicField", "TableAliasProxyHandler", "alias", "replaceOriginalName", "target", "Table", "ViewBaseConfig", "columns", "proxiedColumns", "key", "value", "is", "Column", "RelationTableAliasProxyHandler", "aliasedTable", "tableAlias", "aliasedTableColumn", "column", "tableAlias", "ColumnAliasProxyHandler", "TableAliasProxyHandler", "__name", "mapColumnsInAliasedSQLToAlias", "query", "alias", "SQL", "mapColumnsInSQLToAlias", "sql", "c", "is", "Column", "_a", "ColumnBuilder", "name", "dataType", "columnType", "value", "fn", "__name", "entityKind", "__publicField", "_a", "DrizzleError", "message", "cause", "__name", "entityKind", "__publicField", "TransactionRollbackError", "bindIfParam", "value", "column", "isDriverValueEncoder", "isSQLWrapper", "is", "Param", "Placeholder", "Column", "Table", "View", "__name", "eq", "left", "right", "sql", "ne", "and", "unfilteredConditions", "conditions", "c", "SQL", "StringChunk", "or", "not", "condition", "gt", "gte", "lt", "lte", "inArray", "values", "v", "notInArray", "isNull", "isNotNull", "exists", "subquery", "notExists", "between", "min", "max", "notBetween", "like", "notLike", "ilike", "notIlike", "asc", "column", "sql", "__name", "desc", "_a", "ConsoleLogWriter", "message", "__name", "entityKind", "__publicField", "DefaultLogger", "config", "query", "params", "stringifiedParams", "p", "paramsStr", "NoopLogger", "_a", "QueryPromise", "entityKind", "onRejected", "onFinally", "value", "reason", "onFulfilled", "__name", "__publicField", "InlineForeignKeys", "_a", "PgTable", "Table", "entityKind", "__name", "__publicField", "_a", "PrimaryKeyBuilder", "columns", "name", "table", "PrimaryKey", "__name", "entityKind", "__publicField", "PgTable", "column", "_a", "Relation", "sourceTable", "referencedTable", "relationName", "Table", "__name", "entityKind", "__publicField", "Relations", "table", "config", "_One", "isNullable", "fieldName", "relation", "One", "_Many", "Many", "getOperators", "and", "between", "eq", "exists", "gt", "gte", "ilike", "inArray", "isNull", "isNotNull", "like", "lt", "lte", "ne", "not", "notBetween", "notExists", "notLike", "notIlike", "notInArray", "or", "sql", "getOrderByOperators", "asc", "desc", "extractTablesRelationalConfig", "schema", "configHelpers", "is", "tableNamesMap", "relationsBuffer", "tablesConfig", "key", "value", "isTable", "dbName", "bufferedRelations", "column", "extraConfig", "configEntry", "PrimaryKeyBuilder", "tableName", "relations", "primaryKey", "tableConfig", "createOne", "sourceTable", "__name", "table", "config", "One", "res", "f", "createMany", "referencedTable", "Many", "normalizeRelation", "schema", "tableNamesMap", "relation", "is", "referencedTableTsName", "Table", "referencedTableConfig", "sourceTableTsName", "reverseRelations", "referencedTableRelation", "createTableRelationsHelpers", "mapRelationalRow", "tablesConfig", "tableConfig", "row", "buildQueryResultSelection", "mapColumnValue", "value", "result", "selectionItemIndex", "selectionItem", "rawSubRows", "subRows", "subRow", "field", "decoder", "Column", "SQL", "count", "expression", "sql", "__name", "mapResultRow", "columns", "row", "joinsNotNullableMap", "nullifyMap", "result", "path", "field", "columnIndex", "decoder", "is", "Column", "SQL", "node", "pathChunkIndex", "pathChunk", "rawValue", "value", "objectName", "getTableName", "tableName", "__name", "orderSelectedFields", "fields", "pathPrefix", "name", "newPath", "Table", "haveSameKeys", "left", "right", "leftKeys", "rightKeys", "index", "key", "mapUpdateSet", "table", "values", "entries", "Param", "applyMixins", "baseClass", "extendedClasses", "extendedClass", "getTableColumns", "getTableLikeName", "Subquery", "SubqueryConfig", "View", "ViewBaseConfig", "InlineForeignKeys", "_a", "SQLiteTable", "Table", "entityKind", "__name", "__publicField", "sqliteTableBase", "name", "columns", "extraConfig", "schema", "baseName", "rawTable", "builtColumns", "colBuilderBase", "colBuilder", "column", "table", "sqliteTable", "_a", "ForeignKeyBuilder", "config", "actions", "name", "columns", "foreignColumns", "action", "table", "ForeignKey", "__name", "entityKind", "__publicField", "builder", "columnNames", "column", "foreignColumnNames", "chunks", "SQLiteTable", "uniqueKeyName", "table", "columns", "SQLiteTable", "__name", "_a", "UniqueConstraintBuilder", "columns", "name", "table", "UniqueConstraint", "__name", "entityKind", "__publicField", "UniqueOnConstraintBuilder", "uniqueKeyName", "column", "_a", "SQLiteColumnBuilder", "ColumnBuilder", "ref", "actions", "name", "column", "table", "builder", "ForeignKeyBuilder", "foreignColumn", "__name", "entityKind", "__publicField", "SQLiteColumn", "Column", "config", "uniqueKeyName", "_a", "SQLiteBaseIntegerBuilder", "SQLiteColumnBuilder", "name", "dataType", "columnType", "config", "__name", "entityKind", "__publicField", "SQLiteBaseInteger", "SQLiteColumn", "SQLiteIntegerBuilder", "table", "SQLiteInteger", "SQLiteTimestampBuilder", "mode", "sql", "SQLiteTimestamp", "value", "unix", "SQLiteBooleanBuilder", "SQLiteBoolean", "integer", "_a", "SQLiteTextBuilder", "SQLiteColumnBuilder", "name", "config", "table", "SQLiteText", "__name", "entityKind", "__publicField", "SQLiteColumn", "SQLiteTextJsonBuilder", "SQLiteTextJson", "value", "text", "_a", "_SelectionProxyHandler", "config", "subquery", "prop", "SubqueryConfig", "ViewBaseConfig", "value", "is", "Subquery", "View", "SQL", "newValue", "Column", "ColumnAliasProxyHandler", "TableAliasProxyHandler", "SelectionProxyHandler", "__name", "entityKind", "__publicField", "_a", "SQLiteDeleteBase", "QueryPromise", "table", "session", "dialect", "withList", "where", "fields", "SQLiteTable", "orderSelectedFields", "_typings", "rest", "isOneTimeQuery", "placeholderValues", "__name", "entityKind", "__publicField", "_a", "SQLiteInsertBuilder", "table", "session", "dialect", "withList", "values", "mappedValues", "entry", "result", "cols", "Table", "colKey", "colValue", "is", "SQL", "Param", "SQLiteInsertBase", "__name", "entityKind", "__publicField", "QueryPromise", "fields", "SQLiteTable", "orderSelectedFields", "config", "sql", "targetSql", "whereSql", "setSql", "mapUpdateSet", "_typings", "rest", "isOneTimeQuery", "placeholderValues", "_a", "SQLiteViewBase", "View", "__name", "entityKind", "__publicField", "_a", "SQLiteDialect", "name", "_num", "str", "queries", "withSqlChunks", "sql", "i", "w", "SubqueryConfig", "table", "where", "returning", "withList", "withSql", "returningSql", "whereSql", "set", "setEntries", "setSize", "colName", "value", "col", "Table", "res", "setSql", "fields", "isSingleTable", "columnsLen", "chunks", "field", "chunk", "is", "SQL", "query", "Column", "tableName", "columnName", "fieldsFlat", "having", "joins", "orderBy", "groupBy", "limit", "offset", "distinct", "setOperators", "fieldsList", "orderSelectedFields", "f", "getTableName", "Subquery", "SQLiteViewBase", "ViewBaseConfig", "alias", "distinctSql", "selection", "tableSql", "joinsArray", "index", "joinMeta", "SQLiteTable", "tableSchema", "origTableName", "joinsSql", "havingSql", "orderByList", "orderByValue", "groupByList", "groupByValue", "groupBySql", "orderBySql", "limitSql", "offsetSql", "finalQuery", "leftSelect", "setOperator", "rest", "type", "isAll", "rightSelect", "leftChunk", "rightChunk", "orderByValues", "singleOrderBy", "SQLiteColumn", "operatorChunk", "values", "onConflict", "valuesSqlList", "columns", "colEntries", "insertOrder", "column", "valueIndex", "valueList", "fieldName", "colValue", "Param", "defaultValue", "defaultFnResult", "valuesSql", "onConflictSql", "fullSchema", "schema", "tableNamesMap", "tableConfig", "config", "tableAlias", "nestedQueryRelation", "joinOn", "key", "aliasedTableColumn", "aliasedColumns", "getOperators", "mapColumnsInSQLToAlias", "fieldsSelection", "selectedColumns", "isIncludeMode", "c", "selectedRelations", "entry", "tsKey", "queryConfig", "extras", "mapColumnsInAliasedSQLToAlias", "orderByOrig", "getOrderByOperators", "selectedRelationTsKey", "selectedRelationConfigValue", "relation", "normalizedRelation", "normalizeRelation", "relationTableName", "relationTableTsName", "relationTableAlias", "and", "eq", "builtRelation", "One", "DrizzleError", "result", "Many", "nestedSelection", "aliasedTable", "__name", "entityKind", "__publicField", "SQLiteSyncDialect", "migrations", "session", "migrationsTable", "migrationTableCreate", "lastDbMigration", "migration", "stmt", "e", "SQLiteAsyncDialect", "tx", "_a", "TypedQueryBuilder", "__name", "entityKind", "__publicField", "_a", "SQLiteSelectBuilder", "config", "source", "isPartialSelect", "fields", "is", "Subquery", "SubqueryConfig", "key", "SQLiteViewBase", "ViewBaseConfig", "SQL", "getTableColumns", "SQLiteSelectBase", "__name", "entityKind", "__publicField", "SQLiteSelectQueryBuilderBase", "TypedQueryBuilder", "table", "session", "dialect", "withList", "distinct", "getTableLikeName", "joinType", "on", "baseTableName", "tableName", "join", "selection", "View", "Table", "SelectionProxyHandler", "type", "isAll", "rightSelection", "rightSelect", "getSQLiteSetOperators", "haveSameKeys", "setOperators", "where", "having", "columns", "groupBy", "orderBy", "orderByArray", "limit", "offset", "_typings", "rest", "alias", "isOneTimeQuery", "fieldsList", "orderSelectedFields", "query", "placeholderValues", "applyMixins", "QueryPromise", "createSetOperator", "leftSelect", "restSelects", "select", "setOperator", "union", "unionAll", "intersect", "except", "_a", "QueryBuilder", "alias", "queryBuilder", "qb", "WithSubquery", "SelectionProxyHandler", "queries", "self", "select", "fields", "SQLiteSelectBuilder", "__name", "selectDistinct", "SQLiteSyncDialect", "entityKind", "__publicField", "_a", "SQLiteUpdateBuilder", "table", "session", "dialect", "withList", "values", "SQLiteUpdateBase", "mapUpdateSet", "__name", "entityKind", "__publicField", "QueryPromise", "set", "where", "fields", "SQLiteTable", "orderSelectedFields", "_typings", "rest", "isOneTimeQuery", "placeholderValues", "_a", "RelationalQueryBuilder", "mode", "fullSchema", "schema", "tableNamesMap", "table", "tableConfig", "dialect", "session", "config", "SQLiteSyncRelationalQuery", "SQLiteRelationalQuery", "__name", "entityKind", "__publicField", "QueryPromise", "isOneTimeQuery", "query", "builtQuery", "rawRows", "mapColumnValue", "rows", "row", "mapRelationalRow", "_a", "SQLiteRaw", "QueryPromise", "execute", "getSQL", "action", "dialect", "mapBatchResult", "result", "isFromBatch", "__name", "entityKind", "__publicField", "_a", "BaseSQLiteDatabase", "resultKind", "dialect", "session", "schema", "query", "tableName", "columns", "RelationalQueryBuilder", "alias", "qb", "QueryBuilder", "WithSubquery", "SelectionProxyHandler", "queries", "self", "select", "fields", "SQLiteSelectBuilder", "__name", "selectDistinct", "update", "table", "SQLiteUpdateBuilder", "insert", "into", "SQLiteInsertBuilder", "delete_", "from", "SQLiteDeleteBase", "sql", "SQLiteRaw", "transaction", "config", "entityKind", "__publicField", "_a", "ExecuteResultSync", "QueryPromise", "resultCb", "__name", "entityKind", "__publicField", "SQLitePreparedQuery", "mode", "executeMethod", "query", "result", "_isFromBatch", "_result", "placeholderValues", "response", "isFromBatch", "SQLiteSession", "dialect", "fields", "staticQuery", "err", "DrizzleError", "SQLiteTransaction", "BaseSQLiteDatabase", "resultType", "session", "schema", "nestedIndex", "TransactionRollbackError", "InlineForeignKeys", "_a", "MySqlTable", "Table", "entityKind", "__name", "__publicField", "_a", "ForeignKeyBuilder", "config", "actions", "name", "columns", "foreignColumns", "action", "table", "ForeignKey", "__name", "entityKind", "__publicField", "builder", "columnNames", "column", "foreignColumnNames", "chunks", "MySqlTable", "uniqueKeyName", "table", "columns", "MySqlTable", "__name", "_a", "UniqueConstraintBuilder", "name", "UniqueConstraint", "entityKind", "__publicField", "UniqueOnConstraintBuilder", "column", "_a", "MySqlColumnBuilder", "ColumnBuilder", "ref", "actions", "name", "column", "table", "builder", "ForeignKeyBuilder", "foreignColumn", "__name", "entityKind", "__publicField", "MySqlColumn", "Column", "config", "uniqueKeyName", "MySqlColumnBuilderWithAutoIncrement", "dataType", "columnType", "MySqlColumnWithAutoIncrement", "_a", "MySqlCharBuilder", "MySqlColumnBuilder", "name", "config", "table", "MySqlChar", "__name", "entityKind", "__publicField", "MySqlColumn", "_a", "MySqlVarBinaryBuilder", "MySqlColumnBuilder", "name", "config", "table", "MySqlVarBinary", "__name", "entityKind", "__publicField", "MySqlColumn", "_a", "MySqlVarCharBuilder", "MySqlColumnBuilder", "name", "config", "table", "MySqlVarChar", "__name", "entityKind", "__publicField", "MySqlColumn", "_a", "ForeignKeyBuilder", "config", "actions", "name", "columns", "foreignColumns", "action", "table", "ForeignKey", "__name", "entityKind", "__publicField", "builder", "columnNames", "column", "foreignColumnNames", "chunks", "PgTable", "uniqueKeyName", "table", "columns", "PgTable", "__name", "_a", "UniqueConstraintBuilder", "name", "UniqueConstraint", "entityKind", "__publicField", "UniqueOnConstraintBuilder", "nullsNotDistinct", "column", "parsePgArrayValue", "arrayString", "startFrom", "inQuotes", "i", "char", "__name", "parsePgNestedArray", "result", "lastCharIsComma", "value", "newStartFrom", "parsePgArray", "makePgArray", "array", "item", "_a", "PgColumnBuilder", "ColumnBuilder", "size", "PgArrayBuilder", "ref", "actions", "name", "config", "column", "table", "iife", "builder", "ForeignKeyBuilder", "foreignColumn", "__name", "entityKind", "__publicField", "PgColumn", "Column", "uniqueKeyName", "baseBuilder", "baseColumn", "PgArray", "_PgArray", "range", "value", "parsePgArray", "v", "isNestedArray", "a", "is", "makePgArray", "_a", "PgCharBuilder", "PgColumnBuilder", "name", "config", "table", "PgChar", "__name", "entityKind", "__publicField", "PgColumn", "_a", "PgUUIDBuilder", "PgColumnBuilder", "name", "sql", "table", "PgUUID", "__name", "entityKind", "__publicField", "PgColumn", "_a", "PgVarcharBuilder", "PgColumnBuilder", "name", "config", "table", "PgVarchar", "__name", "entityKind", "__publicField", "PgColumn", "external_exports", "__export", "BRAND", "DIRTY", "EMPTY_PATH", "INVALID", "NEVER", "OK", "ParseStatus", "ZodType", "ZodAny", "ZodArray", "ZodBigInt", "ZodBoolean", "ZodBranded", "ZodCatch", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodEffects", "ZodEnum", "ZodError", "ZodFirstPartyTypeKind", "ZodFunction", "ZodIntersection", "ZodIssueCode", "ZodLazy", "ZodLiteral", "ZodMap", "ZodNaN", "ZodNativeEnum", "ZodNever", "ZodNull", "ZodNullable", "ZodNumber", "ZodObject", "ZodOptional", "ZodParsedType", "ZodPipeline", "ZodPromise", "ZodReadonly", "ZodRecord", "ZodSet", "ZodString", "ZodSymbol", "ZodTuple", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "addIssueToContext", "anyType", "arrayType", "bigIntType", "booleanType", "coerce", "custom", "dateType", "datetimeRegex", "en_default", "discriminatedUnionType", "effectsType", "enumType", "functionType", "getErrorMap", "getParsedType", "instanceOfType", "intersectionType", "isAborted", "isAsync", "isDirty", "isValid", "late", "lazyType", "literalType", "makeIssue", "mapType", "nanType", "nativeEnumType", "neverType", "nullType", "nullableType", "numberType", "objectType", "objectUtil", "oboolean", "onumber", "optionalType", "ostring", "pipelineType", "preprocessType", "promiseType", "quotelessJson", "recordType", "setType", "setErrorMap", "strictObjectType", "stringType", "symbolType", "tupleType", "undefinedType", "unionType", "unknownType", "util", "voidType", "util", "_", "assertIs", "_arg", "__name", "assertNever", "_x", "items", "obj", "item", "validKeys", "k", "filtered", "e", "object", "keys", "key", "arr", "checker", "val", "joinValues", "array", "separator", "value", "objectUtil", "first", "second", "ZodParsedType", "getParsedType", "data", "ZodIssueCode", "util", "quotelessJson", "__name", "obj", "ZodError", "issues", "sub", "subs", "actualProto", "_mapper", "mapper", "issue", "fieldErrors", "processError", "error", "curr", "i", "el", "value", "formErrors", "firstEl", "errorMap", "__name", "issue", "_ctx", "message", "ZodIssueCode", "ZodParsedType", "util", "en_default", "overrideErrorMap", "en_default", "setErrorMap", "map", "overrideErrorMap", "__name", "getErrorMap", "makeIssue", "__name", "params", "data", "path", "errorMaps", "issueData", "fullPath", "fullIssue", "errorMessage", "maps", "m", "map", "EMPTY_PATH", "addIssueToContext", "ctx", "overrideMap", "getErrorMap", "issue", "en_default", "x", "ParseStatus", "status", "results", "arrayValue", "s", "INVALID", "pairs", "syncPairs", "pair", "key", "value", "finalObject", "DIRTY", "OK", "isAborted", "isDirty", "isValid", "isAsync", "errorUtil", "message", "ParseInputLazyPath", "parent", "value", "path", "key", "__name", "handleResult", "ctx", "result", "isValid", "error", "ZodError", "processCreateParams", "params", "errorMap", "invalid_type_error", "required_error", "description", "iss", "message", "ZodType", "input", "getParsedType", "ParseStatus", "isAsync", "data", "err", "maybeAsyncResult", "check", "getIssueProperties", "val", "setError", "ZodIssueCode", "refinementData", "refinement", "ZodEffects", "ZodFirstPartyTypeKind", "def", "ZodOptional", "ZodNullable", "ZodArray", "ZodPromise", "option", "ZodUnion", "incoming", "ZodIntersection", "transform", "defaultValueFunc", "ZodDefault", "ZodBranded", "catchValueFunc", "ZodCatch", "This", "target", "ZodPipeline", "ZodReadonly", "cuidRegex", "cuid2Regex", "ulidRegex", "uuidRegex", "nanoidRegex", "jwtRegex", "durationRegex", "emailRegex", "_emojiRegex", "emojiRegex", "ipv4Regex", "ipv4CidrRegex", "ipv6Regex", "ipv6CidrRegex", "base64Regex", "base64urlRegex", "dateRegexSource", "dateRegex", "timeRegexSource", "args", "secondsRegexSource", "secondsQuantifier", "timeRegex", "datetimeRegex", "regex", "opts", "isValidIP", "ip", "version", "isValidJWT", "jwt", "alg", "header", "base64", "decoded", "isValidCidr", "ZodString", "ZodParsedType", "addIssueToContext", "INVALID", "status", "tooBig", "tooSmall", "util", "validation", "errorUtil", "options", "minLength", "maxLength", "len", "ch", "min", "max", "floatSafeRemainder", "step", "valDecCount", "stepDecCount", "decCount", "valInt", "stepInt", "ZodNumber", "kind", "inclusive", "ZodBigInt", "ZodBoolean", "OK", "ZodDate", "minDate", "maxDate", "ZodSymbol", "ZodUndefined", "ZodNull", "ZodAny", "ZodUnknown", "ZodNever", "ZodVoid", "item", "i", "schema", "deepPartialify", "ZodObject", "newShape", "fieldSchema", "ZodTuple", "shape", "keys", "shapeKeys", "extraKeys", "pairs", "keyValidator", "unknownKeys", "catchall", "syncPairs", "pair", "issue", "defaultError", "augmentation", "merging", "index", "mask", "newField", "createZodEnum", "handleResults", "results", "unionErrors", "childCtx", "dirty", "issues", "types", "getDiscriminator", "type", "ZodLazy", "ZodLiteral", "ZodEnum", "ZodNativeEnum", "ZodDiscriminatedUnion", "discriminator", "discriminatorValue", "optionsMap", "discriminatorValues", "mergeValues", "a", "b", "aType", "bType", "bKeys", "sharedKeys", "newObj", "sharedValue", "newArray", "itemA", "itemB", "handleParsed", "parsedLeft", "parsedRight", "isAborted", "merged", "isDirty", "left", "right", "items", "itemIndex", "x", "rest", "schemas", "ZodRecord", "keyType", "valueType", "first", "second", "third", "ZodMap", "finalMap", "ZodSet", "finalizeSet", "elements", "parsedSet", "element", "minSize", "maxSize", "size", "ZodFunction", "makeArgsIssue", "makeIssue", "getErrorMap", "en_default", "makeReturnsIssue", "returns", "fn", "me", "parsedArgs", "e", "parsedReturns", "returnType", "func", "getter", "values", "expectedValues", "enumValues", "newDef", "opt", "nativeEnumValues", "promisified", "effect", "checkCtx", "arg", "processed", "DIRTY", "executeRefinement", "acc", "inner", "base", "preprocess", "ZodOptional", "ZodType", "input", "ZodParsedType", "OK", "__name", "type", "params", "ZodFirstPartyTypeKind", "processCreateParams", "ZodNullable", "ZodDefault", "ctx", "data", "ZodCatch", "newCtx", "result", "isAsync", "ZodError", "ZodNaN", "addIssueToContext", "ZodIssueCode", "INVALID", "BRAND", "ZodBranded", "ZodPipeline", "status", "inResult", "DIRTY", "a", "b", "ZodReadonly", "freeze", "isValid", "cleanParams", "p", "custom", "check", "_params", "fatal", "ZodAny", "r", "_fatal", "late", "ZodObject", "ZodFirstPartyTypeKind", "instanceOfType", "__name", "cls", "params", "custom", "data", "stringType", "ZodString", "numberType", "ZodNumber", "nanType", "ZodNaN", "bigIntType", "ZodBigInt", "booleanType", "ZodBoolean", "dateType", "ZodDate", "symbolType", "ZodSymbol", "undefinedType", "ZodUndefined", "nullType", "ZodNull", "anyType", "ZodAny", "unknownType", "ZodUnknown", "neverType", "ZodNever", "voidType", "ZodVoid", "arrayType", "ZodArray", "objectType", "ZodObject", "strictObjectType", "unionType", "ZodUnion", "discriminatedUnionType", "ZodDiscriminatedUnion", "intersectionType", "ZodIntersection", "tupleType", "ZodTuple", "recordType", "ZodRecord", "mapType", "ZodMap", "setType", "ZodSet", "functionType", "ZodFunction", "lazyType", "ZodLazy", "literalType", "ZodLiteral", "enumType", "ZodEnum", "nativeEnumType", "ZodNativeEnum", "promiseType", "ZodPromise", "effectsType", "ZodEffects", "optionalType", "ZodOptional", "nullableType", "ZodNullable", "preprocessType", "pipelineType", "ZodPipeline", "ostring", "onumber", "oboolean", "coerce", "arg", "NEVER", "INVALID", "literalSchema", "z", "union", "string", "number", "boolean", "null", "jsonSchema", "lazy", "array", "record", "createInsertSchema", "table", "refine", "columns", "getTableColumns", "columnEntries", "Object", "entries", "schemaEntries", "fromEntries", "map", "name", "column", "mapColumnToSchema", "assign", "refineColumn", "notNull", "hasDefault", "optional", "nullable", "object", "mapColumnToSchema", "column", "type", "Array", "isArray", "enumValues", "length", "z", "enum", "string", "is", "PgUUID", "uuid", "dataType", "any", "jsonSchema", "array", "baseColumn", "number", "bigint", "boolean", "date", "sType", "PgChar", "PgVarchar", "MySqlVarChar", "MySqlVarBinary", "MySqlChar", "SQLiteText", "max", "apiKeys", "sqliteTable", "text", "integer", "insertApiKeySchema", "c", "mailboxes", "insertMailboxSchema", "emails", "AddressSchema", "objectType", "stringType", "insertEmailSchema", "arrayType", "recordType", "siteStats", "insertEmail", "db", "email", "emails", "e", "__name", "findEmailById", "db", "id", "result", "emails", "and", "eq", "__name", "getEmailsByMessageTo", "messageTo", "desc", "deleteEmails", "db", "ids", "emails", "inArray", "e", "__name", "deleteExpiredEmails", "expirationTime", "lt", "findApiKeyByKey", "key", "result", "apiKeys", "eq", "updateApiKeyLastUsed", "id", "insertApiKey", "apiKey", "insertMailbox", "mailbox", "mailboxes", "findMailboxById", "getMailboxMessages", "db", "address", "options", "offset", "orderFn", "asc", "desc", "messages", "countResult", "emails", "eq", "count", "total", "e", "__name", "findMailboxMessage", "messageId", "result", "and", "deleteMailboxMessage", "getMailboxMessageCount", "GLOBAL_STATS_ID", "getSiteStats", "db", "result", "siteStats", "eq", "__name", "initSiteStats", "incrementEmailsReceived", "amount", "sql", "e", "incrementAddressesCreated", "incrementApiKeysCreated", "incrementApiCalls", "_a", "SQLiteD1Session", "SQLiteSession", "client", "dialect", "schema", "options", "NoopLogger", "query", "fields", "executeMethod", "customResultMapper", "stmt", "D1PreparedQuery", "queries", "preparedQueries", "builtQueries", "preparedQuery", "builtQuery", "result", "i", "d1ToRawMapping", "transaction", "config", "tx", "D1Transaction", "sql", "err", "__name", "entityKind", "__publicField", "_D1Transaction", "SQLiteTransaction", "savepointName", "results", "rows", "row", "entry", "k", "SQLitePreparedQuery", "logger", "placeholderValues", "params", "fillPlaceholders", "isFromBatch", "mapResultRow", "joinsNotNullableMap", "_a", "DrizzleD1Database", "BaseSQLiteDatabase", "batch", "__name", "entityKind", "__publicField", "drizzle", "client", "config", "dialect", "SQLiteAsyncDialect", "logger", "DefaultLogger", "schema", "tablesConfig", "extractTablesRelationalConfig", "createTableRelationsHelpers", "session", "SQLiteD1Session", "getD1DB", "db", "drizzle", "__name", "urlAlphabet", "nanoid", "__name", "size", "id", "i", "urlAlphabet", "textEncoder", "base64Chars", "base64Lookup", "i", "decodeBase64", "base64", "bufferLength", "len", "p", "arrayBuffer", "bytes", "encoded1", "encoded2", "encoded3", "encoded4", "__name", "getDecoder", "charset", "decoder", "blobToArrayBuffer", "blob", "fr", "resolve", "reject", "e", "getHex", "c", "decodeWord", "encoding", "str", "splitPos", "byteStr", "buf", "encodedBytes", "c1", "c2", "dataView", "decodeWords", "joinString", "done", "result", "match", "left", "chLeft", "encodedLeftStr", "chRight", "m", "text", "decodeURIComponentWithCharset", "encodedStr", "byte", "j", "decodeParameterValueContinuations", "header", "paramKeys", "key", "actualKey", "nr", "paramVal", "value", "a", "b", "PassThroughDecoder", "line", "blobToArrayBuffer", "__name", "Base64Decoder", "opts", "buffer", "str", "allowedBytes", "base64Str", "decodeBase64", "blobToArrayBuffer", "__name", "VALID_QP_REGEX", "QP_SPLIT_REGEX", "SOFT_LINE_BREAK_REGEX", "PARTIAL_QP_ENDING_REGEX", "QPDecoder", "opts", "encodedBytes", "buf", "dataView", "i", "len", "str", "list", "part", "firstThree", "buffer", "partialEnding", "blobToArrayBuffer", "__name", "MimeNode", "options", "transferEncoding", "Base64Decoder", "QPDecoder", "getDecoder", "PassThroughDecoder", "boundaries", "i", "childNode", "str", "response", "key", "value", "stage", "quote", "escaped", "chr", "len", "decodeParameterValueContinuations", "delSp", "previousValue", "currentValue", "line", "sep", "textEncoder", "__name", "htmlEntities", "html_entities_default", "decodeHTMLEntities", "str", "match", "entity", "html_entities_default", "codePoint", "output", "__name", "escapeHtml", "c", "hex", "textToHtml", "htmlToText", "formatTextAddress", "address", "formatTextAddresses", "addresses", "parts", "processAddress", "partCounter", "groupStart", "groupEnd", "formatHtmlAddress", "formatHtmlAddresses", "foldLines", "lineLength", "afterSpace", "pos", "len", "result", "line", "formatTextHeader", "message", "rows", "dateOptions", "dateStr", "maxKeyLength", "r", "acc", "cur", "row", "sepLen", "prefix", "emptyPrefix", "i", "maxLineLength", "lineMarker", "formatHtmlHeader", "_handleAddress", "tokens", "isGroup", "state", "address", "addresses", "data", "i", "len", "insideQuotes", "token", "prevToken", "groupMembers", "addressParser", "member", "decodeWords", "_regexHandler", "__name", "parsedSubAddresses", "Tokenizer", "str", "list", "chr", "nextChr", "node", "options", "parsedAddresses", "walkAddressList", "address_parser_default", "base64ArrayBuffer", "arrayBuffer", "base64", "encodings", "bytes", "byteLength", "byteRemainder", "mainLength", "a", "b", "chunk", "i", "__name", "MAX_NESTING_DEPTH", "MAX_HEADERS_SIZE", "PostalMime", "buf", "options", "MimeNode", "line", "isFinal", "boundaries", "i", "boundary", "isTerminator", "boudaryMatches", "startPos", "endPos", "res", "__name", "c", "textContent", "textTypes", "textMap", "forceRfc822Attachments", "walk", "node", "alternative", "related", "subParser", "textEntry", "subTextEntry", "subTextNode", "attachment", "textType", "selectorNode", "filename", "decodeWords", "decodedText", "textEncoder", "childNode", "mapEntry", "formatHtmlHeader", "formatTextHeader", "alternativeType", "textToHtml", "htmlToText", "stream", "chunkLen", "chunks", "reader", "done", "value", "result", "chunkPointer", "chunk", "blobToArrayBuffer", "message", "entry", "key", "addressHeader", "addresses", "address_parser_default", "camelKey", "o", "addressHeaders", "parsed", "header", "dateHeader", "date", "base64ArrayBuffer", "attachmentDecoder", "decrypt", "encryptedText", "secret", "text", "result", "i", "__name", "apiKeyAuth", "__name", "c", "next", "apiKey", "authHeader", "db", "getD1DB", "keyRecord", "findApiKeyByKey", "updateApiKeyLastUsed", "incrementApiCalls", "generateRandomLocalPart", "adjectives", "nouns", "adj", "noun", "num", "__name", "mailboxesRouter", "Hono", "c", "db", "getD1DB", "apiKey", "body", "availableDomains", "d", "domain", "address", "expiresIn", "expiresAt", "now", "mailbox", "nanoid", "insertMailbox", "incrementAddressesCreated", "e", "id", "findMailboxById", "messageCount", "getMailboxMessageCount", "page", "limit", "sort", "messages", "total", "totalPages", "getMailboxMessages", "msg", "messageId", "message", "findMailboxMessage", "deleteMailboxMessage", "mailboxes_default", "v1", "Hono", "cors", "apiKeyAuth", "mailboxes_default", "v1_default", "app", "Hono", "cors", "turnstile", "__name", "c", "next", "body", "e", "token", "ip", "params", "data", "api", "generateApiKey", "chars", "key", "i", "db", "getD1DB", "now", "apiKey", "keyPrefix", "newApiKey", "nanoid", "insertApiKey", "incrementApiKeysCreated", "address", "emails", "getEmailsByMessageTo", "id", "email", "findEmailById", "ids", "result", "deleteEmails", "password", "decrypt", "emailDomain", "d", "stats", "getSiteStats", "v1_default", "module", "src_default", "message", "env", "ctx", "raw", "mail", "PostalMime", "newEmail", "insertEmailSchema", "insertEmail", "incrementEmailsReceived", "request", "url", "response", "indexRequest", "event", "oneDayAgo", "deleteExpiredEmails", "drainBody", "__name", "request", "env", "_ctx", "middlewareCtx", "reader", "e", "middleware_ensure_req_body_drained_default", "reduceError", "e", "__name", "jsonError", "request", "env", "_ctx", "middlewareCtx", "error", "middleware_miniflare3_json_error_default", "__INTERNAL_WRANGLER_MIDDLEWARE__", "middleware_ensure_req_body_drained_default", "middleware_miniflare3_json_error_default", "middleware_insertion_facade_default", "src_default", "__facade_middleware__", "__facade_register__", "args", "__name", "__facade_invokeChain__", "request", "env", "ctx", "dispatch", "middlewareChain", "head", "tail", "newRequest", "newEnv", "__name", "__facade_invoke__", "finalMiddleware", "__facade_middleware__", "__Facade_ScheduledController__", "scheduledTime", "cron", "noRetry", "#noRetry", "__name", "wrapExportedHandler", "worker", "__INTERNAL_WRANGLER_MIDDLEWARE__", "middleware", "__facade_register__", "fetchDispatcher", "request", "env", "ctx", "__facade_invoke__", "type", "init", "controller", "wrapWorkerEntrypoint", "klass", "#fetchDispatcher", "#dispatcher", "WRAPPED_ENTRY", "middleware_insertion_facade_default", "middleware_loader_entry_default"] -} diff --git a/frontend/public/locales/de/common.json b/frontend/public/locales/de/common.json index 09d4331..0f6d7b4 100644 --- a/frontend/public/locales/de/common.json +++ b/frontend/public/locales/de/common.json @@ -116,5 +116,10 @@ "Create API Key": "API-Schlüssel erstellen", "Please complete the verification first": "Bitte schließen Sie zuerst die Verifizierung ab", "API Key created successfully": "API-Schlüssel erfolgreich erstellt", - "Failed to create API Key": "Fehler beim Erstellen des API-Schlüssels" + "Failed to create API Key": "Fehler beim Erstellen des API-Schlüssels", + "Site Statistics": "Seitenstatistiken", + "Addresses Created": "Erstellte Adressen", + "Emails Received": "Empfangene E-Mails", + "API Keys Created": "Erstellte API-Schlüssel", + "API Calls": "API-Aufrufe" } diff --git a/frontend/public/locales/fr/common.json b/frontend/public/locales/fr/common.json index 9f42a15..b30c42b 100644 --- a/frontend/public/locales/fr/common.json +++ b/frontend/public/locales/fr/common.json @@ -115,5 +115,10 @@ "Create API Key": "Créer une clé API", "Please complete the verification first": "Veuillez d'abord compléter la vérification", "API Key created successfully": "Clé API créée avec succès", - "Failed to create API Key": "Échec de la création de la clé API" + "Failed to create API Key": "Échec de la création de la clé API", + "Site Statistics": "Statistiques du site", + "Addresses Created": "Adresses créées", + "Emails Received": "Emails reçus", + "API Keys Created": "Clés API créées", + "API Calls": "Appels API" } diff --git a/frontend/public/locales/hi/common.json b/frontend/public/locales/hi/common.json index 6778ff2..5eb48c6 100644 --- a/frontend/public/locales/hi/common.json +++ b/frontend/public/locales/hi/common.json @@ -115,5 +115,10 @@ "Create API Key": "API कुंजी बनाएं", "Please complete the verification first": "कृपया पहले सत्यापन पूरा करें", "API Key created successfully": "API कुंजी सफलतापूर्वक बनाई गई", - "Failed to create API Key": "API कुंजी बनाने में विफल" + "Failed to create API Key": "API कुंजी बनाने में विफल", + "Site Statistics": "साइट आंकड़े", + "Addresses Created": "बनाए गए पते", + "Emails Received": "प्राप्त ईमेल", + "API Keys Created": "बनाई गई API कुंजियाँ", + "API Calls": "API कॉल" } diff --git a/frontend/public/locales/it/common.json b/frontend/public/locales/it/common.json index a42ae40..8140f0c 100644 --- a/frontend/public/locales/it/common.json +++ b/frontend/public/locales/it/common.json @@ -115,5 +115,10 @@ "Create API Key": "Crea chiave API", "Please complete the verification first": "Per favore completa prima la verifica", "API Key created successfully": "Chiave API creata con successo", - "Failed to create API Key": "Impossibile creare la chiave API" + "Failed to create API Key": "Impossibile creare la chiave API", + "Site Statistics": "Statistiche del sito", + "Addresses Created": "Indirizzi creati", + "Emails Received": "Email ricevute", + "API Keys Created": "Chiavi API create", + "API Calls": "Chiamate API" } diff --git a/frontend/public/locales/ko/common.json b/frontend/public/locales/ko/common.json index ded34df..a7b03c3 100644 --- a/frontend/public/locales/ko/common.json +++ b/frontend/public/locales/ko/common.json @@ -115,5 +115,10 @@ "Create API Key": "API 키 생성", "Please complete the verification first": "먼저 확인을 완료하세요", "API Key created successfully": "API 키가 성공적으로 생성되었습니다", - "Failed to create API Key": "API 키 생성 실패" + "Failed to create API Key": "API 키 생성 실패", + "Site Statistics": "사이트 통계", + "Addresses Created": "생성된 주소", + "Emails Received": "받은 이메일", + "API Keys Created": "생성된 API 키", + "API Calls": "API 호출" } diff --git a/frontend/public/locales/pt/common.json b/frontend/public/locales/pt/common.json index cb28f22..c9f79be 100644 --- a/frontend/public/locales/pt/common.json +++ b/frontend/public/locales/pt/common.json @@ -115,5 +115,10 @@ "Create API Key": "Criar chave de API", "Please complete the verification first": "Por favor, complete a verificação primeiro", "API Key created successfully": "Chave de API criada com sucesso", - "Failed to create API Key": "Falha ao criar chave de API" + "Failed to create API Key": "Falha ao criar chave de API", + "Site Statistics": "Estatísticas do site", + "Addresses Created": "Endereços criados", + "Emails Received": "Emails recebidos", + "API Keys Created": "Chaves de API criadas", + "API Calls": "Chamadas de API" } diff --git a/frontend/public/locales/ru/common.json b/frontend/public/locales/ru/common.json index 023a506..d5fa560 100644 --- a/frontend/public/locales/ru/common.json +++ b/frontend/public/locales/ru/common.json @@ -115,5 +115,10 @@ "Create API Key": "Создать ключ API", "Please complete the verification first": "Пожалуйста, сначала пройдите верификацию", "API Key created successfully": "Ключ API успешно создан", - "Failed to create API Key": "Не удалось создать ключ API" + "Failed to create API Key": "Не удалось создать ключ API", + "Site Statistics": "Статистика сайта", + "Addresses Created": "Созданных адресов", + "Emails Received": "Полученных писем", + "API Keys Created": "Созданных ключей API", + "API Calls": "Вызовов API" } diff --git a/frontend/public/locales/tr/common.json b/frontend/public/locales/tr/common.json index e63fe57..c861096 100644 --- a/frontend/public/locales/tr/common.json +++ b/frontend/public/locales/tr/common.json @@ -115,5 +115,10 @@ "Create API Key": "API Anahtari Olustur", "Please complete the verification first": "Lutfen once dogrulamayi tamamlayin", "API Key created successfully": "API Anahtari basariyla olusturuldu", - "Failed to create API Key": "API Anahtari olusturulamadi" + "Failed to create API Key": "API Anahtari olusturulamadi", + "Site Statistics": "Site Istatistikleri", + "Addresses Created": "Olusturulan Adresler", + "Emails Received": "Alinan E-postalar", + "API Keys Created": "Olusturulan API Anahtarlari", + "API Calls": "API Cagrilari" } diff --git a/frontend/public/locales/zh-TW/common.json b/frontend/public/locales/zh-TW/common.json index b4fb171..51cbe42 100644 --- a/frontend/public/locales/zh-TW/common.json +++ b/frontend/public/locales/zh-TW/common.json @@ -115,5 +115,10 @@ "Create API Key": "建立 API 金鑰", "Please complete the verification first": "請先完成驗證", "API Key created successfully": "API 金鑰建立成功", - "Failed to create API Key": "建立 API 金鑰失敗" + "Failed to create API Key": "建立 API 金鑰失敗", + "Site Statistics": "站點統計", + "Addresses Created": "累計建立信箱", + "Emails Received": "累計接收郵件", + "API Keys Created": "累計建立 API 金鑰", + "API Calls": "累計 API 呼叫" } diff --git a/worker/src/index.ts b/worker/src/index.ts index 6b0c846..55eb0b9 100644 --- a/worker/src/index.ts +++ b/worker/src/index.ts @@ -90,6 +90,9 @@ const api = app.basePath('/api'); api.post('/verify', turnstile, async (c) => { // turnstile 中间件已经完成了验证工作。 // 如果代码能执行到这里,说明验证成功。 + // 增加邮箱创建计数(前端验证成功后会创建邮箱地址) + const db = getD1DB(c.env.DB); + await incrementAddressesCreated(db); return c.json({ success: true }); });