diff --git a/.wrangler/tmp/bundle-A5JBNI/checked-fetch.js b/.wrangler/tmp/bundle-A5JBNI/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-A5JBNI/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-A5JBNI/middleware-insertion-facade.js b/.wrangler/tmp/bundle-A5JBNI/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-A5JBNI/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-A5JBNI/middleware-loader.entry.ts b/.wrangler/tmp/bundle-A5JBNI/middleware-loader.entry.ts new file mode 100644 index 0000000..2710439 --- /dev/null +++ b/.wrangler/tmp/bundle-A5JBNI/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-A5JBNI\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-A5JBNI\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-A5JBNI\\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-BPqujt/checked-fetch.js b/.wrangler/tmp/bundle-BPqujt/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-BPqujt/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-BPqujt/middleware-insertion-facade.js b/.wrangler/tmp/bundle-BPqujt/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-BPqujt/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-BPqujt/middleware-loader.entry.ts b/.wrangler/tmp/bundle-BPqujt/middleware-loader.entry.ts new file mode 100644 index 0000000..be6477e --- /dev/null +++ b/.wrangler/tmp/bundle-BPqujt/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-BPqujt\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-BPqujt\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-BPqujt\\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-MMP94b/checked-fetch.js b/.wrangler/tmp/bundle-MMP94b/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-MMP94b/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-MMP94b/middleware-insertion-facade.js b/.wrangler/tmp/bundle-MMP94b/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-MMP94b/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-MMP94b/middleware-loader.entry.ts b/.wrangler/tmp/bundle-MMP94b/middleware-loader.entry.ts new file mode 100644 index 0000000..87e2964 --- /dev/null +++ b/.wrangler/tmp/bundle-MMP94b/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-MMP94b\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-MMP94b\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-MMP94b\\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-Oml82W/checked-fetch.js b/.wrangler/tmp/bundle-Oml82W/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-Oml82W/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-Oml82W/middleware-insertion-facade.js b/.wrangler/tmp/bundle-Oml82W/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-Oml82W/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-Oml82W/middleware-loader.entry.ts b/.wrangler/tmp/bundle-Oml82W/middleware-loader.entry.ts new file mode 100644 index 0000000..54e3b36 --- /dev/null +++ b/.wrangler/tmp/bundle-Oml82W/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-Oml82W\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-Oml82W\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-Oml82W\\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-P1vEyM/checked-fetch.js b/.wrangler/tmp/bundle-P1vEyM/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-P1vEyM/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-P1vEyM/middleware-insertion-facade.js b/.wrangler/tmp/bundle-P1vEyM/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-P1vEyM/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-P1vEyM/middleware-loader.entry.ts b/.wrangler/tmp/bundle-P1vEyM/middleware-loader.entry.ts new file mode 100644 index 0000000..0372e94 --- /dev/null +++ b/.wrangler/tmp/bundle-P1vEyM/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-P1vEyM\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-P1vEyM\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-P1vEyM\\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-RkXBq4/checked-fetch.js b/.wrangler/tmp/bundle-RkXBq4/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-RkXBq4/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-RkXBq4/middleware-insertion-facade.js b/.wrangler/tmp/bundle-RkXBq4/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-RkXBq4/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-RkXBq4/middleware-loader.entry.ts b/.wrangler/tmp/bundle-RkXBq4/middleware-loader.entry.ts new file mode 100644 index 0000000..75c48f0 --- /dev/null +++ b/.wrangler/tmp/bundle-RkXBq4/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-RkXBq4\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-RkXBq4\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-RkXBq4\\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-YuxJya/checked-fetch.js b/.wrangler/tmp/bundle-YuxJya/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-YuxJya/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-YuxJya/middleware-insertion-facade.js b/.wrangler/tmp/bundle-YuxJya/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-YuxJya/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-YuxJya/middleware-loader.entry.ts b/.wrangler/tmp/bundle-YuxJya/middleware-loader.entry.ts new file mode 100644 index 0000000..ddba461 --- /dev/null +++ b/.wrangler/tmp/bundle-YuxJya/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-YuxJya\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-YuxJya\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-YuxJya\\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-d5bXFA/checked-fetch.js b/.wrangler/tmp/bundle-d5bXFA/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-d5bXFA/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-d5bXFA/middleware-insertion-facade.js b/.wrangler/tmp/bundle-d5bXFA/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-d5bXFA/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-d5bXFA/middleware-loader.entry.ts b/.wrangler/tmp/bundle-d5bXFA/middleware-loader.entry.ts new file mode 100644 index 0000000..434da4b --- /dev/null +++ b/.wrangler/tmp/bundle-d5bXFA/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-d5bXFA\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-d5bXFA\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-d5bXFA\\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-fNR4lX/checked-fetch.js b/.wrangler/tmp/bundle-fNR4lX/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-fNR4lX/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-fNR4lX/middleware-insertion-facade.js b/.wrangler/tmp/bundle-fNR4lX/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-fNR4lX/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-fNR4lX/middleware-loader.entry.ts b/.wrangler/tmp/bundle-fNR4lX/middleware-loader.entry.ts new file mode 100644 index 0000000..f0f83f2 --- /dev/null +++ b/.wrangler/tmp/bundle-fNR4lX/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-fNR4lX\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-fNR4lX\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-fNR4lX\\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-hVAKjn/checked-fetch.js b/.wrangler/tmp/bundle-hVAKjn/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-hVAKjn/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-hVAKjn/middleware-insertion-facade.js b/.wrangler/tmp/bundle-hVAKjn/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-hVAKjn/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-hVAKjn/middleware-loader.entry.ts b/.wrangler/tmp/bundle-hVAKjn/middleware-loader.entry.ts new file mode 100644 index 0000000..5a3357f --- /dev/null +++ b/.wrangler/tmp/bundle-hVAKjn/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-hVAKjn\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-hVAKjn\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-hVAKjn\\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-ikDXAQ/checked-fetch.js b/.wrangler/tmp/bundle-ikDXAQ/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-ikDXAQ/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-ikDXAQ/middleware-insertion-facade.js b/.wrangler/tmp/bundle-ikDXAQ/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-ikDXAQ/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-ikDXAQ/middleware-loader.entry.ts b/.wrangler/tmp/bundle-ikDXAQ/middleware-loader.entry.ts new file mode 100644 index 0000000..372d4fe --- /dev/null +++ b/.wrangler/tmp/bundle-ikDXAQ/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-ikDXAQ\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-ikDXAQ\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-ikDXAQ\\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-lcE67Q/checked-fetch.js b/.wrangler/tmp/bundle-lcE67Q/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-lcE67Q/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-lcE67Q/middleware-insertion-facade.js b/.wrangler/tmp/bundle-lcE67Q/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-lcE67Q/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-lcE67Q/middleware-loader.entry.ts b/.wrangler/tmp/bundle-lcE67Q/middleware-loader.entry.ts new file mode 100644 index 0000000..fdf101b --- /dev/null +++ b/.wrangler/tmp/bundle-lcE67Q/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-lcE67Q\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-lcE67Q\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-lcE67Q\\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-mYQ48C/checked-fetch.js b/.wrangler/tmp/bundle-mYQ48C/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-mYQ48C/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-mYQ48C/middleware-insertion-facade.js b/.wrangler/tmp/bundle-mYQ48C/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-mYQ48C/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-mYQ48C/middleware-loader.entry.ts b/.wrangler/tmp/bundle-mYQ48C/middleware-loader.entry.ts new file mode 100644 index 0000000..d6b5bd0 --- /dev/null +++ b/.wrangler/tmp/bundle-mYQ48C/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-mYQ48C\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-mYQ48C\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-mYQ48C\\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-sMKHZl/checked-fetch.js b/.wrangler/tmp/bundle-sMKHZl/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-sMKHZl/checked-fetch.js @@ -0,0 +1,30 @@ +const urls = new Set(); + +function checkURL(request, init) { + const url = + request instanceof URL + ? request + : new URL( + (typeof request === "string" + ? new Request(request, init) + : request + ).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + + ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` + ); + } + } +} + +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + }, +}); diff --git a/.wrangler/tmp/bundle-sMKHZl/middleware-insertion-facade.js b/.wrangler/tmp/bundle-sMKHZl/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-sMKHZl/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + import * as __MIDDLEWARE_0__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; + + export * from "D:\\github\\pixivnow\\functions\\[[path]].ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + 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-sMKHZl/middleware-loader.entry.ts b/.wrangler/tmp/bundle-sMKHZl/middleware-loader.entry.ts new file mode 100644 index 0000000..60a9eed --- /dev/null +++ b/.wrangler/tmp/bundle-sMKHZl/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// 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 "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-sMKHZl\\middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "D:\\github\\pixivnow\\node_modules\\.pnpm\\wrangler@4.42.1\\node_modules\\wrangler\\templates\\middleware\\common.ts"; +import type { WorkerEntrypointConstructor } from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-sMKHZl\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-sMKHZl\\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/dev-1YRfaC/[[path]].js b/.wrangler/tmp/dev-1YRfaC/[[path]].js new file mode 100644 index 0000000..6ddf5a5 --- /dev/null +++ b/.wrangler/tmp/dev-1YRfaC/[[path]].js @@ -0,0 +1,397 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-MMP94b/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const mockIllusts = [ + { + id: "123456789", + title: "Test Illustration", + userId: "987654321", + userName: "Test Artist", + tags: ["test", "mock"], + updateDate: "2024-01-01T12:00:00+00:00", + urls: { + mini: "https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + thumb: "https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + small: "https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + regular: "https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + original: "https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg" + } + } + ]; + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + url.hostname = "i.pximg.net"; + } else { + url.hostname = "s.pximg.net"; + } + url.pathname = "/" + path; + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-MMP94b/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-MMP94b/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-1YRfaC/[[path]].js.map b/.wrangler/tmp/dev-1YRfaC/[[path]].js.map new file mode 100644 index 0000000..8e454c5 --- /dev/null +++ b/.wrangler/tmp/dev-1YRfaC/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-MMP94b/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-MMP94b/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-MMP94b/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-1YRfaC", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n // \u7B80\u5316\u7248\u672C\uFF1A\u8FD4\u56DE\u6A21\u62DF\u6570\u636E\u800C\u4E0D\u662F\u8C03\u7528 Pixiv API\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6A21\u62DF\u6570\u636E\u7528\u4E8E\u6D4B\u8BD5\n const mockIllusts = [\n {\n id: '123456789',\n title: 'Test Illustration',\n userId: '987654321',\n userName: 'Test Artist',\n tags: ['test', 'mock'],\n updateDate: '2024-01-01T12:00:00+00:00',\n urls: {\n mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg',\n }\n }\n ]\n\n if (requestImage && mockIllusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: mockIllusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(mockIllusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n\n /* \u539F\u59CB Pixiv API \u8C03\u7528\u4EE3\u7801 - \u6682\u65F6\u6CE8\u91CA\u6389\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n */\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n if (url.pathname.startsWith('/~')) {\n url.hostname = 'i.pximg.net'\n } else {\n url.hostname = 's.pximg.net'\n }\n url.pathname = '/' + path\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-MMP94b\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-MMP94b\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-MMP94b\\\\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": [] +} diff --git a/.wrangler/tmp/dev-2s8pio/[[path]].js b/.wrangler/tmp/dev-2s8pio/[[path]].js new file mode 100644 index 0000000..d92f2c3 --- /dev/null +++ b/.wrangler/tmp/dev-2s8pio/[[path]].js @@ -0,0 +1,230 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-Oml82W/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +var path_default = { + fetch: /* @__PURE__ */ __name((request, env, ctx) => { + console.log("Basic Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + if (url.pathname === "/") { + return new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + }); + } + if (url.pathname === "/test") { + return new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path: url.pathname + }), { + headers: { "Content-Type": "application/json" } + }); + } + return new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + }, "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-Oml82W/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-Oml82W/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-2s8pio/[[path]].js.map b/.wrangler/tmp/dev-2s8pio/[[path]].js.map new file mode 100644 index 0000000..382d784 --- /dev/null +++ b/.wrangler/tmp/dev-2s8pio/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-Oml82W/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-Oml82W/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-Oml82W/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-2s8pio", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "export default {\n fetch: (request: Request, env: any, ctx: any) => {\n console.log('Basic Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n \n if (url.pathname === '/') {\n return new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n })\n }\n \n if (url.pathname === '/test') {\n return new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: url.pathname\n }), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n \n return new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-Oml82W\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-Oml82W\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-Oml82W\\\\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": [] +} diff --git a/.wrangler/tmp/dev-8ou9Jm/[[path]].js b/.wrangler/tmp/dev-8ou9Jm/[[path]].js new file mode 100644 index 0000000..c280aa3 --- /dev/null +++ b/.wrangler/tmp/dev-8ou9Jm/[[path]].js @@ -0,0 +1,407 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-P1vEyM/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const mockIllusts = [ + { + id: "123456789", + title: "Test Illustration", + userId: "987654321", + userName: "Test Artist", + tags: ["test", "mock"], + updateDate: "2024-01-01T12:00:00+00:00", + urls: { + mini: "https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + thumb: "https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + small: "https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + regular: "https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + original: "https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg" + } + } + ]; + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + if (env.VITE_PXIMG_BASEURL_S) { + url.href = env.VITE_PXIMG_BASEURL_S + path; + } else { + url.hostname = "s.pximg.net"; + url.pathname = "/" + path; + } + } else { + if (env.VITE_PXIMG_BASEURL_I) { + url.href = env.VITE_PXIMG_BASEURL_I + path; + } else { + url.hostname = "i.pximg.net"; + url.pathname = "/" + path; + } + } + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-P1vEyM/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-P1vEyM/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-8ou9Jm/[[path]].js.map b/.wrangler/tmp/dev-8ou9Jm/[[path]].js.map new file mode 100644 index 0000000..f326124 --- /dev/null +++ b/.wrangler/tmp/dev-8ou9Jm/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-P1vEyM/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-P1vEyM/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-P1vEyM/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-8ou9Jm", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n // \u7B80\u5316\u7248\u672C\uFF1A\u8FD4\u56DE\u6A21\u62DF\u6570\u636E\u800C\u4E0D\u662F\u8C03\u7528 Pixiv API\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6A21\u62DF\u6570\u636E\u7528\u4E8E\u6D4B\u8BD5\n const mockIllusts = [\n {\n id: '123456789',\n title: 'Test Illustration',\n userId: '987654321',\n userName: 'Test Artist',\n tags: ['test', 'mock'],\n updateDate: '2024-01-01T12:00:00+00:00',\n urls: {\n mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg',\n }\n }\n ]\n\n if (requestImage && mockIllusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: mockIllusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(mockIllusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n\n /* \u539F\u59CB Pixiv API \u8C03\u7528\u4EE3\u7801 - \u6682\u65F6\u6CE8\u91CA\u6389\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 Pixiv \u56FE\u7247 URL\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406 URL\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n */\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n // \u4F7F\u7528\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u7684\u53CD\u4EE3 URL\uFF0C\u6216\u8005\u9ED8\u8BA4\u7684 Pixiv \u539F\u59CB URL\n if (url.pathname.startsWith('/~')) {\n // \u5904\u7406 s.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_S) {\n url.href = env.VITE_PXIMG_BASEURL_S + path\n } else {\n url.hostname = 's.pximg.net'\n url.pathname = '/' + path\n }\n } else {\n // \u5904\u7406 i.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_I) {\n url.href = env.VITE_PXIMG_BASEURL_I + path\n } else {\n url.hostname = 'i.pximg.net'\n url.pathname = '/' + path\n }\n }\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-P1vEyM\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-P1vEyM\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-P1vEyM\\\\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": [] +} diff --git a/.wrangler/tmp/dev-CARoER/[[path]].js b/.wrangler/tmp/dev-CARoER/[[path]].js new file mode 100644 index 0000000..2af9d77 --- /dev/null +++ b/.wrangler/tmp/dev-CARoER/[[path]].js @@ -0,0 +1,407 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-BPqujt/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const mockIllusts = [ + { + id: "123456789", + title: "Test Illustration", + userId: "987654321", + userName: "Test Artist", + tags: ["test", "mock"], + updateDate: "2024-01-01T12:00:00+00:00", + urls: { + mini: "https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + thumb: "https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + small: "https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + regular: "https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + original: "https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg" + } + } + ]; + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + if (env.VITE_PXIMG_BASEURL_S) { + url.href = env.VITE_PXIMG_BASEURL_S + path; + } else { + url.hostname = "s.pximg.net"; + url.pathname = "/" + path; + } + } else { + if (env.VITE_PXIMG_BASEURL_I) { + url.href = env.VITE_PXIMG_BASEURL_I + path; + } else { + url.hostname = "i.pximg.net"; + url.pathname = "/" + path; + } + } + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-BPqujt/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-BPqujt/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-CARoER/[[path]].js.map b/.wrangler/tmp/dev-CARoER/[[path]].js.map new file mode 100644 index 0000000..41a9a55 --- /dev/null +++ b/.wrangler/tmp/dev-CARoER/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-BPqujt/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-BPqujt/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-BPqujt/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-CARoER", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n // \u7B80\u5316\u7248\u672C\uFF1A\u8FD4\u56DE\u6A21\u62DF\u6570\u636E\u800C\u4E0D\u662F\u8C03\u7528 Pixiv API\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6A21\u62DF\u6570\u636E\u7528\u4E8E\u6D4B\u8BD5\n const mockIllusts = [\n {\n id: '123456789',\n title: 'Test Illustration',\n userId: '987654321',\n userName: 'Test Artist',\n tags: ['test', 'mock'],\n updateDate: '2024-01-01T12:00:00+00:00',\n urls: {\n mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg',\n }\n }\n ]\n\n if (requestImage && mockIllusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: mockIllusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(mockIllusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n\n /* \u539F\u59CB Pixiv API \u8C03\u7528\u4EE3\u7801 - \u6682\u65F6\u6CE8\u91CA\u6389\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 Pixiv \u56FE\u7247 URL\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406 URL\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n */\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n // \u4F7F\u7528\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u7684\u53CD\u4EE3 URL\uFF0C\u6216\u8005\u9ED8\u8BA4\u7684 Pixiv \u539F\u59CB URL\n if (url.pathname.startsWith('/~')) {\n // \u5904\u7406 s.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_S) {\n url.href = env.VITE_PXIMG_BASEURL_S + path\n } else {\n url.hostname = 's.pximg.net'\n url.pathname = '/' + path\n }\n } else {\n // \u5904\u7406 i.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_I) {\n url.href = env.VITE_PXIMG_BASEURL_I + path\n } else {\n url.hostname = 'i.pximg.net'\n url.pathname = '/' + path\n }\n }\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-BPqujt\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-BPqujt\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-BPqujt\\\\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": [] +} diff --git a/.wrangler/tmp/dev-FoKuMg/[[path]].js b/.wrangler/tmp/dev-FoKuMg/[[path]].js new file mode 100644 index 0000000..1e39b6d --- /dev/null +++ b/.wrangler/tmp/dev-FoKuMg/[[path]].js @@ -0,0 +1,441 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-ikDXAQ/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs +var t = /* @__PURE__ */ __name(({ base: e = "", routes: t2 = [], ...r2 } = {}) => ({ __proto__: new Proxy({}, { get: /* @__PURE__ */ __name((r3, o2, a, s) => (r4, ...c) => t2.push([o2.toUpperCase?.(), RegExp(`^${(s = (e + r4).replace(/\/+(\/|$)/g, "$1")).replace(/(\/?\.?):(\w+)\+/g, "($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g, "($1(?<$2>[^$1/]+?))").replace(/\./g, "\\.").replace(/(\/?)\*/g, "($1.*)?")}/*$`), c, s]) && a, "get") }), routes: t2, ...r2, async fetch(e2, ...o2) { + let a, s, c = new URL(e2.url), n = e2.query = { __proto__: null }; + for (let [e3, t3] of c.searchParams) n[e3] = n[e3] ? [].concat(n[e3], t3) : t3; + e: try { + for (let t3 of r2.before || []) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break e; + t: for (let [r3, n2, l, i] of t2) if ((r3 == e2.method || "ALL" == r3) && (s = c.pathname.match(n2))) { + e2.params = s.groups || {}, e2.route = i; + for (let t3 of l) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break t; + } + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + try { + for (let t3 of r2.finally || []) a = await t3(a, e2.proxy ?? e2, ...o2) ?? a; + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + return a; +} }), "t"); +var r = /* @__PURE__ */ __name((e = "text/plain; charset=utf-8", t2) => (r2, o2 = {}) => { + if (void 0 === r2 || r2 instanceof Response) return r2; + const a = new Response(t2?.(r2) ?? r2, o2.url ? void 0 : o2); + return a.headers.set("content-type", e), a; +}, "r"); +var o = r("application/json; charset=utf-8", JSON.stringify); +var p = r("text/plain; charset=utf-8", String); +var f = r("text/html"); +var u = r("image/jpeg"); +var h = r("image/png"); +var g = r("image/webp"); +var y = /* @__PURE__ */ __name((e = {}) => { + const { origin: t2 = "*", credentials: r2 = false, allowMethods: o2 = "*", allowHeaders: a, exposeHeaders: s, maxAge: c } = e, n = /* @__PURE__ */ __name((e2) => { + const o3 = e2?.headers.get("origin"); + return true === t2 ? o3 : t2 instanceof RegExp ? t2.test(o3) ? o3 : void 0 : Array.isArray(t2) ? t2.includes(o3) ? o3 : void 0 : t2 instanceof Function ? t2(o3) : "*" == t2 && r2 ? o3 : t2; + }, "n"), l = /* @__PURE__ */ __name((e2, t3) => { + for (const [r3, o3] of Object.entries(t3)) o3 && e2.headers.append(r3, o3); + return e2; + }, "l"); + return { corsify: /* @__PURE__ */ __name((e2, t3) => e2?.headers?.get("access-control-allow-origin") || 101 == e2.status ? e2 : l(e2.clone(), { "access-control-allow-origin": n(t3), "access-control-allow-credentials": r2 }), "corsify"), preflight: /* @__PURE__ */ __name((e2) => { + if ("OPTIONS" == e2.method) { + const t3 = new Response(null, { status: 204 }); + return l(t3, { "access-control-allow-origin": n(e2), "access-control-allow-methods": o2?.join?.(",") ?? o2, "access-control-expose-headers": s?.join?.(",") ?? s, "access-control-allow-headers": a?.join?.(",") ?? a ?? e2.headers.get("access-control-request-headers"), "access-control-max-age": c, "access-control-allow-credentials": r2 }); + } + }, "preflight") }; +}, "y"); + +// functions/[[path]].ts +var { preflight, corsify } = y(); +var router = t(); +router.all("/*", preflight); +router.all("/(ajax|rpc)/:path+", async (req, env) => { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(req.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: req.method, + headers, + body: req.body + }); + return fetch(newReq); +}); +router.all("/(~|-)/:path+", async (req, env) => { + const url = new URL(req.url); + const prefix = url.pathname.split("/")[1]; + switch (prefix) { + case "-": + url.hostname = "i.pximg.net"; + break; + case "~": + url.hostname = "s.pximg.net"; + break; + default: + return new Response("Invalid request", { status: 400 }); + } + url.pathname = url.pathname.substring(prefix.length + 1); + const headers = new Headers(); + const proxyHeaders = [ + "accept", + "accept-encoding", + "accept-language", + "range", + "if-range", + "if-none-match", + "if-modified-since", + "cache-control" + ]; + for (const h2 of proxyHeaders) { + if (req.headers.has(h2)) { + headers.set(h2, req.headers.get(h2)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + return fetch(newReq); +}); +router.all("/api/illust/random", async (req, env) => { + try { + const url = new URL(req.url); + const requestImage = (req.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const pixivUrl = new URL("https://www.pixiv.net/ajax/illust/discovery"); + pixivUrl.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + pixivUrl.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + throw new Error(`Pixiv API returned ${response.status}`); + } + const data = await response.json(); + const illusts = (data.illusts ?? []).filter( + (value) => Object.keys(value).includes("id") + ); + if (illusts.length === 0) { + return new Response(JSON.stringify([]), { + headers: { "Content-Type": "application/json" } + }); + } + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + const updateDate = new Date(value.updateDate); + const tokyoTime = new Date(updateDate.getTime() + 9 * 60 * 60 * 1e3); + const year = tokyoTime.getUTCFullYear(); + const month = String(tokyoTime.getUTCMonth() + 1).padStart(2, "0"); + const day = String(tokyoTime.getUTCDate()).padStart(2, "0"); + const hour = String(tokyoTime.getUTCHours()).padStart(2, "0"); + const minute = String(tokyoTime.getUTCMinutes()).padStart(2, "0"); + const second = String(tokyoTime.getUTCSeconds()).padStart(2, "0"); + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } catch (error) { + console.error("Error formatting date for illust:", value.id, error); + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg` + }; + } + }); + if (requestImage) { + return new Response(null, { + status: 302, + headers: { Location: illusts[0].urls.regular } + }); + } + return new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + }); + } catch (error) { + console.error("Error in random API:", error); + return new Response(JSON.stringify({ error: "Internal server error" }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + } +}); +router.all("/api/user", async (req, env) => { + const token = req.headers.get("cookie")?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get("token"); + if (!token) { + return new Response(JSON.stringify({ message: "\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5" }), { status: 403, headers: { "Content-Type": "application/json" } }); + } + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + url.pathname = "/"; + const headers = new Headers(req.headers); + headers.set("cookie", `PHPSESSID=${token}`); + const newReq = new Request(url.toString(), { + headers + }); + const res = await fetch(newReq); + const text = await res.text(); + let meta = null; + class MetaHandler { + constructor(type) { + this.type = type; + } + static { + __name(this, "MetaHandler"); + } + text(chunk) { + try { + if (this.type === "legacy") { + const data = JSON.parse(chunk.text); + meta = { + userData: data.userData, + token: data.token || "" + }; + } else { + const nextData = JSON.parse(chunk.text); + const perloadState = JSON.parse( + nextData?.props?.pageProps?.serverSerializedPreloadedState + ); + meta = { + userData: perloadState?.userData?.self, + token: perloadState?.api?.token || "" + }; + } + } catch (e) { + console.error("Error parsing meta", e); + } + } + } + const rewriter = new HTMLRewriter().on('meta[name="global-data"]', new MetaHandler("legacy")).on("script#__NEXT_DATA__", new MetaHandler("next")); + await rewriter.transform(new Response(text)).text(); + if (!meta || !meta.userData) { + return new Response(JSON.stringify({ message: "\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001" }), { status: 401, headers: { "Content-Type": "application/json" } }); + } + const responseHeaders = new Headers({ + "cache-control": "no-cache", + "set-cookie": `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`, + "Content-Type": "application/json" + }); + return new Response(JSON.stringify(meta), { headers: responseHeaders }); +}); +var path_default = { + fetch: /* @__PURE__ */ __name((req, env, ctx) => router.handle(req, env, ctx).then(corsify).catch((err) => { + console.error(err); + return new Response("Internal Server Error", { status: 500 }); + }), "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-ikDXAQ/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-ikDXAQ/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-FoKuMg/[[path]].js.map b/.wrangler/tmp/dev-FoKuMg/[[path]].js.map new file mode 100644 index 0000000..f480442 --- /dev/null +++ b/.wrangler/tmp/dev-FoKuMg/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-ikDXAQ/checked-fetch.js", "../../../node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-ikDXAQ/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-ikDXAQ/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-FoKuMg", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "const e=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of s.searchParams)c[e]=c[e]?[].concat(c[e],t):t;for(let[c,n,l,i]of t)if((c==e.method||\"ALL\"==c)&&(a=s.pathname.match(n))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,c=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of c.searchParams)n[e]=n[e]?[].concat(n[e],t):t;e:try{for(let t of r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,n,l,i]of t)if((r==e.method||\"ALL\"==r)&&(s=c.pathname.match(n))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e=\"text/plain; charset=utf-8\",t)=>(r,o={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o.url?void 0:o);return a.headers.set(\"content-type\",e),a},o=r(\"application/json; charset=utf-8\",JSON.stringify),a=e=>({400:\"Bad Request\",401:\"Unauthorized\",403:\"Forbidden\",404:\"Not Found\",500:\"Internal Server Error\"}[e]||\"Unknown Error\"),s=(e=500,t)=>{if(e instanceof Error){const{message:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,...\"object\"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},c=e=>{e.proxy=new Proxy(e.proxy??e,{get:(t,r)=>t[r]?.bind?.(e)??t[r]??t?.params?.[r]})},n=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:n=[],...l}={})=>t({before:[c,...n],catch:s,finally:[(e,...t)=>e??r(...t),e,...a],...l});class l extends Error{status;constructor(e=500,t){super(\"object\"==typeof t?t.error:t),\"object\"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=r(\"text/plain; charset=utf-8\",String),f=r(\"text/html\"),u=r(\"image/jpeg\"),h=r(\"image/png\"),g=r(\"image/webp\"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get(\"Cookie\")||\"\").split(/;\\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t=\"*\",credentials:r=!1,allowMethods:o=\"*\",allowHeaders:a,exposeHeaders:s,maxAge:c}=e,n=e=>{const o=e?.headers.get(\"origin\");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):\"*\"==t&&r?o:t},l=(e,t)=>{for(const[r,o]of Object.entries(t))o&&e.headers.append(r,o);return e};return{corsify:(e,t)=>e?.headers?.get(\"access-control-allow-origin\")||101==e.status?e:l(e.clone(),{\"access-control-allow-origin\":n(t),\"access-control-allow-credentials\":r}),preflight:e=>{if(\"OPTIONS\"==e.method){const t=new Response(null,{status:204});return l(t,{\"access-control-allow-origin\":n(e),\"access-control-allow-methods\":o?.join?.(\",\")??o,\"access-control-expose-headers\":s?.join?.(\",\")??s,\"access-control-allow-headers\":a?.join?.(\",\")??a??e.headers.get(\"access-control-request-headers\"),\"access-control-max-age\":c,\"access-control-allow-credentials\":r})}}}};export{n as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,c as withParams};\n", "import { Router, cors } from 'itty-router'\n\nconst { preflight, corsify } = cors()\n\nconst router = Router()\n\nrouter.all('/*', preflight)\n\n// Generic proxy\nrouter.all('/(ajax|rpc)/:path+', async (req, env) => {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(req.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: req.method,\n headers,\n body: req.body,\n })\n\n return fetch(newReq)\n})\n\n// Image proxy\nrouter.all('/(~|-)/:path+', async (req, env) => {\n const url = new URL(req.url)\n const prefix = url.pathname.split('/')[1]\n\n switch (prefix) {\n case '-':\n url.hostname = 'i.pximg.net'\n break\n case '~':\n url.hostname = 's.pximg.net'\n break\n default:\n return new Response('Invalid request', { status: 400 })\n }\n\n url.pathname = url.pathname.substring(prefix.length + 1)\n\n const headers = new Headers()\n const proxyHeaders = [\n 'accept',\n 'accept-encoding',\n 'accept-language',\n 'range',\n 'if-range',\n 'if-none-match',\n 'if-modified-since',\n 'cache-control',\n ]\n\n for (const h of proxyHeaders) {\n if (req.headers.has(h)) {\n headers.set(h, req.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n return fetch(newReq)\n})\n\nrouter.all('/api/illust/random', async (req, env) => {\n try {\n const url = new URL(req.url)\n const requestImage =\n (req.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6784\u5EFA\u8BF7\u6C42\u5230 Pixiv API\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n throw new Error(`Pixiv API returned ${response.status}`)\n }\n \n const data = await response.json()\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n Object.keys(value).includes('id')\n )\n\n if (illusts.length === 0) {\n return new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n // \u4F7F\u7528 UTC \u65F6\u95F4\uFF0C\u7136\u540E\u624B\u52A8\u8C03\u6574\u5230\u4E1C\u4EAC\u65F6\u533A (+9 \u5C0F\u65F6)\n const updateDate = new Date(value.updateDate)\n const tokyoTime = new Date(updateDate.getTime() + (9 * 60 * 60 * 1000))\n \n const year = tokyoTime.getUTCFullYear()\n const month = String(tokyoTime.getUTCMonth() + 1).padStart(2, '0')\n const day = String(tokyoTime.getUTCDate()).padStart(2, '0')\n const hour = String(tokyoTime.getUTCHours()).padStart(2, '0')\n const minute = String(tokyoTime.getUTCMinutes()).padStart(2, '0')\n const second = String(tokyoTime.getUTCSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } catch (error) {\n console.error('Error formatting date for illust:', value.id, error)\n // Fallback URLs\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg`,\n }\n }\n })\n\n if (requestImage) {\n return new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n })\n }\n\n return new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n })\n } catch (error) {\n console.error('Error in random API:', error)\n return new Response(JSON.stringify({ error: 'Internal server error' }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n})\n\nrouter.all('/api/user', async (req, env) => {\n const token = req.headers.get('cookie')?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get('token')\n if (!token) {\n return new Response(JSON.stringify({ message: '\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5' }), { status: 403, headers: { 'Content-Type': 'application/json' } })\n }\n\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n url.pathname = '/'\n\n const headers = new Headers(req.headers)\n headers.set('cookie', `PHPSESSID=${token}`)\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const res = await fetch(newReq)\n const text = await res.text()\n\n let meta: { userData: any; token: string } | null = null\n\n class MetaHandler {\n constructor(private type: 'legacy' | 'next') {}\n text(chunk: Text) {\n try {\n if (this.type === 'legacy') {\n const data = JSON.parse(chunk.text)\n meta = {\n userData: data.userData,\n token: data.token || '',\n }\n } else {\n const nextData = JSON.parse(chunk.text)\n const perloadState = JSON.parse(\n nextData?.props?.pageProps?.serverSerializedPreloadedState\n )\n meta = {\n userData: perloadState?.userData?.self,\n token: perloadState?.api?.token || '',\n }\n }\n } catch (e) {\n console.error('Error parsing meta', e)\n }\n }\n }\n\n const rewriter = new HTMLRewriter()\n .on('meta[name=\"global-data\"]', new MetaHandler('legacy'))\n .on('script#__NEXT_DATA__', new MetaHandler('next'))\n\n await rewriter.transform(new Response(text)).text()\n\n if (!meta || !meta.userData) {\n return new Response(JSON.stringify({ message: '\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001' }), { status: 401, headers: { 'Content-Type': 'application/json' } })\n }\n\n const responseHeaders = new Headers({\n 'cache-control': 'no-cache',\n 'set-cookie': `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`,\n 'Content-Type': 'application/json',\n })\n\n return new Response(JSON.stringify(meta), { headers: responseHeaders })\n})\n\nexport default {\n fetch: (req: Request, env: any, ctx: any) =>\n router\n .handle(req, env, ctx)\n .then(corsify)\n .catch((err) => {\n console.error(err)\n return new Response('Internal Server Error', { status: 500 })\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-ikDXAQ\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-ikDXAQ\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-ikDXAQ\\\\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": ["t", "r", "o", "e", "n", "t", "r", "o", "e", "h"] +} diff --git a/.wrangler/tmp/dev-J5r0KN/[[path]].js b/.wrangler/tmp/dev-J5r0KN/[[path]].js new file mode 100644 index 0000000..229d38b --- /dev/null +++ b/.wrangler/tmp/dev-J5r0KN/[[path]].js @@ -0,0 +1,443 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-sMKHZl/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const pixivUrl = new URL("https://www.pixiv.net/ajax/illust/discovery"); + pixivUrl.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + pixivUrl.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + const illusts = (data.illusts ?? []).filter( + (value) => value && typeof value === "object" && value.id + ); + if (illusts.length === 0) { + return corsResponse(new Response(JSON.stringify([]), { + headers: { "Content-Type": "application/json" } + })); + } + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + if (value.updateDate) { + const date = new Date(value.updateDate); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + const hour = String(date.getHours()).padStart(2, "0"); + const minute = String(date.getMinutes()).padStart(2, "0"); + const second = String(date.getSeconds()).padStart(2, "0"); + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } else { + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + } catch (error) { + console.error("Error processing illust:", value.id, error); + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + }); + if (requestImage && illusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: illusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + url.hostname = "i.pximg.net"; + } else { + url.hostname = "s.pximg.net"; + } + url.pathname = "/" + path; + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-sMKHZl/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-sMKHZl/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-J5r0KN/[[path]].js.map b/.wrangler/tmp/dev-J5r0KN/[[path]].js.map new file mode 100644 index 0000000..76cd373 --- /dev/null +++ b/.wrangler/tmp/dev-J5r0KN/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-sMKHZl/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-sMKHZl/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-sMKHZl/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-J5r0KN", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6784\u5EFA\u8BF7\u6C42\u5230 Pixiv API\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n if (url.pathname.startsWith('/~')) {\n url.hostname = 'i.pximg.net'\n } else {\n url.hostname = 's.pximg.net'\n }\n url.pathname = '/' + path\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-sMKHZl\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-sMKHZl\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-sMKHZl\\\\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": [] +} diff --git a/.wrangler/tmp/dev-NuKMFb/[[path]].js b/.wrangler/tmp/dev-NuKMFb/[[path]].js new file mode 100644 index 0000000..d6cc4d2 --- /dev/null +++ b/.wrangler/tmp/dev-NuKMFb/[[path]].js @@ -0,0 +1,288 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-hVAKjn/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs +var t = /* @__PURE__ */ __name(({ base: e = "", routes: t2 = [], ...r2 } = {}) => ({ __proto__: new Proxy({}, { get: /* @__PURE__ */ __name((r3, o2, a, s) => (r4, ...c) => t2.push([o2.toUpperCase?.(), RegExp(`^${(s = (e + r4).replace(/\/+(\/|$)/g, "$1")).replace(/(\/?\.?):(\w+)\+/g, "($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g, "($1(?<$2>[^$1/]+?))").replace(/\./g, "\\.").replace(/(\/?)\*/g, "($1.*)?")}/*$`), c, s]) && a, "get") }), routes: t2, ...r2, async fetch(e2, ...o2) { + let a, s, c = new URL(e2.url), n = e2.query = { __proto__: null }; + for (let [e3, t3] of c.searchParams) n[e3] = n[e3] ? [].concat(n[e3], t3) : t3; + e: try { + for (let t3 of r2.before || []) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break e; + t: for (let [r3, n2, l, i] of t2) if ((r3 == e2.method || "ALL" == r3) && (s = c.pathname.match(n2))) { + e2.params = s.groups || {}, e2.route = i; + for (let t3 of l) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break t; + } + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + try { + for (let t3 of r2.finally || []) a = await t3(a, e2.proxy ?? e2, ...o2) ?? a; + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + return a; +} }), "t"); +var r = /* @__PURE__ */ __name((e = "text/plain; charset=utf-8", t2) => (r2, o2 = {}) => { + if (void 0 === r2 || r2 instanceof Response) return r2; + const a = new Response(t2?.(r2) ?? r2, o2.url ? void 0 : o2); + return a.headers.set("content-type", e), a; +}, "r"); +var o = r("application/json; charset=utf-8", JSON.stringify); +var p = r("text/plain; charset=utf-8", String); +var f = r("text/html"); +var u = r("image/jpeg"); +var h = r("image/png"); +var g = r("image/webp"); +var y = /* @__PURE__ */ __name((e = {}) => { + const { origin: t2 = "*", credentials: r2 = false, allowMethods: o2 = "*", allowHeaders: a, exposeHeaders: s, maxAge: c } = e, n = /* @__PURE__ */ __name((e2) => { + const o3 = e2?.headers.get("origin"); + return true === t2 ? o3 : t2 instanceof RegExp ? t2.test(o3) ? o3 : void 0 : Array.isArray(t2) ? t2.includes(o3) ? o3 : void 0 : t2 instanceof Function ? t2(o3) : "*" == t2 && r2 ? o3 : t2; + }, "n"), l = /* @__PURE__ */ __name((e2, t3) => { + for (const [r3, o3] of Object.entries(t3)) o3 && e2.headers.append(r3, o3); + return e2; + }, "l"); + return { corsify: /* @__PURE__ */ __name((e2, t3) => e2?.headers?.get("access-control-allow-origin") || 101 == e2.status ? e2 : l(e2.clone(), { "access-control-allow-origin": n(t3), "access-control-allow-credentials": r2 }), "corsify"), preflight: /* @__PURE__ */ __name((e2) => { + if ("OPTIONS" == e2.method) { + const t3 = new Response(null, { status: 204 }); + return l(t3, { "access-control-allow-origin": n(e2), "access-control-allow-methods": o2?.join?.(",") ?? o2, "access-control-expose-headers": s?.join?.(",") ?? s, "access-control-allow-headers": a?.join?.(",") ?? a ?? e2.headers.get("access-control-request-headers"), "access-control-max-age": c, "access-control-allow-credentials": r2 }); + } + }, "preflight") }; +}, "y"); + +// functions/[[path]].ts +var { preflight, corsify } = y(); +var router = t(); +router.all("/*", preflight); +router.get("/", () => { + console.log("Health check endpoint called"); + return new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + }); +}); +router.get("/test", () => { + console.log("Test endpoint called"); + return new Response(JSON.stringify({ message: "Test successful", timestamp: Date.now() }), { + headers: { "Content-Type": "application/json" } + }); +}); +router.all("*", () => { + console.log("404 handler called"); + return new Response("Not Found", { status: 404 }); +}); +var path_default = { + fetch: /* @__PURE__ */ __name((request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + return router.handle(request, env, ctx).then(corsify).catch((err) => { + console.error("Worker error:", err); + return new Response(JSON.stringify({ + error: "Internal server error", + message: err instanceof Error ? err.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + }); + }, "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-hVAKjn/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-hVAKjn/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-NuKMFb/[[path]].js.map b/.wrangler/tmp/dev-NuKMFb/[[path]].js.map new file mode 100644 index 0000000..a79db63 --- /dev/null +++ b/.wrangler/tmp/dev-NuKMFb/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-hVAKjn/checked-fetch.js", "../../../node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-hVAKjn/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-hVAKjn/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-NuKMFb", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "const e=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of s.searchParams)c[e]=c[e]?[].concat(c[e],t):t;for(let[c,n,l,i]of t)if((c==e.method||\"ALL\"==c)&&(a=s.pathname.match(n))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,c=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of c.searchParams)n[e]=n[e]?[].concat(n[e],t):t;e:try{for(let t of r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,n,l,i]of t)if((r==e.method||\"ALL\"==r)&&(s=c.pathname.match(n))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e=\"text/plain; charset=utf-8\",t)=>(r,o={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o.url?void 0:o);return a.headers.set(\"content-type\",e),a},o=r(\"application/json; charset=utf-8\",JSON.stringify),a=e=>({400:\"Bad Request\",401:\"Unauthorized\",403:\"Forbidden\",404:\"Not Found\",500:\"Internal Server Error\"}[e]||\"Unknown Error\"),s=(e=500,t)=>{if(e instanceof Error){const{message:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,...\"object\"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},c=e=>{e.proxy=new Proxy(e.proxy??e,{get:(t,r)=>t[r]?.bind?.(e)??t[r]??t?.params?.[r]})},n=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:n=[],...l}={})=>t({before:[c,...n],catch:s,finally:[(e,...t)=>e??r(...t),e,...a],...l});class l extends Error{status;constructor(e=500,t){super(\"object\"==typeof t?t.error:t),\"object\"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=r(\"text/plain; charset=utf-8\",String),f=r(\"text/html\"),u=r(\"image/jpeg\"),h=r(\"image/png\"),g=r(\"image/webp\"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get(\"Cookie\")||\"\").split(/;\\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t=\"*\",credentials:r=!1,allowMethods:o=\"*\",allowHeaders:a,exposeHeaders:s,maxAge:c}=e,n=e=>{const o=e?.headers.get(\"origin\");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):\"*\"==t&&r?o:t},l=(e,t)=>{for(const[r,o]of Object.entries(t))o&&e.headers.append(r,o);return e};return{corsify:(e,t)=>e?.headers?.get(\"access-control-allow-origin\")||101==e.status?e:l(e.clone(),{\"access-control-allow-origin\":n(t),\"access-control-allow-credentials\":r}),preflight:e=>{if(\"OPTIONS\"==e.method){const t=new Response(null,{status:204});return l(t,{\"access-control-allow-origin\":n(e),\"access-control-allow-methods\":o?.join?.(\",\")??o,\"access-control-expose-headers\":s?.join?.(\",\")??s,\"access-control-allow-headers\":a?.join?.(\",\")??a??e.headers.get(\"access-control-request-headers\"),\"access-control-max-age\":c,\"access-control-allow-credentials\":r})}}}};export{n as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,c as withParams};\n", "import { Router, cors } from 'itty-router'\n\nconst { preflight, corsify } = cors()\n\nconst router = Router()\n\nrouter.all('/*', preflight)\n\n// \u6700\u7B80\u5355\u7684\u5065\u5EB7\u68C0\u67E5\nrouter.get('/', () => {\n console.log('Health check endpoint called')\n return new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n })\n})\n\n// \u6700\u7B80\u5355\u7684\u6D4B\u8BD5\u7AEF\u70B9\nrouter.get('/test', () => {\n console.log('Test endpoint called')\n return new Response(JSON.stringify({ message: 'Test successful', timestamp: Date.now() }), {\n headers: { 'Content-Type': 'application/json' },\n })\n})\n\n// 404 handler\nrouter.all('*', () => {\n console.log('404 handler called')\n return new Response('Not Found', { status: 404 })\n})\n\nexport default {\n fetch: (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n return router.handle(request, env, ctx).then(corsify).catch((err) => {\n console.error('Worker error:', err)\n return new Response(JSON.stringify({ \n error: 'Internal server error',\n message: err instanceof Error ? err.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n })\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-hVAKjn\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-hVAKjn\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-hVAKjn\\\\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": ";;;;AAAA,IAAM,OAAO,oBAAI,IAAI;AAErB,SAAS,SAAS,SAAS,MAAM;AAChC,QAAM,MACL,mBAAmB,MAChB,UACA,IAAI;AAAA,KACH,OAAO,YAAY,WACjB,IAAI,QAAQ,SAAS,IAAI,IACzB,SACD;AAAA,EACH;AACH,MAAI,IAAI,QAAQ,IAAI,SAAS,SAAS,IAAI,aAAa,UAAU;AAChE,QAAI,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG;AAC9B,WAAK,IAAI,IAAI,SAAS,CAAC;AACvB,cAAQ;AAAA,QACP;AAAA,KACO,IAAI,SAAS,CAAC;AAAA;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AACD;AAnBS;AAqBT,WAAW,QAAQ,IAAI,MAAM,WAAW,OAAO;AAAA,EAC9C,MAAM,QAAQ,SAAS,UAAU;AAChC,UAAM,CAAC,SAAS,IAAI,IAAI;AACxB,aAAS,SAAS,IAAI;AACtB,WAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;AAAA,EAC/C;AACD,CAAC;;;AC7BD,IAAqoB,IAAE,wBAAC,EAAC,MAAK,IAAE,IAAG,QAAOA,KAAE,CAAC,GAAE,GAAGC,GAAC,IAAE,CAAC,OAAK,EAAC,WAAU,IAAI,MAAM,CAAC,GAAE,EAAC,KAAI,wBAACA,IAAEC,IAAE,GAAE,MAAI,CAACD,OAAK,MAAID,GAAE,KAAK,CAACE,GAAE,cAAc,GAAE,OAAO,KAAK,KAAG,IAAED,IAAG,QAAQ,cAAa,IAAI,GAAG,QAAQ,qBAAoB,cAAc,EAAE,QAAQ,mBAAkB,qBAAqB,EAAE,QAAQ,OAAM,KAAK,EAAE,QAAQ,YAAW,SAAS,CAAC,KAAK,GAAE,GAAE,CAAC,CAAC,KAAG,GAA5P,OAA6P,CAAC,GAAE,QAAOD,IAAE,GAAGC,IAAE,MAAM,MAAME,OAAKD,IAAE;AAAC,MAAI,GAAE,GAAE,IAAE,IAAI,IAAIC,GAAE,GAAG,GAAE,IAAEA,GAAE,QAAM,EAAC,WAAU,KAAI;AAAE,WAAO,CAACA,IAAEH,EAAC,KAAI,EAAE,aAAa,GAAEG,EAAC,IAAE,EAAEA,EAAC,IAAE,CAAC,EAAE,OAAO,EAAEA,EAAC,GAAEH,EAAC,IAAEA;AAAE,IAAE,KAAG;AAAC,aAAQA,MAAKC,GAAE,UAAQ,CAAC,EAAE,KAAG,SAAO,IAAE,MAAMD,GAAEG,GAAE,SAAOA,IAAE,GAAGD,EAAC,GAAG,OAAM;AAAE,MAAE,UAAO,CAACD,IAAEG,IAAE,GAAE,CAAC,KAAIJ,GAAE,MAAIC,MAAGE,GAAE,UAAQ,SAAOF,QAAK,IAAE,EAAE,SAAS,MAAMG,EAAC,IAAG;AAAC,MAAAD,GAAE,SAAO,EAAE,UAAQ,CAAC,GAAEA,GAAE,QAAM;AAAE,eAAQH,MAAK,EAAE,KAAG,SAAO,IAAE,MAAMA,GAAEG,GAAE,SAAOA,IAAE,GAAGD,EAAC,GAAG,OAAM;AAAA,IAAC;AAAA,EAAC,SAAOF,IAAE;AAAC,QAAG,CAACC,GAAE,MAAM,OAAMD;AAAE,QAAE,MAAMC,GAAE,MAAMD,IAAEG,GAAE,SAAOA,IAAE,GAAGD,EAAC;AAAA,EAAC;AAAC,MAAG;AAAC,aAAQF,MAAKC,GAAE,WAAS,CAAC,EAAE,KAAE,MAAMD,GAAE,GAAEG,GAAE,SAAOA,IAAE,GAAGD,EAAC,KAAG;AAAA,EAAC,SAAOF,IAAE;AAAC,QAAG,CAACC,GAAE,MAAM,OAAMD;AAAE,QAAE,MAAMC,GAAE,MAAMD,IAAEG,GAAE,SAAOA,IAAE,GAAGD,EAAC;AAAA,EAAC;AAAC,SAAO;AAAC,EAAC,IAAn5B;AAAvoB,IAA6hD,IAAE,wBAAC,IAAE,6BAA4BF,OAAI,CAACC,IAAEC,KAAE,CAAC,MAAI;AAAC,MAAG,WAASD,MAAGA,cAAa,SAAS,QAAOA;AAAE,QAAM,IAAE,IAAI,SAASD,KAAIC,EAAC,KAAGA,IAAEC,GAAE,MAAI,SAAOA,EAAC;AAAE,SAAO,EAAE,QAAQ,IAAI,gBAAe,CAAC,GAAE;AAAC,GAAnL;AAA/hD,IAAotD,IAAE,EAAE,mCAAkC,KAAK,SAAS;AAA0qB,IAAkD,IAAE,EAAE,6BAA4B,MAAM;AAAxF,IAA0F,IAAE,EAAE,WAAW;AAAzG,IAA2G,IAAE,EAAE,YAAY;AAA3H,IAA6H,IAAE,EAAE,WAAW;AAA5I,IAA8I,IAAE,EAAE,YAAY;AAA9J,IAAmZ,IAAE,wBAAC,IAAE,CAAC,MAAI;AAAC,QAAK,EAAC,QAAOG,KAAE,KAAI,aAAYC,KAAE,OAAG,cAAaC,KAAE,KAAI,cAAa,GAAE,eAAc,GAAE,QAAO,EAAC,IAAE,GAAE,IAAE,wBAAAC,OAAG;AAAC,UAAMD,KAAEC,IAAG,QAAQ,IAAI,QAAQ;AAAE,WAAM,SAAKH,KAAEE,KAAEF,cAAa,SAAOA,GAAE,KAAKE,EAAC,IAAEA,KAAE,SAAO,MAAM,QAAQF,EAAC,IAAEA,GAAE,SAASE,EAAC,IAAEA,KAAE,SAAOF,cAAa,WAASA,GAAEE,EAAC,IAAE,OAAKF,MAAGC,KAAEC,KAAEF;AAAA,EAAC,GAA3K,MAA6K,IAAE,wBAACG,IAAEH,OAAI;AAAC,eAAS,CAACC,IAAEC,EAAC,KAAI,OAAO,QAAQF,EAAC,EAAE,CAAAE,MAAGC,GAAE,QAAQ,OAAOF,IAAEC,EAAC;AAAE,WAAOC;AAAA,EAAC,GAA5E;AAA8E,SAAM,EAAC,SAAQ,wBAACA,IAAEH,OAAIG,IAAG,SAAS,IAAI,6BAA6B,KAAG,OAAKA,GAAE,SAAOA,KAAE,EAAEA,GAAE,MAAM,GAAE,EAAC,+BAA8B,EAAEH,EAAC,GAAE,oCAAmCC,GAAC,CAAC,GAA5J,YAA8J,WAAU,wBAAAE,OAAG;AAAC,QAAG,aAAWA,GAAE,QAAO;AAAC,YAAMH,KAAE,IAAI,SAAS,MAAK,EAAC,QAAO,IAAG,CAAC;AAAE,aAAO,EAAEA,IAAE,EAAC,+BAA8B,EAAEG,EAAC,GAAE,gCAA+BD,IAAG,OAAO,GAAG,KAAGA,IAAE,iCAAgC,GAAG,OAAO,GAAG,KAAG,GAAE,gCAA+B,GAAG,OAAO,GAAG,KAAG,KAAGC,GAAE,QAAQ,IAAI,gCAAgC,GAAE,0BAAyB,GAAE,oCAAmCF,GAAC,CAAC;AAAA,IAAC;AAAA,EAAC,GAA1X,aAA2X;AAAC,GAA75B;;;ACEv0F,IAAM,EAAE,WAAW,QAAQ,IAAI,EAAK;AAEpC,IAAM,SAAS,EAAO;AAEtB,OAAO,IAAI,MAAM,SAAS;AAG1B,OAAO,IAAI,KAAK,MAAM;AACpB,UAAQ,IAAI,8BAA8B;AAC1C,SAAO,IAAI,SAAS,gCAAgC;AAAA,IAClD,SAAS,EAAE,gBAAgB,aAAa;AAAA,EAC1C,CAAC;AACH,CAAC;AAGD,OAAO,IAAI,SAAS,MAAM;AACxB,UAAQ,IAAI,sBAAsB;AAClC,SAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,mBAAmB,WAAW,KAAK,IAAI,EAAE,CAAC,GAAG;AAAA,IACzF,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,EAChD,CAAC;AACH,CAAC;AAGD,OAAO,IAAI,KAAK,MAAM;AACpB,UAAQ,IAAI,oBAAoB;AAChC,SAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAClD,CAAC;AAED,IAAO,eAAQ;AAAA,EACb,OAAO,wBAAC,SAAkB,KAAU,QAAa;AAC/C,YAAQ,IAAI,wBAAwB,QAAQ,QAAQ,QAAQ,GAAG;AAC/D,WAAO,OAAO,OAAO,SAAS,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,CAAC,QAAQ;AACnE,cAAQ,MAAM,iBAAiB,GAAG;AAClC,aAAO,IAAI,SAAS,KAAK,UAAU;AAAA,QACjC,OAAO;AAAA,QACP,SAAS,eAAe,QAAQ,IAAI,UAAU;AAAA,MAChD,CAAC,GAAG;AAAA,QACF,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAChD,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAZO;AAaT;;;AC1CA,IAAM,YAAwB,8BAAO,SAAS,KAAK,MAAM,kBAAkB;AAC1E,MAAI;AACH,WAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAAA,EAC7C,UAAE;AACD,QAAI;AACH,UAAI,QAAQ,SAAS,QAAQ,CAAC,QAAQ,UAAU;AAC/C,cAAM,SAAS,QAAQ,KAAK,UAAU;AACtC,eAAO,EAAE,MAAM,OAAO,KAAK,GAAG,MAAM;AAAA,QAAC;AAAA,MACtC;AAAA,IACD,SAAS,GAAG;AACX,cAAQ,MAAM,4CAA4C,CAAC;AAAA,IAC5D;AAAA,EACD;AACD,GAb8B;AAe9B,IAAO,6CAAQ;;;ACRf,SAAS,YAAY,GAAmB;AACvC,SAAO;AAAA,IACN,MAAM,GAAG;AAAA,IACT,SAAS,GAAG,WAAW,OAAO,CAAC;AAAA,IAC/B,OAAO,GAAG;AAAA,IACV,OAAO,GAAG,UAAU,SAAY,SAAY,YAAY,EAAE,KAAK;AAAA,EAChE;AACD;AAPS;AAUT,IAAM,YAAwB,8BAAO,SAAS,KAAK,MAAM,kBAAkB;AAC1E,MAAI;AACH,WAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAAA,EAC7C,SAAS,GAAQ;AAChB,UAAM,QAAQ,YAAY,CAAC;AAC3B,WAAO,SAAS,KAAK,OAAO;AAAA,MAC3B,QAAQ;AAAA,MACR,SAAS,EAAE,+BAA+B,OAAO;AAAA,IAClD,CAAC;AAAA,EACF;AACD,GAV8B;AAY9B,IAAO,2CAAQ;;;ACzBJ,IAAM,mCAAmC;AAAA,EAE9B;AAAA,EAAyB;AAC3C;AACA,IAAO,sCAAQ;;;ACcnB,IAAM,wBAAsC,CAAC;AAKtC,SAAS,uBAAuB,MAAqC;AAC3E,wBAAsB,KAAK,GAAG,KAAK,KAAK,CAAC;AAC1C;AAFgB;AAShB,SAAS,uBACR,SACA,KACA,KACA,UACA,iBACsB;AACtB,QAAM,CAAC,MAAM,GAAG,IAAI,IAAI;AACxB,QAAM,gBAAmC;AAAA,IACxC;AAAA,IACA,KAAK,YAAY,QAAQ;AACxB,aAAO,uBAAuB,YAAY,QAAQ,KAAK,UAAU,IAAI;AAAA,IACtE;AAAA,EACD;AACA,SAAO,KAAK,SAAS,KAAK,KAAK,aAAa;AAC7C;AAfS;AAiBF,SAAS,kBACf,SACA,KACA,KACA,UACA,iBACsB;AACtB,SAAO,uBAAuB,SAAS,KAAK,KAAK,UAAU;AAAA,IAC1D,GAAG;AAAA,IACH;AAAA,EACD,CAAC;AACF;AAXgB;;;AC3ChB,IAAM,iCAAN,MAAM,gCAA8D;AAAA,EAGnE,YACU,eACA,MACT,SACC;AAHQ;AACA;AAGT,SAAK,WAAW;AAAA,EACjB;AAAA,EArBD,OAYoE;AAAA;AAAA;AAAA,EAC1D;AAAA,EAUT,UAAU;AACT,QAAI,EAAE,gBAAgB,kCAAiC;AACtD,YAAM,IAAI,UAAU,oBAAoB;AAAA,IACzC;AAEA,SAAK,SAAS;AAAA,EACf;AACD;AAEA,SAAS,oBAAoB,QAA0C;AAEtE,MACC,qCAAqC,UACrC,iCAAiC,WAAW,GAC3C;AACD,WAAO;AAAA,EACR;AAEA,aAAW,cAAc,kCAAkC;AAC1D,wBAAoB,UAAU;AAAA,EAC/B;AAEA,QAAM,kBAA+C,gCACpD,SACA,KACA,KACC;AACD,QAAI,OAAO,UAAU,QAAW;AAC/B,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC9D;AACA,WAAO,OAAO,MAAM,SAAS,KAAK,GAAG;AAAA,EACtC,GATqD;AAWrD,SAAO;AAAA,IACN,GAAG;AAAA,IACH,MAAM,SAAS,KAAK,KAAK;AACxB,YAAM,aAAyB,gCAAU,MAAM,MAAM;AACpD,YAAI,SAAS,eAAe,OAAO,cAAc,QAAW;AAC3D,gBAAM,aAAa,IAAI;AAAA,YACtB,KAAK,IAAI;AAAA,YACT,KAAK,QAAQ;AAAA,YACb,MAAM;AAAA,YAAC;AAAA,UACR;AACA,iBAAO,OAAO,UAAU,YAAY,KAAK,GAAG;AAAA,QAC7C;AAAA,MACD,GAT+B;AAU/B,aAAO,kBAAkB,SAAS,KAAK,KAAK,YAAY,eAAe;AAAA,IACxE;AAAA,EACD;AACD;AAxCS;AA0CT,SAAS,qBACR,OAC8B;AAE9B,MACC,qCAAqC,UACrC,iCAAiC,WAAW,GAC3C;AACD,WAAO;AAAA,EACR;AAEA,aAAW,cAAc,kCAAkC;AAC1D,wBAAoB,UAAU;AAAA,EAC/B;AAGA,SAAO,cAAc,MAAM;AAAA,IAC1B,mBAAyE,wBACxE,SACA,KACA,QACI;AACJ,WAAK,MAAM;AACX,WAAK,MAAM;AACX,UAAI,MAAM,UAAU,QAAW;AAC9B,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,aAAO,MAAM,MAAM,OAAO;AAAA,IAC3B,GAXyE;AAAA,IAazE,cAA0B,wBAAC,MAAM,SAAS;AACzC,UAAI,SAAS,eAAe,MAAM,cAAc,QAAW;AAC1D,cAAM,aAAa,IAAI;AAAA,UACtB,KAAK,IAAI;AAAA,UACT,KAAK,QAAQ;AAAA,UACb,MAAM;AAAA,UAAC;AAAA,QACR;AACA,eAAO,MAAM,UAAU,UAAU;AAAA,MAClC;AAAA,IACD,GAT0B;AAAA,IAW1B,MAAM,SAAwD;AAC7D,aAAO;AAAA,QACN;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,IACD;AAAA,EACD;AACD;AAnDS;AAqDT,IAAI;AACJ,IAAI,OAAO,wCAAU,UAAU;AAC9B,kBAAgB,oBAAoB,mCAAK;AAC1C,WAAW,OAAO,wCAAU,YAAY;AACvC,kBAAgB,qBAAqB,mCAAK;AAC3C;AACA,IAAO,kCAAQ;", + "names": ["t", "r", "o", "e", "n", "t", "r", "o", "e"] +} diff --git a/.wrangler/tmp/dev-XWclmn/[[path]].js b/.wrangler/tmp/dev-XWclmn/[[path]].js new file mode 100644 index 0000000..60c531c --- /dev/null +++ b/.wrangler/tmp/dev-XWclmn/[[path]].js @@ -0,0 +1,440 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-d5bXFA/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs +var t = /* @__PURE__ */ __name(({ base: e = "", routes: t2 = [], ...r2 } = {}) => ({ __proto__: new Proxy({}, { get: /* @__PURE__ */ __name((r3, o2, a, s) => (r4, ...c) => t2.push([o2.toUpperCase?.(), RegExp(`^${(s = (e + r4).replace(/\/+(\/|$)/g, "$1")).replace(/(\/?\.?):(\w+)\+/g, "($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g, "($1(?<$2>[^$1/]+?))").replace(/\./g, "\\.").replace(/(\/?)\*/g, "($1.*)?")}/*$`), c, s]) && a, "get") }), routes: t2, ...r2, async fetch(e2, ...o2) { + let a, s, c = new URL(e2.url), n = e2.query = { __proto__: null }; + for (let [e3, t3] of c.searchParams) n[e3] = n[e3] ? [].concat(n[e3], t3) : t3; + e: try { + for (let t3 of r2.before || []) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break e; + t: for (let [r3, n2, l, i] of t2) if ((r3 == e2.method || "ALL" == r3) && (s = c.pathname.match(n2))) { + e2.params = s.groups || {}, e2.route = i; + for (let t3 of l) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break t; + } + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + try { + for (let t3 of r2.finally || []) a = await t3(a, e2.proxy ?? e2, ...o2) ?? a; + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + return a; +} }), "t"); +var r = /* @__PURE__ */ __name((e = "text/plain; charset=utf-8", t2) => (r2, o2 = {}) => { + if (void 0 === r2 || r2 instanceof Response) return r2; + const a = new Response(t2?.(r2) ?? r2, o2.url ? void 0 : o2); + return a.headers.set("content-type", e), a; +}, "r"); +var o = r("application/json; charset=utf-8", JSON.stringify); +var p = r("text/plain; charset=utf-8", String); +var f = r("text/html"); +var u = r("image/jpeg"); +var h = r("image/png"); +var g = r("image/webp"); +var y = /* @__PURE__ */ __name((e = {}) => { + const { origin: t2 = "*", credentials: r2 = false, allowMethods: o2 = "*", allowHeaders: a, exposeHeaders: s, maxAge: c } = e, n = /* @__PURE__ */ __name((e2) => { + const o3 = e2?.headers.get("origin"); + return true === t2 ? o3 : t2 instanceof RegExp ? t2.test(o3) ? o3 : void 0 : Array.isArray(t2) ? t2.includes(o3) ? o3 : void 0 : t2 instanceof Function ? t2(o3) : "*" == t2 && r2 ? o3 : t2; + }, "n"), l = /* @__PURE__ */ __name((e2, t3) => { + for (const [r3, o3] of Object.entries(t3)) o3 && e2.headers.append(r3, o3); + return e2; + }, "l"); + return { corsify: /* @__PURE__ */ __name((e2, t3) => e2?.headers?.get("access-control-allow-origin") || 101 == e2.status ? e2 : l(e2.clone(), { "access-control-allow-origin": n(t3), "access-control-allow-credentials": r2 }), "corsify"), preflight: /* @__PURE__ */ __name((e2) => { + if ("OPTIONS" == e2.method) { + const t3 = new Response(null, { status: 204 }); + return l(t3, { "access-control-allow-origin": n(e2), "access-control-allow-methods": o2?.join?.(",") ?? o2, "access-control-expose-headers": s?.join?.(",") ?? s, "access-control-allow-headers": a?.join?.(",") ?? a ?? e2.headers.get("access-control-request-headers"), "access-control-max-age": c, "access-control-allow-credentials": r2 }); + } + }, "preflight") }; +}, "y"); + +// functions/[[path]].ts +var { preflight, corsify } = y(); +var router = t(); +router.all("/*", preflight); +router.all("/(ajax|rpc)/:path+", async (req, env) => { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(req.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: req.method, + headers, + body: req.body + }); + return fetch(newReq); +}); +router.all("/(~|-)/:path+", async (req, env) => { + const url = new URL(req.url); + const prefix = url.pathname.split("/")[1]; + switch (prefix) { + case "-": + url.hostname = "i.pximg.net"; + break; + case "~": + url.hostname = "s.pximg.net"; + break; + default: + return new Response("Invalid request", { status: 400 }); + } + url.pathname = url.pathname.substring(prefix.length + 1); + const headers = new Headers(); + const proxyHeaders = [ + "accept", + "accept-encoding", + "accept-language", + "range", + "if-range", + "if-none-match", + "if-modified-since", + "cache-control" + ]; + for (const h2 of proxyHeaders) { + if (req.headers.has(h2)) { + headers.set(h2, req.headers.get(h2)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + return fetch(newReq); +}); +router.all("/api/illust/random", async (req, env) => { + try { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + url.pathname = "/ajax/illust/discovery"; + const requestImage = (req.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + url.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + url.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(req.headers); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + headers + }); + const res = await fetch(newReq); + if (!res.ok) { + throw new Error(`Pixiv API returned ${res.status}`); + } + const data = await res.json(); + const illusts = (data.illusts ?? []).filter( + (value) => Object.keys(value).includes("id") + ); + if (illusts.length === 0) { + return new Response(JSON.stringify([]), { + headers: { "Content-Type": "application/json" } + }); + } + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + const updateDate = new Date(value.updateDate); + const year = updateDate.getFullYear(); + const month = String(updateDate.getMonth() + 1).padStart(2, "0"); + const day = String(updateDate.getDate()).padStart(2, "0"); + const hour = String(updateDate.getHours()).padStart(2, "0"); + const minute = String(updateDate.getMinutes()).padStart(2, "0"); + const second = String(updateDate.getSeconds()).padStart(2, "0"); + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } catch (error) { + console.error("Error formatting date for illust:", value.id, error); + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg` + }; + } + }); + if (requestImage) { + return new Response(null, { status: 302, headers: { Location: illusts[0].urls.regular } }); + } + return new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + }); + } catch (error) { + console.error("Error in random API:", error); + return new Response(JSON.stringify({ error: "Internal server error" }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + } +}); +router.all("/api/user", async (req, env) => { + const token = req.headers.get("cookie")?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get("token"); + if (!token) { + return new Response(JSON.stringify({ message: "\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5" }), { status: 403, headers: { "Content-Type": "application/json" } }); + } + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + url.pathname = "/"; + const headers = new Headers(req.headers); + headers.set("cookie", `PHPSESSID=${token}`); + const newReq = new Request(url.toString(), { + headers + }); + const res = await fetch(newReq); + const text = await res.text(); + let meta = null; + class MetaHandler { + constructor(type) { + this.type = type; + } + static { + __name(this, "MetaHandler"); + } + text(chunk) { + try { + if (this.type === "legacy") { + const data = JSON.parse(chunk.text); + meta = { + userData: data.userData, + token: data.token || "" + }; + } else { + const nextData = JSON.parse(chunk.text); + const perloadState = JSON.parse( + nextData?.props?.pageProps?.serverSerializedPreloadedState + ); + meta = { + userData: perloadState?.userData?.self, + token: perloadState?.api?.token || "" + }; + } + } catch (e) { + console.error("Error parsing meta", e); + } + } + } + const rewriter = new HTMLRewriter().on('meta[name="global-data"]', new MetaHandler("legacy")).on("script#__NEXT_DATA__", new MetaHandler("next")); + await rewriter.transform(new Response(text)).text(); + if (!meta || !meta.userData) { + return new Response(JSON.stringify({ message: "\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001" }), { status: 401, headers: { "Content-Type": "application/json" } }); + } + const responseHeaders = new Headers({ + "cache-control": "no-cache", + "set-cookie": `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`, + "Content-Type": "application/json" + }); + return new Response(JSON.stringify(meta), { headers: responseHeaders }); +}); +var path_default = { + fetch: /* @__PURE__ */ __name((req, env, ctx) => router.handle(req, env, ctx).then(corsify).catch((err) => { + console.error(err); + return new Response("Internal Server Error", { status: 500 }); + }), "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-d5bXFA/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-d5bXFA/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-XWclmn/[[path]].js.map b/.wrangler/tmp/dev-XWclmn/[[path]].js.map new file mode 100644 index 0000000..28bf48b --- /dev/null +++ b/.wrangler/tmp/dev-XWclmn/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-d5bXFA/checked-fetch.js", "../../../node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-d5bXFA/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-d5bXFA/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-XWclmn", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "const e=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of s.searchParams)c[e]=c[e]?[].concat(c[e],t):t;for(let[c,n,l,i]of t)if((c==e.method||\"ALL\"==c)&&(a=s.pathname.match(n))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,c=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of c.searchParams)n[e]=n[e]?[].concat(n[e],t):t;e:try{for(let t of r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,n,l,i]of t)if((r==e.method||\"ALL\"==r)&&(s=c.pathname.match(n))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e=\"text/plain; charset=utf-8\",t)=>(r,o={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o.url?void 0:o);return a.headers.set(\"content-type\",e),a},o=r(\"application/json; charset=utf-8\",JSON.stringify),a=e=>({400:\"Bad Request\",401:\"Unauthorized\",403:\"Forbidden\",404:\"Not Found\",500:\"Internal Server Error\"}[e]||\"Unknown Error\"),s=(e=500,t)=>{if(e instanceof Error){const{message:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,...\"object\"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},c=e=>{e.proxy=new Proxy(e.proxy??e,{get:(t,r)=>t[r]?.bind?.(e)??t[r]??t?.params?.[r]})},n=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:n=[],...l}={})=>t({before:[c,...n],catch:s,finally:[(e,...t)=>e??r(...t),e,...a],...l});class l extends Error{status;constructor(e=500,t){super(\"object\"==typeof t?t.error:t),\"object\"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=r(\"text/plain; charset=utf-8\",String),f=r(\"text/html\"),u=r(\"image/jpeg\"),h=r(\"image/png\"),g=r(\"image/webp\"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get(\"Cookie\")||\"\").split(/;\\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t=\"*\",credentials:r=!1,allowMethods:o=\"*\",allowHeaders:a,exposeHeaders:s,maxAge:c}=e,n=e=>{const o=e?.headers.get(\"origin\");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):\"*\"==t&&r?o:t},l=(e,t)=>{for(const[r,o]of Object.entries(t))o&&e.headers.append(r,o);return e};return{corsify:(e,t)=>e?.headers?.get(\"access-control-allow-origin\")||101==e.status?e:l(e.clone(),{\"access-control-allow-origin\":n(t),\"access-control-allow-credentials\":r}),preflight:e=>{if(\"OPTIONS\"==e.method){const t=new Response(null,{status:204});return l(t,{\"access-control-allow-origin\":n(e),\"access-control-allow-methods\":o?.join?.(\",\")??o,\"access-control-expose-headers\":s?.join?.(\",\")??s,\"access-control-allow-headers\":a?.join?.(\",\")??a??e.headers.get(\"access-control-request-headers\"),\"access-control-max-age\":c,\"access-control-allow-credentials\":r})}}}};export{n as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,c as withParams};\n", "import { Router, cors } from 'itty-router'\n\nconst { preflight, corsify } = cors()\n\nconst router = Router()\n\nrouter.all('/*', preflight)\n\n// Generic proxy\nrouter.all('/(ajax|rpc)/:path+', async (req, env) => {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(req.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: req.method,\n headers,\n body: req.body,\n })\n\n return fetch(newReq)\n})\n\n// Image proxy\nrouter.all('/(~|-)/:path+', async (req, env) => {\n const url = new URL(req.url)\n const prefix = url.pathname.split('/')[1]\n\n switch (prefix) {\n case '-':\n url.hostname = 'i.pximg.net'\n break\n case '~':\n url.hostname = 's.pximg.net'\n break\n default:\n return new Response('Invalid request', { status: 400 })\n }\n\n url.pathname = url.pathname.substring(prefix.length + 1)\n\n const headers = new Headers()\n const proxyHeaders = [\n 'accept',\n 'accept-encoding',\n 'accept-language',\n 'range',\n 'if-range',\n 'if-none-match',\n 'if-modified-since',\n 'cache-control',\n ]\n\n for (const h of proxyHeaders) {\n if (req.headers.has(h)) {\n headers.set(h, req.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n return fetch(newReq)\n})\n\nrouter.all('/api/illust/random', async (req, env) => {\n try {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n url.pathname = '/ajax/illust/discovery'\n\n const requestImage =\n (req.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n url.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n url.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers(req.headers)\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const res = await fetch(newReq)\n if (!res.ok) {\n throw new Error(`Pixiv API returned ${res.status}`)\n }\n \n const data = await res.json()\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n Object.keys(value).includes('id')\n )\n\n if (illusts.length === 0) {\n return new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n illusts.forEach((value: any) => {\n try {\n // \u7B80\u5316\u65E5\u671F\u5904\u7406\uFF0C\u907F\u514D\u590D\u6742\u7684\u65F6\u533A\u8F6C\u6362\n const updateDate = new Date(value.updateDate)\n const year = updateDate.getFullYear()\n const month = String(updateDate.getMonth() + 1).padStart(2, '0')\n const day = String(updateDate.getDate()).padStart(2, '0')\n const hour = String(updateDate.getHours()).padStart(2, '0')\n const minute = String(updateDate.getMinutes()).padStart(2, '0')\n const second = String(updateDate.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } catch (error) {\n console.error('Error formatting date for illust:', value.id, error)\n // Fallback URLs without date formatting\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg`,\n }\n }\n })\n\n if (requestImage) {\n return new Response(null, { status: 302, headers: { Location: illusts[0].urls.regular } })\n }\n\n return new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n })\n } catch (error) {\n console.error('Error in random API:', error)\n return new Response(JSON.stringify({ error: 'Internal server error' }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n})\n\nrouter.all('/api/user', async (req, env) => {\n const token = req.headers.get('cookie')?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get('token')\n if (!token) {\n return new Response(JSON.stringify({ message: '\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5' }), { status: 403, headers: { 'Content-Type': 'application/json' } })\n }\n\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n url.pathname = '/'\n\n const headers = new Headers(req.headers)\n headers.set('cookie', `PHPSESSID=${token}`)\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const res = await fetch(newReq)\n const text = await res.text()\n\n let meta: { userData: any; token: string } | null = null\n\n class MetaHandler {\n constructor(private type: 'legacy' | 'next') {}\n text(chunk: Text) {\n try {\n if (this.type === 'legacy') {\n const data = JSON.parse(chunk.text)\n meta = {\n userData: data.userData,\n token: data.token || '',\n }\n } else {\n const nextData = JSON.parse(chunk.text)\n const perloadState = JSON.parse(\n nextData?.props?.pageProps?.serverSerializedPreloadedState\n )\n meta = {\n userData: perloadState?.userData?.self,\n token: perloadState?.api?.token || '',\n }\n }\n } catch (e) {\n console.error('Error parsing meta', e)\n }\n }\n }\n\n const rewriter = new HTMLRewriter()\n .on('meta[name=\"global-data\"]', new MetaHandler('legacy'))\n .on('script#__NEXT_DATA__', new MetaHandler('next'))\n\n await rewriter.transform(new Response(text)).text()\n\n if (!meta || !meta.userData) {\n return new Response(JSON.stringify({ message: '\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001' }), { status: 401, headers: { 'Content-Type': 'application/json' } })\n }\n\n const responseHeaders = new Headers({\n 'cache-control': 'no-cache',\n 'set-cookie': `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`,\n 'Content-Type': 'application/json',\n })\n\n return new Response(JSON.stringify(meta), { headers: responseHeaders })\n})\n\nexport default {\n fetch: (req: Request, env: any, ctx: any) =>\n router\n .handle(req, env, ctx)\n .then(corsify)\n .catch((err) => {\n console.error(err)\n return new Response('Internal Server Error', { status: 500 })\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-d5bXFA\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-d5bXFA\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-d5bXFA\\\\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": ["t", "r", "o", "e", "n", "t", "r", "o", "e", "h"] +} diff --git a/.wrangler/tmp/dev-bqo4cO/[[path]].js b/.wrangler/tmp/dev-bqo4cO/[[path]].js new file mode 100644 index 0000000..33f776e --- /dev/null +++ b/.wrangler/tmp/dev-bqo4cO/[[path]].js @@ -0,0 +1,433 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-mYQ48C/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs +var t = /* @__PURE__ */ __name(({ base: e = "", routes: t2 = [], ...r2 } = {}) => ({ __proto__: new Proxy({}, { get: /* @__PURE__ */ __name((r3, o2, a, s) => (r4, ...c) => t2.push([o2.toUpperCase?.(), RegExp(`^${(s = (e + r4).replace(/\/+(\/|$)/g, "$1")).replace(/(\/?\.?):(\w+)\+/g, "($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g, "($1(?<$2>[^$1/]+?))").replace(/\./g, "\\.").replace(/(\/?)\*/g, "($1.*)?")}/*$`), c, s]) && a, "get") }), routes: t2, ...r2, async fetch(e2, ...o2) { + let a, s, c = new URL(e2.url), n = e2.query = { __proto__: null }; + for (let [e3, t3] of c.searchParams) n[e3] = n[e3] ? [].concat(n[e3], t3) : t3; + e: try { + for (let t3 of r2.before || []) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break e; + t: for (let [r3, n2, l, i] of t2) if ((r3 == e2.method || "ALL" == r3) && (s = c.pathname.match(n2))) { + e2.params = s.groups || {}, e2.route = i; + for (let t3 of l) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break t; + } + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + try { + for (let t3 of r2.finally || []) a = await t3(a, e2.proxy ?? e2, ...o2) ?? a; + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + return a; +} }), "t"); +var r = /* @__PURE__ */ __name((e = "text/plain; charset=utf-8", t2) => (r2, o2 = {}) => { + if (void 0 === r2 || r2 instanceof Response) return r2; + const a = new Response(t2?.(r2) ?? r2, o2.url ? void 0 : o2); + return a.headers.set("content-type", e), a; +}, "r"); +var o = r("application/json; charset=utf-8", JSON.stringify); +var p = r("text/plain; charset=utf-8", String); +var f = r("text/html"); +var u = r("image/jpeg"); +var h = r("image/png"); +var g = r("image/webp"); +var y = /* @__PURE__ */ __name((e = {}) => { + const { origin: t2 = "*", credentials: r2 = false, allowMethods: o2 = "*", allowHeaders: a, exposeHeaders: s, maxAge: c } = e, n = /* @__PURE__ */ __name((e2) => { + const o3 = e2?.headers.get("origin"); + return true === t2 ? o3 : t2 instanceof RegExp ? t2.test(o3) ? o3 : void 0 : Array.isArray(t2) ? t2.includes(o3) ? o3 : void 0 : t2 instanceof Function ? t2(o3) : "*" == t2 && r2 ? o3 : t2; + }, "n"), l = /* @__PURE__ */ __name((e2, t3) => { + for (const [r3, o3] of Object.entries(t3)) o3 && e2.headers.append(r3, o3); + return e2; + }, "l"); + return { corsify: /* @__PURE__ */ __name((e2, t3) => e2?.headers?.get("access-control-allow-origin") || 101 == e2.status ? e2 : l(e2.clone(), { "access-control-allow-origin": n(t3), "access-control-allow-credentials": r2 }), "corsify"), preflight: /* @__PURE__ */ __name((e2) => { + if ("OPTIONS" == e2.method) { + const t3 = new Response(null, { status: 204 }); + return l(t3, { "access-control-allow-origin": n(e2), "access-control-allow-methods": o2?.join?.(",") ?? o2, "access-control-expose-headers": s?.join?.(",") ?? s, "access-control-allow-headers": a?.join?.(",") ?? a ?? e2.headers.get("access-control-request-headers"), "access-control-max-age": c, "access-control-allow-credentials": r2 }); + } + }, "preflight") }; +}, "y"); + +// functions/[[path]].ts +var { preflight, corsify } = y(); +var router = t(); +router.all("/*", preflight); +router.get("/", () => { + return new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + }); +}); +router.all("/(ajax|rpc)/:path+", async (req, env) => { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(req.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: req.method, + headers, + body: req.body + }); + return fetch(newReq); +}); +router.all("/(~|-)/:path+", async (req, env) => { + const url = new URL(req.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + url.hostname = "i.pximg.net"; + } else { + url.hostname = "s.pximg.net"; + } + url.pathname = "/" + path; + const headers = new Headers(); + for (const h2 of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (req.headers.get(h2)) { + headers.set(h2, req.headers.get(h2)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + return fetch(newReq); +}); +router.all("/api/illust/random", async (req, env) => { + try { + const url = new URL(req.url); + const requestImage = (req.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const pixivUrl = new URL("https://www.pixiv.net/ajax/illust/discovery"); + pixivUrl.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + pixivUrl.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + }); + } + const data = await response.json(); + const illusts = (data.illusts ?? []).filter( + (value) => value && typeof value === "object" && value.id + ); + if (illusts.length === 0) { + return new Response(JSON.stringify([]), { + headers: { "Content-Type": "application/json" } + }); + } + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + if (value.updateDate) { + const date = new Date(value.updateDate); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + const hour = String(date.getHours()).padStart(2, "0"); + const minute = String(date.getMinutes()).padStart(2, "0"); + const second = String(date.getSeconds()).padStart(2, "0"); + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } else { + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + } catch (error) { + console.error("Error processing illust:", value.id, error); + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + }); + if (requestImage && illusts[0]?.urls?.regular) { + return new Response(null, { + status: 302, + headers: { Location: illusts[0].urls.regular } + }); + } + return new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + }); + } catch (error) { + console.error("Error in random API:", error); + return new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + } +}); +router.all("/api/user", async (req, env) => { + try { + const url = new URL(req.url); + const userId = url.searchParams.get("id"); + if (!userId) { + return new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + }); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + }); + } + const data = await response.json(); + return new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + }); + } catch (error) { + console.error("Error in user API:", error); + return new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + } +}); +router.all("*", () => new Response("Not Found", { status: 404 })); +var path_default = { + fetch: /* @__PURE__ */ __name((request, env, ctx) => router.handle(request, env, ctx).then(corsify).catch((err) => { + console.error("Worker error:", err); + return new Response(JSON.stringify({ + error: "Internal server error", + message: err instanceof Error ? err.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + }), "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-mYQ48C/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-mYQ48C/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-bqo4cO/[[path]].js.map b/.wrangler/tmp/dev-bqo4cO/[[path]].js.map new file mode 100644 index 0000000..497d0b4 --- /dev/null +++ b/.wrangler/tmp/dev-bqo4cO/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-mYQ48C/checked-fetch.js", "../../../node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-mYQ48C/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-mYQ48C/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-bqo4cO", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "const e=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of s.searchParams)c[e]=c[e]?[].concat(c[e],t):t;for(let[c,n,l,i]of t)if((c==e.method||\"ALL\"==c)&&(a=s.pathname.match(n))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,c=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of c.searchParams)n[e]=n[e]?[].concat(n[e],t):t;e:try{for(let t of r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,n,l,i]of t)if((r==e.method||\"ALL\"==r)&&(s=c.pathname.match(n))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e=\"text/plain; charset=utf-8\",t)=>(r,o={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o.url?void 0:o);return a.headers.set(\"content-type\",e),a},o=r(\"application/json; charset=utf-8\",JSON.stringify),a=e=>({400:\"Bad Request\",401:\"Unauthorized\",403:\"Forbidden\",404:\"Not Found\",500:\"Internal Server Error\"}[e]||\"Unknown Error\"),s=(e=500,t)=>{if(e instanceof Error){const{message:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,...\"object\"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},c=e=>{e.proxy=new Proxy(e.proxy??e,{get:(t,r)=>t[r]?.bind?.(e)??t[r]??t?.params?.[r]})},n=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:n=[],...l}={})=>t({before:[c,...n],catch:s,finally:[(e,...t)=>e??r(...t),e,...a],...l});class l extends Error{status;constructor(e=500,t){super(\"object\"==typeof t?t.error:t),\"object\"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=r(\"text/plain; charset=utf-8\",String),f=r(\"text/html\"),u=r(\"image/jpeg\"),h=r(\"image/png\"),g=r(\"image/webp\"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get(\"Cookie\")||\"\").split(/;\\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t=\"*\",credentials:r=!1,allowMethods:o=\"*\",allowHeaders:a,exposeHeaders:s,maxAge:c}=e,n=e=>{const o=e?.headers.get(\"origin\");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):\"*\"==t&&r?o:t},l=(e,t)=>{for(const[r,o]of Object.entries(t))o&&e.headers.append(r,o);return e};return{corsify:(e,t)=>e?.headers?.get(\"access-control-allow-origin\")||101==e.status?e:l(e.clone(),{\"access-control-allow-origin\":n(t),\"access-control-allow-credentials\":r}),preflight:e=>{if(\"OPTIONS\"==e.method){const t=new Response(null,{status:204});return l(t,{\"access-control-allow-origin\":n(e),\"access-control-allow-methods\":o?.join?.(\",\")??o,\"access-control-expose-headers\":s?.join?.(\",\")??s,\"access-control-allow-headers\":a?.join?.(\",\")??a??e.headers.get(\"access-control-request-headers\"),\"access-control-max-age\":c,\"access-control-allow-credentials\":r})}}}};export{n as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,c as withParams};\n", "import { Router, cors } from 'itty-router'\n\nconst { preflight, corsify } = cors()\n\nconst router = Router()\n\nrouter.all('/*', preflight)\n\n// \u7B80\u5355\u7684\u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\nrouter.get('/', () => {\n return new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n })\n})\n\n// Generic proxy\nrouter.all('/(ajax|rpc)/:path+', async (req, env) => {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(req.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: req.method,\n headers,\n body: req.body,\n })\n\n return fetch(newReq)\n})\n\n// Image proxy\nrouter.all('/(~|-)/:path+', async (req, env) => {\n const url = new URL(req.url)\n const path = url.pathname.slice(2)\n\n if (url.pathname.startsWith('/~')) {\n url.hostname = 'i.pximg.net'\n } else {\n url.hostname = 's.pximg.net'\n }\n url.pathname = '/' + path\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (req.headers.get(h)) {\n headers.set(h, req.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n return fetch(newReq)\n})\n\n// \u7B80\u5316\u7684\u968F\u673A\u56FE\u7247 API\nrouter.all('/api/illust/random', async (req, env) => {\n try {\n const url = new URL(req.url)\n const requestImage =\n (req.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6784\u5EFA\u8BF7\u6C42\u5230 Pixiv API\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n \n const data = await response.json()\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL - \u4F7F\u7528\u7B80\u5316\u7684\u65E5\u671F\u5904\u7406\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n // \u7B80\u5355\u7684\u65E5\u671F\u683C\u5F0F\u5316\uFF0C\u907F\u514D\u590D\u6742\u7684\u65F6\u533A\u5904\u7406\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n // \u5982\u679C\u6CA1\u6709\u65E5\u671F\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u503C\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n // \u4F7F\u7528\u9ED8\u8BA4 URL \u7ED3\u6784\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n })\n }\n\n return new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n })\n } catch (error) {\n console.error('Error in random API:', error)\n return new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n})\n\n// User API endpoint\nrouter.all('/api/user', async (req, env) => {\n try {\n const url = new URL(req.url)\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n\n // \u6784\u5EFA\u8BF7\u6C42\u5230 Pixiv API\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n \n const data = await response.json()\n \n return new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n })\n } catch (error) {\n console.error('Error in user API:', error)\n return new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n })\n }\n})\n\n// 404 handler\nrouter.all('*', () => new Response('Not Found', { status: 404 }))\n\nexport default {\n fetch: (request: Request, env: any, ctx: any) =>\n router.handle(request, env, ctx).then(corsify).catch((err) => {\n console.error('Worker error:', err)\n return new Response(JSON.stringify({ \n error: 'Internal server error',\n message: err instanceof Error ? err.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-mYQ48C\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-mYQ48C\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-mYQ48C\\\\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": ["t", "r", "o", "e", "n", "t", "r", "o", "e", "h"] +} diff --git a/.wrangler/tmp/dev-giCNda/[[path]].js b/.wrangler/tmp/dev-giCNda/[[path]].js new file mode 100644 index 0000000..5c8381d --- /dev/null +++ b/.wrangler/tmp/dev-giCNda/[[path]].js @@ -0,0 +1,453 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-RkXBq4/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const pixivUrl = new URL("https://www.pixiv.net/ajax/illust/discovery"); + pixivUrl.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + pixivUrl.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + console.log("Fetching from Pixiv API:", pixivUrl.toString()); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + console.error("Pixiv API error:", response.status, response.statusText); + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + console.log("Pixiv API response:", data); + if (data.error) { + console.error("Pixiv API returned error:", data.error); + return corsResponse(new Response(JSON.stringify({ error: data.error }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const illusts = (data.illusts ?? []).filter( + (value) => value && typeof value === "object" && value.id + ); + if (illusts.length === 0) { + return corsResponse(new Response(JSON.stringify([]), { + headers: { "Content-Type": "application/json" } + })); + } + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + if (value.updateDate) { + const date = new Date(value.updateDate); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + const hour = String(date.getHours()).padStart(2, "0"); + const minute = String(date.getMinutes()).padStart(2, "0"); + const second = String(date.getSeconds()).padStart(2, "0"); + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } else { + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + } catch (error) { + console.error("Error processing illust:", value.id, error); + const middle = `img/2024/01/01/00/00/00/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } + }); + if (requestImage && illusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: illusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + url.hostname = "i.pximg.net"; + } else { + url.hostname = "s.pximg.net"; + } + url.pathname = "/" + path; + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-RkXBq4/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-RkXBq4/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-giCNda/[[path]].js.map b/.wrangler/tmp/dev-giCNda/[[path]].js.map new file mode 100644 index 0000000..ae5dd6d --- /dev/null +++ b/.wrangler/tmp/dev-giCNda/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-RkXBq4/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-RkXBq4/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-RkXBq4/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-giCNda", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6784\u5EFA\u8BF7\u6C42\u5230 Pixiv API\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n if (url.pathname.startsWith('/~')) {\n url.hostname = 'i.pximg.net'\n } else {\n url.hostname = 's.pximg.net'\n }\n url.pathname = '/' + path\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-RkXBq4\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-RkXBq4\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-RkXBq4\\\\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": [] +} diff --git a/.wrangler/tmp/dev-kRSTjH/[[path]].js b/.wrangler/tmp/dev-kRSTjH/[[path]].js new file mode 100644 index 0000000..f847751 --- /dev/null +++ b/.wrangler/tmp/dev-kRSTjH/[[path]].js @@ -0,0 +1,398 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-YuxJya/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const mockIllusts = [ + { + id: "123456789", + title: "Test Illustration", + userId: "987654321", + userName: "Test Artist", + tags: ["test", "mock"], + updateDate: "2024-01-01T12:00:00+00:00", + urls: { + mini: "https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + thumb: "https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + small: "https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + regular: "https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + original: "https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg" + } + } + ]; + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + url.hostname = "i.pximg.net"; + } else { + url.hostname = "s.pximg.net"; + } + url.pathname = "/" + path; + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-YuxJya/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-YuxJya/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-kRSTjH/[[path]].js.map b/.wrangler/tmp/dev-kRSTjH/[[path]].js.map new file mode 100644 index 0000000..0ccf950 --- /dev/null +++ b/.wrangler/tmp/dev-kRSTjH/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-YuxJya/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-YuxJya/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-YuxJya/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-kRSTjH", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n // \u7B80\u5316\u7248\u672C\uFF1A\u8FD4\u56DE\u6A21\u62DF\u6570\u636E\u800C\u4E0D\u662F\u8C03\u7528 Pixiv API\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6A21\u62DF\u6570\u636E\u7528\u4E8E\u6D4B\u8BD5\n const mockIllusts = [\n {\n id: '123456789',\n title: 'Test Illustration',\n userId: '987654321',\n userName: 'Test Artist',\n tags: ['test', 'mock'],\n updateDate: '2024-01-01T12:00:00+00:00',\n urls: {\n mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg',\n }\n }\n ]\n\n if (requestImage && mockIllusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: mockIllusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(mockIllusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n\n /* \u539F\u59CB Pixiv API \u8C03\u7528\u4EE3\u7801 - \u6682\u65F6\u6CE8\u91CA\u6389\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 Pixiv \u56FE\u7247 URL\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406 URL\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n */\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n if (url.pathname.startsWith('/~')) {\n url.hostname = 'i.pximg.net'\n } else {\n url.hostname = 's.pximg.net'\n }\n url.pathname = '/' + path\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-YuxJya\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-YuxJya\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-YuxJya\\\\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": [] +} diff --git a/.wrangler/tmp/dev-m5fb1Z/[[path]].js b/.wrangler/tmp/dev-m5fb1Z/[[path]].js new file mode 100644 index 0000000..c8e4c59 --- /dev/null +++ b/.wrangler/tmp/dev-m5fb1Z/[[path]].js @@ -0,0 +1,2744 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-lcE67Q/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs +var t = /* @__PURE__ */ __name(({ base: e = "", routes: t2 = [], ...r2 } = {}) => ({ __proto__: new Proxy({}, { get: /* @__PURE__ */ __name((r3, o2, a, s) => (r4, ...c) => t2.push([o2.toUpperCase?.(), RegExp(`^${(s = (e + r4).replace(/\/+(\/|$)/g, "$1")).replace(/(\/?\.?):(\w+)\+/g, "($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g, "($1(?<$2>[^$1/]+?))").replace(/\./g, "\\.").replace(/(\/?)\*/g, "($1.*)?")}/*$`), c, s]) && a, "get") }), routes: t2, ...r2, async fetch(e2, ...o2) { + let a, s, c = new URL(e2.url), n = e2.query = { __proto__: null }; + for (let [e3, t3] of c.searchParams) n[e3] = n[e3] ? [].concat(n[e3], t3) : t3; + e: try { + for (let t3 of r2.before || []) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break e; + t: for (let [r3, n2, l, i] of t2) if ((r3 == e2.method || "ALL" == r3) && (s = c.pathname.match(n2))) { + e2.params = s.groups || {}, e2.route = i; + for (let t3 of l) if (null != (a = await t3(e2.proxy ?? e2, ...o2))) break t; + } + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + try { + for (let t3 of r2.finally || []) a = await t3(a, e2.proxy ?? e2, ...o2) ?? a; + } catch (t3) { + if (!r2.catch) throw t3; + a = await r2.catch(t3, e2.proxy ?? e2, ...o2); + } + return a; +} }), "t"); +var r = /* @__PURE__ */ __name((e = "text/plain; charset=utf-8", t2) => (r2, o2 = {}) => { + if (void 0 === r2 || r2 instanceof Response) return r2; + const a = new Response(t2?.(r2) ?? r2, o2.url ? void 0 : o2); + return a.headers.set("content-type", e), a; +}, "r"); +var o = r("application/json; charset=utf-8", JSON.stringify); +var p = r("text/plain; charset=utf-8", String); +var f = r("text/html"); +var u = r("image/jpeg"); +var h = r("image/png"); +var g = r("image/webp"); +var y = /* @__PURE__ */ __name((e = {}) => { + const { origin: t2 = "*", credentials: r2 = false, allowMethods: o2 = "*", allowHeaders: a, exposeHeaders: s, maxAge: c } = e, n = /* @__PURE__ */ __name((e2) => { + const o3 = e2?.headers.get("origin"); + return true === t2 ? o3 : t2 instanceof RegExp ? t2.test(o3) ? o3 : void 0 : Array.isArray(t2) ? t2.includes(o3) ? o3 : void 0 : t2 instanceof Function ? t2(o3) : "*" == t2 && r2 ? o3 : t2; + }, "n"), l = /* @__PURE__ */ __name((e2, t3) => { + for (const [r3, o3] of Object.entries(t3)) o3 && e2.headers.append(r3, o3); + return e2; + }, "l"); + return { corsify: /* @__PURE__ */ __name((e2, t3) => e2?.headers?.get("access-control-allow-origin") || 101 == e2.status ? e2 : l(e2.clone(), { "access-control-allow-origin": n(t3), "access-control-allow-credentials": r2 }), "corsify"), preflight: /* @__PURE__ */ __name((e2) => { + if ("OPTIONS" == e2.method) { + const t3 = new Response(null, { status: 204 }); + return l(t3, { "access-control-allow-origin": n(e2), "access-control-allow-methods": o2?.join?.(",") ?? o2, "access-control-expose-headers": s?.join?.(",") ?? s, "access-control-allow-headers": a?.join?.(",") ?? a ?? e2.headers.get("access-control-request-headers"), "access-control-max-age": c, "access-control-allow-credentials": r2 }); + } + }, "preflight") }; +}, "y"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: "less than a second", + other: "less than {{count}} seconds" + }, + xSeconds: { + one: "1 second", + other: "{{count}} seconds" + }, + halfAMinute: "half a minute", + lessThanXMinutes: { + one: "less than a minute", + other: "less than {{count}} minutes" + }, + xMinutes: { + one: "1 minute", + other: "{{count}} minutes" + }, + aboutXHours: { + one: "about 1 hour", + other: "about {{count}} hours" + }, + xHours: { + one: "1 hour", + other: "{{count}} hours" + }, + xDays: { + one: "1 day", + other: "{{count}} days" + }, + aboutXWeeks: { + one: "about 1 week", + other: "about {{count}} weeks" + }, + xWeeks: { + one: "1 week", + other: "{{count}} weeks" + }, + aboutXMonths: { + one: "about 1 month", + other: "about {{count}} months" + }, + xMonths: { + one: "1 month", + other: "{{count}} months" + }, + aboutXYears: { + one: "about 1 year", + other: "about {{count}} years" + }, + xYears: { + one: "1 year", + other: "{{count}} years" + }, + overXYears: { + one: "over 1 year", + other: "over {{count}} years" + }, + almostXYears: { + one: "almost 1 year", + other: "almost {{count}} years" + } +}; +var formatDistance = /* @__PURE__ */ __name((token, count, options) => { + let result; + const tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === "string") { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace("{{count}}", count.toString()); + } + if (options?.addSuffix) { + if (options.comparison && options.comparison > 0) { + return "in " + result; + } else { + return result + " ago"; + } + } + return result; +}, "formatDistance"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +function buildFormatLongFn(args) { + return (options = {}) => { + const width = options.width ? String(options.width) : args.defaultWidth; + const format3 = args.formats[width] || args.formats[args.defaultWidth]; + return format3; + }; +} +__name(buildFormatLongFn, "buildFormatLongFn"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js +var dateFormats = { + full: "EEEE, MMMM do, y", + long: "MMMM do, y", + medium: "MMM d, y", + short: "MM/dd/yyyy" +}; +var timeFormats = { + full: "h:mm:ss a zzzz", + long: "h:mm:ss a z", + medium: "h:mm:ss a", + short: "h:mm a" +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: "{{date}}, {{time}}", + short: "{{date}}, {{time}}" +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: "full" + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: "full" + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: "full" + }) +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: "P" +}; +var formatRelative = /* @__PURE__ */ __name((token, _date, _baseDate, _options) => formatRelativeLocale[token], "formatRelative"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +function buildLocalizeFn(args) { + return (value, options) => { + const context = options?.context ? String(options.context) : "standalone"; + let valuesArray; + if (context === "formatting" && args.formattingValues) { + const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + const width = options?.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + const defaultWidth = args.defaultWidth; + const width = options?.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[width] || args.values[defaultWidth]; + } + const index = args.argumentCallback ? args.argumentCallback(value) : value; + return valuesArray[index]; + }; +} +__name(buildLocalizeFn, "buildLocalizeFn"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js +var eraValues = { + narrow: ["B", "A"], + abbreviated: ["BC", "AD"], + wide: ["Before Christ", "Anno Domini"] +}; +var quarterValues = { + narrow: ["1", "2", "3", "4"], + abbreviated: ["Q1", "Q2", "Q3", "Q4"], + wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] +}; +var monthValues = { + narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] +}; +var dayValues = { + narrow: ["S", "M", "T", "W", "T", "F", "S"], + short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] +}; +var dayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" + } +}; +var formattingDayPeriodValues = { + narrow: { + am: "a", + pm: "p", + midnight: "mi", + noon: "n", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + abbreviated: { + am: "AM", + pm: "PM", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + }, + wide: { + am: "a.m.", + pm: "p.m.", + midnight: "midnight", + noon: "noon", + morning: "in the morning", + afternoon: "in the afternoon", + evening: "in the evening", + night: "at night" + } +}; +var ordinalNumber = /* @__PURE__ */ __name((dirtyNumber, _options) => { + const number = Number(dirtyNumber); + const rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + "st"; + case 2: + return number + "nd"; + case 3: + return number + "rd"; + } + } + return number + "th"; +}, "ordinalNumber"); +var localize = { + ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: "wide" + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: "wide", + argumentCallback: /* @__PURE__ */ __name((quarter) => quarter - 1, "argumentCallback") + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: "wide" + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: "wide" + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: "wide", + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: "wide" + }) +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js +function buildMatchFn(args) { + return (string, options = {}) => { + const width = options.width; + const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + const matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + const matchedString = matchResult[0]; + const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : ( + // [TODO] -- I challenge you to fix the type + findKey(parsePatterns, (pattern) => pattern.test(matchedString)) + ); + let value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? ( + // [TODO] -- I challenge you to fix the type + options.valueCallback(value) + ) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +__name(buildMatchFn, "buildMatchFn"); +function findKey(object, predicate) { + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { + return key; + } + } + return void 0; +} +__name(findKey, "findKey"); +function findIndex(array, predicate) { + for (let key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return void 0; +} +__name(findIndex, "findIndex"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +function buildMatchPatternFn(args) { + return (string, options = {}) => { + const matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + const matchedString = matchResult[0]; + const parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + const rest = string.slice(matchedString.length); + return { value, rest }; + }; +} +__name(buildMatchPatternFn, "buildMatchPatternFn"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [ + /^j/i, + /^f/i, + /^m/i, + /^a/i, + /^m/i, + /^j/i, + /^j/i, + /^a/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ], + any: [ + /^ja/i, + /^f/i, + /^mar/i, + /^ap/i, + /^may/i, + /^jun/i, + /^jul/i, + /^au/i, + /^s/i, + /^o/i, + /^n/i, + /^d/i + ] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: /* @__PURE__ */ __name((value) => parseInt(value, 10), "valueCallback") + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseEraPatterns, + defaultParseWidth: "any" + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseQuarterPatterns, + defaultParseWidth: "any", + valueCallback: /* @__PURE__ */ __name((index) => index + 1, "valueCallback") + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseMonthPatterns, + defaultParseWidth: "any" + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: "wide", + parsePatterns: parseDayPatterns, + defaultParseWidth: "any" + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: "any", + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: "any" + }) +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js +var enUS = { + code: "en-US", + formatDistance, + formatLong, + formatRelative, + localize, + match, + options: { + weekStartsOn: 0, + firstWeekContainsDate: 1 + } +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} +__name(getDefaultOptions, "getDefaultOptions"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js +var daysInYear = 365.2425; +var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; +var minTime = -maxTime; +var millisecondsInWeek = 6048e5; +var millisecondsInDay = 864e5; +var secondsInHour = 3600; +var secondsInDay = secondsInHour * 24; +var secondsInWeek = secondsInDay * 7; +var secondsInYear = secondsInDay * daysInYear; +var secondsInMonth = secondsInYear / 12; +var secondsInQuarter = secondsInMonth * 3; +var constructFromSymbol = Symbol.for("constructDateFrom"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js +function constructFrom(date, value) { + if (typeof date === "function") return date(value); + if (date && typeof date === "object" && constructFromSymbol in date) + return date[constructFromSymbol](value); + if (date instanceof Date) return new date.constructor(value); + return new Date(value); +} +__name(constructFrom, "constructFrom"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js +function toDate(argument, context) { + return constructFrom(context || argument, argument); +} +__name(toDate, "toDate"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +function getTimezoneOffsetInMilliseconds(date) { + const _date = toDate(date); + const utcDate = new Date( + Date.UTC( + _date.getFullYear(), + _date.getMonth(), + _date.getDate(), + _date.getHours(), + _date.getMinutes(), + _date.getSeconds(), + _date.getMilliseconds() + ) + ); + utcDate.setUTCFullYear(_date.getFullYear()); + return +date - +utcDate; +} +__name(getTimezoneOffsetInMilliseconds, "getTimezoneOffsetInMilliseconds"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js +function normalizeDates(context, ...dates) { + const normalize = constructFrom.bind( + null, + context || dates.find((date) => typeof date === "object") + ); + return dates.map(normalize); +} +__name(normalizeDates, "normalizeDates"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js +function startOfDay(date, options) { + const _date = toDate(date, options?.in); + _date.setHours(0, 0, 0, 0); + return _date; +} +__name(startOfDay, "startOfDay"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js +function differenceInCalendarDays(laterDate, earlierDate, options) { + const [laterDate_, earlierDate_] = normalizeDates( + options?.in, + laterDate, + earlierDate + ); + const laterStartOfDay = startOfDay(laterDate_); + const earlierStartOfDay = startOfDay(earlierDate_); + const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); + const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); + return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); +} +__name(differenceInCalendarDays, "differenceInCalendarDays"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js +function startOfYear(date, options) { + const date_ = toDate(date, options?.in); + date_.setFullYear(date_.getFullYear(), 0, 1); + date_.setHours(0, 0, 0, 0); + return date_; +} +__name(startOfYear, "startOfYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js +function getDayOfYear(date, options) { + const _date = toDate(date, options?.in); + const diff = differenceInCalendarDays(_date, startOfYear(_date)); + const dayOfYear = diff + 1; + return dayOfYear; +} +__name(getDayOfYear, "getDayOfYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js +function startOfWeek(date, options) { + const defaultOptions2 = getDefaultOptions(); + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const _date = toDate(date, options?.in); + const day = _date.getDay(); + const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + _date.setDate(_date.getDate() - diff); + _date.setHours(0, 0, 0, 0); + return _date; +} +__name(startOfWeek, "startOfWeek"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js +function startOfISOWeek(date, options) { + return startOfWeek(date, { ...options, weekStartsOn: 1 }); +} +__name(startOfISOWeek, "startOfISOWeek"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js +function getISOWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); + fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); + const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); + fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); + if (_date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (_date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} +__name(getISOWeekYear, "getISOWeekYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js +function startOfISOWeekYear(date, options) { + const year = getISOWeekYear(date, options); + const fourthOfJanuary = constructFrom(options?.in || date, 0); + fourthOfJanuary.setFullYear(year, 0, 4); + fourthOfJanuary.setHours(0, 0, 0, 0); + return startOfISOWeek(fourthOfJanuary); +} +__name(startOfISOWeekYear, "startOfISOWeekYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js +function getISOWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); + return Math.round(diff / millisecondsInWeek) + 1; +} +__name(getISOWeek, "getISOWeek"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js +function getWeekYear(date, options) { + const _date = toDate(date, options?.in); + const year = _date.getFullYear(); + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const firstWeekOfNextYear = constructFrom(options?.in || date, 0); + firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setHours(0, 0, 0, 0); + const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); + const firstWeekOfThisYear = constructFrom(options?.in || date, 0); + firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setHours(0, 0, 0, 0); + const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); + if (+_date >= +startOfNextYear) { + return year + 1; + } else if (+_date >= +startOfThisYear) { + return year; + } else { + return year - 1; + } +} +__name(getWeekYear, "getWeekYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js +function startOfWeekYear(date, options) { + const defaultOptions2 = getDefaultOptions(); + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const year = getWeekYear(date, options); + const firstWeek = constructFrom(options?.in || date, 0); + firstWeek.setFullYear(year, 0, firstWeekContainsDate); + firstWeek.setHours(0, 0, 0, 0); + const _date = startOfWeek(firstWeek, options); + return _date; +} +__name(startOfWeekYear, "startOfWeekYear"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js +function getWeek(date, options) { + const _date = toDate(date, options?.in); + const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); + return Math.round(diff / millisecondsInWeek) + 1; +} +__name(getWeek, "getWeek"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js +function addLeadingZeros(number, targetLength) { + const sign = number < 0 ? "-" : ""; + const output = Math.abs(number).toString().padStart(targetLength, "0"); + return sign + output; +} +__name(addLeadingZeros, "addLeadingZeros"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js +var lightFormatters = { + // Year + y(date, token) { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); + }, + // Month + M(date, token) { + const month = date.getMonth(); + return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d(date, token) { + return addLeadingZeros(date.getDate(), token.length); + }, + // AM or PM + a(date, token) { + const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return dayPeriodEnumValue.toUpperCase(); + case "aaa": + return dayPeriodEnumValue; + case "aaaaa": + return dayPeriodEnumValue[0]; + case "aaaa": + default: + return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; + } + }, + // Hour [1-12] + h(date, token) { + return addLeadingZeros(date.getHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H(date, token) { + return addLeadingZeros(date.getHours(), token.length); + }, + // Minute + m(date, token) { + return addLeadingZeros(date.getMinutes(), token.length); + }, + // Second + s(date, token) { + return addLeadingZeros(date.getSeconds(), token.length); + }, + // Fraction of second + S(date, token) { + const numberOfDigits = token.length; + const milliseconds = date.getMilliseconds(); + const fractionalSeconds = Math.trunc( + milliseconds * Math.pow(10, numberOfDigits - 3) + ); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js +var dayPeriodEnum = { + am: "am", + pm: "pm", + midnight: "midnight", + noon: "noon", + morning: "morning", + afternoon: "afternoon", + evening: "evening", + night: "night" +}; +var formatters = { + // Era + G: /* @__PURE__ */ __name(function(date, token, localize2) { + const era = date.getFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case "G": + case "GG": + case "GGG": + return localize2.era(era, { width: "abbreviated" }); + // A, B + case "GGGGG": + return localize2.era(era, { width: "narrow" }); + // Anno Domini, Before Christ + case "GGGG": + default: + return localize2.era(era, { width: "wide" }); + } + }, "G"), + // Year + y: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "yo") { + const signedYear = date.getFullYear(); + const year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize2.ordinalNumber(year, { unit: "year" }); + } + return lightFormatters.y(date, token); + }, "y"), + // Local week-numbering year + Y: /* @__PURE__ */ __name(function(date, token, localize2, options) { + const signedWeekYear = getWeekYear(date, options); + const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + if (token === "YY") { + const twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + if (token === "Yo") { + return localize2.ordinalNumber(weekYear, { unit: "year" }); + } + return addLeadingZeros(weekYear, token.length); + }, "Y"), + // ISO week-numbering year + R: /* @__PURE__ */ __name(function(date, token) { + const isoWeekYear = getISOWeekYear(date); + return addLeadingZeros(isoWeekYear, token.length); + }, "R"), + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: /* @__PURE__ */ __name(function(date, token) { + const year = date.getFullYear(); + return addLeadingZeros(year, token.length); + }, "u"), + // Quarter + Q: /* @__PURE__ */ __name(function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "Q": + return String(quarter); + // 01, 02, 03, 04 + case "QQ": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "Qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "QQQ": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "formatting" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "QQQQQ": + return localize2.quarter(quarter, { + width: "narrow", + context: "formatting" + }); + // 1st quarter, 2nd quarter, ... + case "QQQQ": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "formatting" + }); + } + }, "Q"), + // Stand-alone quarter + q: /* @__PURE__ */ __name(function(date, token, localize2) { + const quarter = Math.ceil((date.getMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case "q": + return String(quarter); + // 01, 02, 03, 04 + case "qq": + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case "qo": + return localize2.ordinalNumber(quarter, { unit: "quarter" }); + // Q1, Q2, Q3, Q4 + case "qqq": + return localize2.quarter(quarter, { + width: "abbreviated", + context: "standalone" + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case "qqqqq": + return localize2.quarter(quarter, { + width: "narrow", + context: "standalone" + }); + // 1st quarter, 2nd quarter, ... + case "qqqq": + default: + return localize2.quarter(quarter, { + width: "wide", + context: "standalone" + }); + } + }, "q"), + // Month + M: /* @__PURE__ */ __name(function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + case "M": + case "MM": + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case "Mo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "MMM": + return localize2.month(month, { + width: "abbreviated", + context: "formatting" + }); + // J, F, ..., D + case "MMMMM": + return localize2.month(month, { + width: "narrow", + context: "formatting" + }); + // January, February, ..., December + case "MMMM": + default: + return localize2.month(month, { width: "wide", context: "formatting" }); + } + }, "M"), + // Stand-alone month + L: /* @__PURE__ */ __name(function(date, token, localize2) { + const month = date.getMonth(); + switch (token) { + // 1, 2, ..., 12 + case "L": + return String(month + 1); + // 01, 02, ..., 12 + case "LL": + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case "Lo": + return localize2.ordinalNumber(month + 1, { unit: "month" }); + // Jan, Feb, ..., Dec + case "LLL": + return localize2.month(month, { + width: "abbreviated", + context: "standalone" + }); + // J, F, ..., D + case "LLLLL": + return localize2.month(month, { + width: "narrow", + context: "standalone" + }); + // January, February, ..., December + case "LLLL": + default: + return localize2.month(month, { width: "wide", context: "standalone" }); + } + }, "L"), + // Local week of year + w: /* @__PURE__ */ __name(function(date, token, localize2, options) { + const week = getWeek(date, options); + if (token === "wo") { + return localize2.ordinalNumber(week, { unit: "week" }); + } + return addLeadingZeros(week, token.length); + }, "w"), + // ISO week of year + I: /* @__PURE__ */ __name(function(date, token, localize2) { + const isoWeek = getISOWeek(date); + if (token === "Io") { + return localize2.ordinalNumber(isoWeek, { unit: "week" }); + } + return addLeadingZeros(isoWeek, token.length); + }, "I"), + // Day of the month + d: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "do") { + return localize2.ordinalNumber(date.getDate(), { unit: "date" }); + } + return lightFormatters.d(date, token); + }, "d"), + // Day of year + D: /* @__PURE__ */ __name(function(date, token, localize2) { + const dayOfYear = getDayOfYear(date); + if (token === "Do") { + return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); + } + return addLeadingZeros(dayOfYear, token.length); + }, "D"), + // Day of week + E: /* @__PURE__ */ __name(function(date, token, localize2) { + const dayOfWeek = date.getDay(); + switch (token) { + // Tue + case "E": + case "EE": + case "EEE": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "EEEEE": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "EEEEEE": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "EEEE": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, "E"), + // Local day of week + e: /* @__PURE__ */ __name(function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case "e": + return String(localDayOfWeek); + // Padded numerical value + case "ee": + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case "eo": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "eee": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "eeeee": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "eeeeee": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "eeee": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, "e"), + // Stand-alone local day of week + c: /* @__PURE__ */ __name(function(date, token, localize2, options) { + const dayOfWeek = date.getDay(); + const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case "c": + return String(localDayOfWeek); + // Padded numerical value + case "cc": + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case "co": + return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); + case "ccc": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "standalone" + }); + // T + case "ccccc": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "standalone" + }); + // Tu + case "cccccc": + return localize2.day(dayOfWeek, { + width: "short", + context: "standalone" + }); + // Tuesday + case "cccc": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "standalone" + }); + } + }, "c"), + // ISO day of week + i: /* @__PURE__ */ __name(function(date, token, localize2) { + const dayOfWeek = date.getDay(); + const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case "i": + return String(isoDayOfWeek); + // 02 + case "ii": + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case "io": + return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); + // Tue + case "iii": + return localize2.day(dayOfWeek, { + width: "abbreviated", + context: "formatting" + }); + // T + case "iiiii": + return localize2.day(dayOfWeek, { + width: "narrow", + context: "formatting" + }); + // Tu + case "iiiiii": + return localize2.day(dayOfWeek, { + width: "short", + context: "formatting" + }); + // Tuesday + case "iiii": + default: + return localize2.day(dayOfWeek, { + width: "wide", + context: "formatting" + }); + } + }, "i"), + // AM or PM + a: /* @__PURE__ */ __name(function(date, token, localize2) { + const hours = date.getHours(); + const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + switch (token) { + case "a": + case "aa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "aaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "aaaaa": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "aaaa": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, "a"), + // AM, PM, midnight, noon + b: /* @__PURE__ */ __name(function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; + } + switch (token) { + case "b": + case "bb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "bbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }).toLowerCase(); + case "bbbbb": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "bbbb": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, "b"), + // in the morning, in the afternoon, in the evening, at night + B: /* @__PURE__ */ __name(function(date, token, localize2) { + const hours = date.getHours(); + let dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case "B": + case "BB": + case "BBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "abbreviated", + context: "formatting" + }); + case "BBBBB": + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "narrow", + context: "formatting" + }); + case "BBBB": + default: + return localize2.dayPeriod(dayPeriodEnumValue, { + width: "wide", + context: "formatting" + }); + } + }, "B"), + // Hour [1-12] + h: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "ho") { + let hours = date.getHours() % 12; + if (hours === 0) hours = 12; + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return lightFormatters.h(date, token); + }, "h"), + // Hour [0-23] + H: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "Ho") { + return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); + } + return lightFormatters.H(date, token); + }, "H"), + // Hour [0-11] + K: /* @__PURE__ */ __name(function(date, token, localize2) { + const hours = date.getHours() % 12; + if (token === "Ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, "K"), + // Hour [1-24] + k: /* @__PURE__ */ __name(function(date, token, localize2) { + let hours = date.getHours(); + if (hours === 0) hours = 24; + if (token === "ko") { + return localize2.ordinalNumber(hours, { unit: "hour" }); + } + return addLeadingZeros(hours, token.length); + }, "k"), + // Minute + m: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "mo") { + return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); + } + return lightFormatters.m(date, token); + }, "m"), + // Second + s: /* @__PURE__ */ __name(function(date, token, localize2) { + if (token === "so") { + return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); + } + return lightFormatters.s(date, token); + }, "s"), + // Fraction of second + S: /* @__PURE__ */ __name(function(date, token) { + return lightFormatters.S(date, token); + }, "S"), + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: /* @__PURE__ */ __name(function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, "X"), + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: /* @__PURE__ */ __name(function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ":"); + } + }, "x"), + // Timezone (GMT) + O: /* @__PURE__ */ __name(function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, "O"), + // Timezone (specific non-location) + z: /* @__PURE__ */ __name(function(date, token, _localize) { + const timezoneOffset = date.getTimezoneOffset(); + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return "GMT" + formatTimezoneShort(timezoneOffset, ":"); + // Long + case "zzzz": + default: + return "GMT" + formatTimezone(timezoneOffset, ":"); + } + }, "z"), + // Seconds timestamp + t: /* @__PURE__ */ __name(function(date, token, _localize) { + const timestamp = Math.trunc(+date / 1e3); + return addLeadingZeros(timestamp, token.length); + }, "t"), + // Milliseconds timestamp + T: /* @__PURE__ */ __name(function(date, token, _localize) { + return addLeadingZeros(+date, token.length); + }, "T") +}; +function formatTimezoneShort(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.trunc(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +__name(formatTimezoneShort, "formatTimezoneShort"); +function formatTimezoneWithOptionalMinutes(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, delimiter); +} +__name(formatTimezoneWithOptionalMinutes, "formatTimezoneWithOptionalMinutes"); +function formatTimezone(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); + const minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} +__name(formatTimezone, "formatTimezone"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js +var dateLongFormatter = /* @__PURE__ */ __name((pattern, formatLong2) => { + switch (pattern) { + case "P": + return formatLong2.date({ width: "short" }); + case "PP": + return formatLong2.date({ width: "medium" }); + case "PPP": + return formatLong2.date({ width: "long" }); + case "PPPP": + default: + return formatLong2.date({ width: "full" }); + } +}, "dateLongFormatter"); +var timeLongFormatter = /* @__PURE__ */ __name((pattern, formatLong2) => { + switch (pattern) { + case "p": + return formatLong2.time({ width: "short" }); + case "pp": + return formatLong2.time({ width: "medium" }); + case "ppp": + return formatLong2.time({ width: "long" }); + case "pppp": + default: + return formatLong2.time({ width: "full" }); + } +}, "timeLongFormatter"); +var dateTimeLongFormatter = /* @__PURE__ */ __name((pattern, formatLong2) => { + const matchResult = pattern.match(/(P+)(p+)?/) || []; + const datePattern = matchResult[1]; + const timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong2); + } + let dateTimeFormat; + switch (datePattern) { + case "P": + dateTimeFormat = formatLong2.dateTime({ width: "short" }); + break; + case "PP": + dateTimeFormat = formatLong2.dateTime({ width: "medium" }); + break; + case "PPP": + dateTimeFormat = formatLong2.dateTime({ width: "long" }); + break; + case "PPPP": + default: + dateTimeFormat = formatLong2.dateTime({ width: "full" }); + break; + } + return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); +}, "dateTimeLongFormatter"); +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js +var dayOfYearTokenRE = /^D+$/; +var weekYearTokenRE = /^Y+$/; +var throwTokens = ["D", "DD", "YY", "YYYY"]; +function isProtectedDayOfYearToken(token) { + return dayOfYearTokenRE.test(token); +} +__name(isProtectedDayOfYearToken, "isProtectedDayOfYearToken"); +function isProtectedWeekYearToken(token) { + return weekYearTokenRE.test(token); +} +__name(isProtectedWeekYearToken, "isProtectedWeekYearToken"); +function warnOrThrowProtectedError(token, format3, input) { + const _message = message(token, format3, input); + console.warn(_message); + if (throwTokens.includes(token)) throw new RangeError(_message); +} +__name(warnOrThrowProtectedError, "warnOrThrowProtectedError"); +function message(token, format3, input) { + const subject = token[0] === "Y" ? "years" : "days of the month"; + return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format3}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; +} +__name(message, "message"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js +function isDate(value) { + return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; +} +__name(isDate, "isDate"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js +function isValid(date) { + return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); +} +__name(isValid, "isValid"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; +function format(date, formatStr, options) { + const defaultOptions2 = getDefaultOptions(); + const locale = options?.locale ?? defaultOptions2.locale ?? enUS; + const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; + const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; + const originalDate = toDate(date, options?.in); + if (!isValid(originalDate)) { + throw new RangeError("Invalid time value"); + } + let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { + const firstCharacter = substring[0]; + if (firstCharacter === "p" || firstCharacter === "P") { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join("").match(formattingTokensRegExp).map((substring) => { + if (substring === "''") { + return { isToken: false, value: "'" }; + } + const firstCharacter = substring[0]; + if (firstCharacter === "'") { + return { isToken: false, value: cleanEscapedString(substring) }; + } + if (formatters[firstCharacter]) { + return { isToken: true, value: substring }; + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError( + "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" + ); + } + return { isToken: false, value: substring }; + }); + if (locale.localize.preprocessor) { + parts = locale.localize.preprocessor(originalDate, parts); + } + const formatterOptions = { + firstWeekContainsDate, + weekStartsOn, + locale + }; + return parts.map((part) => { + if (!part.isToken) return part.value; + const token = part.value; + if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { + warnOrThrowProtectedError(token, formatStr, String(date)); + } + const formatter = formatters[token[0]]; + return formatter(originalDate, token, locale.localize, formatterOptions); + }).join(""); +} +__name(format, "format"); +function cleanEscapedString(input) { + const matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} +__name(cleanEscapedString, "cleanEscapedString"); + +// node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDefaultOptions.js +function getDefaultOptions2() { + return Object.assign({}, getDefaultOptions()); +} +__name(getDefaultOptions2, "getDefaultOptions"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzIntlTimeZoneName/index.js +function tzIntlTimeZoneName(length, date, options) { + const defaultOptions2 = getDefaultOptions2(); + const dtf = getDTF(length, options.timeZone, options.locale ?? defaultOptions2.locale); + return "formatToParts" in dtf ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date); +} +__name(tzIntlTimeZoneName, "tzIntlTimeZoneName"); +function partsTimeZone(dtf, date) { + const formatted = dtf.formatToParts(date); + for (let i = formatted.length - 1; i >= 0; --i) { + if (formatted[i].type === "timeZoneName") { + return formatted[i].value; + } + } + return void 0; +} +__name(partsTimeZone, "partsTimeZone"); +function hackyTimeZone(dtf, date) { + const formatted = dtf.format(date).replace(/\u200E/g, ""); + const tzNameMatch = / [\w-+ ]+$/.exec(formatted); + return tzNameMatch ? tzNameMatch[0].substr(1) : ""; +} +__name(hackyTimeZone, "hackyTimeZone"); +function getDTF(length, timeZone, locale) { + return new Intl.DateTimeFormat(locale ? [locale.code, "en-US"] : void 0, { + timeZone, + timeZoneName: length + }); +} +__name(getDTF, "getDTF"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzTokenizeDate/index.js +function tzTokenizeDate(date, timeZone) { + const dtf = getDateTimeFormat(timeZone); + return "formatToParts" in dtf ? partsOffset(dtf, date) : hackyOffset(dtf, date); +} +__name(tzTokenizeDate, "tzTokenizeDate"); +var typeToPos = { + year: 0, + month: 1, + day: 2, + hour: 3, + minute: 4, + second: 5 +}; +function partsOffset(dtf, date) { + try { + const formatted = dtf.formatToParts(date); + const filled = []; + for (let i = 0; i < formatted.length; i++) { + const pos = typeToPos[formatted[i].type]; + if (pos !== void 0) { + filled[pos] = parseInt(formatted[i].value, 10); + } + } + return filled; + } catch (error) { + if (error instanceof RangeError) { + return [NaN]; + } + throw error; + } +} +__name(partsOffset, "partsOffset"); +function hackyOffset(dtf, date) { + const formatted = dtf.format(date); + const parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted); + return [ + parseInt(parsed[3], 10), + parseInt(parsed[1], 10), + parseInt(parsed[2], 10), + parseInt(parsed[4], 10), + parseInt(parsed[5], 10), + parseInt(parsed[6], 10) + ]; +} +__name(hackyOffset, "hackyOffset"); +var dtfCache = {}; +var testDateFormatted = new Intl.DateTimeFormat("en-US", { + hourCycle: "h23", + timeZone: "America/New_York", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit" +}).format(/* @__PURE__ */ new Date("2014-06-25T04:00:00.123Z")); +var hourCycleSupported = testDateFormatted === "06/25/2014, 00:00:00" || testDateFormatted === "\u200E06\u200E/\u200E25\u200E/\u200E2014\u200E \u200E00\u200E:\u200E00\u200E:\u200E00"; +function getDateTimeFormat(timeZone) { + if (!dtfCache[timeZone]) { + dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat("en-US", { + hourCycle: "h23", + timeZone, + year: "numeric", + month: "numeric", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit" + }) : new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone, + year: "numeric", + month: "numeric", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit" + }); + } + return dtfCache[timeZone]; +} +__name(getDateTimeFormat, "getDateTimeFormat"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/newDateUTC/index.js +function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) { + const utcDate = /* @__PURE__ */ new Date(0); + utcDate.setUTCFullYear(fullYear, month, day); + utcDate.setUTCHours(hour, minute, second, millisecond); + return utcDate; +} +__name(newDateUTC, "newDateUTC"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzParseTimezone/index.js +var MILLISECONDS_IN_HOUR = 36e5; +var MILLISECONDS_IN_MINUTE = 6e4; +var patterns = { + timezone: /([Z+-].*)$/, + timezoneZ: /^(Z)$/, + timezoneHH: /^([+-]\d{2})$/, + timezoneHHMM: /^([+-])(\d{2}):?(\d{2})$/ +}; +function tzParseTimezone(timezoneString, date, isUtcDate) { + if (!timezoneString) { + return 0; + } + let token = patterns.timezoneZ.exec(timezoneString); + if (token) { + return 0; + } + let hours; + let absoluteOffset; + token = patterns.timezoneHH.exec(timezoneString); + if (token) { + hours = parseInt(token[1], 10); + if (!validateTimezone(hours)) { + return NaN; + } + return -(hours * MILLISECONDS_IN_HOUR); + } + token = patterns.timezoneHHMM.exec(timezoneString); + if (token) { + hours = parseInt(token[2], 10); + const minutes = parseInt(token[3], 10); + if (!validateTimezone(hours, minutes)) { + return NaN; + } + absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE; + return token[1] === "+" ? -absoluteOffset : absoluteOffset; + } + if (isValidTimezoneIANAString(timezoneString)) { + date = new Date(date || Date.now()); + const utcDate = isUtcDate ? date : toUtcDate(date); + const offset = calcOffset(utcDate, timezoneString); + const fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString); + return -fixedOffset; + } + return NaN; +} +__name(tzParseTimezone, "tzParseTimezone"); +function toUtcDate(date) { + return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()); +} +__name(toUtcDate, "toUtcDate"); +function calcOffset(date, timezoneString) { + const tokens = tzTokenizeDate(date, timezoneString); + const asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime(); + let asTS = date.getTime(); + const over = asTS % 1e3; + asTS -= over >= 0 ? over : 1e3 + over; + return asUTC - asTS; +} +__name(calcOffset, "calcOffset"); +function fixOffset(date, offset, timezoneString) { + const localTS = date.getTime(); + let utcGuess = localTS - offset; + const o2 = calcOffset(new Date(utcGuess), timezoneString); + if (offset === o2) { + return offset; + } + utcGuess -= o2 - offset; + const o3 = calcOffset(new Date(utcGuess), timezoneString); + if (o2 === o3) { + return o2; + } + return Math.max(o2, o3); +} +__name(fixOffset, "fixOffset"); +function validateTimezone(hours, minutes) { + return -23 <= hours && hours <= 23 && (minutes == null || 0 <= minutes && minutes <= 59); +} +__name(validateTimezone, "validateTimezone"); +var validIANATimezoneCache = {}; +function isValidTimezoneIANAString(timeZoneString) { + if (validIANATimezoneCache[timeZoneString]) + return true; + try { + new Intl.DateTimeFormat(void 0, { timeZone: timeZoneString }); + validIANATimezoneCache[timeZoneString] = true; + return true; + } catch (error) { + return false; + } +} +__name(isValidTimezoneIANAString, "isValidTimezoneIANAString"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/formatters/index.js +var MILLISECONDS_IN_MINUTE2 = 60 * 1e3; +var formatters2 = { + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: /* @__PURE__ */ __name(function(date, token, options) { + const timezoneOffset = getTimeZoneOffset(options.timeZone, date); + if (timezoneOffset === 0) { + return "Z"; + } + switch (token) { + // Hours and optional minutes + case "X": + return formatTimezoneWithOptionalMinutes2(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimeter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case "XXXX": + case "XX": + return formatTimezone2(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimeter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case "XXXXX": + case "XXX": + // Hours and minutes with `:` delimeter + default: + return formatTimezone2(timezoneOffset, ":"); + } + }, "X"), + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: /* @__PURE__ */ __name(function(date, token, options) { + const timezoneOffset = getTimeZoneOffset(options.timeZone, date); + switch (token) { + // Hours and optional minutes + case "x": + return formatTimezoneWithOptionalMinutes2(timezoneOffset); + // Hours, minutes and optional seconds without `:` delimeter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case "xxxx": + case "xx": + return formatTimezone2(timezoneOffset); + // Hours, minutes and optional seconds with `:` delimeter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case "xxxxx": + case "xxx": + // Hours and minutes with `:` delimeter + default: + return formatTimezone2(timezoneOffset, ":"); + } + }, "x"), + // Timezone (GMT) + O: /* @__PURE__ */ __name(function(date, token, options) { + const timezoneOffset = getTimeZoneOffset(options.timeZone, date); + switch (token) { + // Short + case "O": + case "OO": + case "OOO": + return "GMT" + formatTimezoneShort2(timezoneOffset, ":"); + // Long + case "OOOO": + default: + return "GMT" + formatTimezone2(timezoneOffset, ":"); + } + }, "O"), + // Timezone (specific non-location) + z: /* @__PURE__ */ __name(function(date, token, options) { + switch (token) { + // Short + case "z": + case "zz": + case "zzz": + return tzIntlTimeZoneName("short", date, options); + // Long + case "zzzz": + default: + return tzIntlTimeZoneName("long", date, options); + } + }, "z") +}; +function getTimeZoneOffset(timeZone, originalDate) { + const timeZoneOffset = timeZone ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE2 : originalDate?.getTimezoneOffset() ?? 0; + if (Number.isNaN(timeZoneOffset)) { + throw new RangeError("Invalid time zone specified: " + timeZone); + } + return timeZoneOffset; +} +__name(getTimeZoneOffset, "getTimeZoneOffset"); +function addLeadingZeros2(number, targetLength) { + const sign = number < 0 ? "-" : ""; + let output = Math.abs(number).toString(); + while (output.length < targetLength) { + output = "0" + output; + } + return sign + output; +} +__name(addLeadingZeros2, "addLeadingZeros"); +function formatTimezone2(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = addLeadingZeros2(Math.floor(absOffset / 60), 2); + const minutes = addLeadingZeros2(Math.floor(absOffset % 60), 2); + return sign + hours + delimiter + minutes; +} +__name(formatTimezone2, "formatTimezone"); +function formatTimezoneWithOptionalMinutes2(offset, delimiter) { + if (offset % 60 === 0) { + const sign = offset > 0 ? "-" : "+"; + return sign + addLeadingZeros2(Math.abs(offset) / 60, 2); + } + return formatTimezone2(offset, delimiter); +} +__name(formatTimezoneWithOptionalMinutes2, "formatTimezoneWithOptionalMinutes"); +function formatTimezoneShort2(offset, delimiter = "") { + const sign = offset > 0 ? "-" : "+"; + const absOffset = Math.abs(offset); + const hours = Math.floor(absOffset / 60); + const minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + return sign + String(hours) + delimiter + addLeadingZeros2(minutes, 2); +} +__name(formatTimezoneShort2, "formatTimezoneShort"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/getTimezoneOffsetInMilliseconds/index.js +function getTimezoneOffsetInMilliseconds2(date) { + const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); + utcDate.setUTCFullYear(date.getFullYear()); + return +date - +utcDate; +} +__name(getTimezoneOffsetInMilliseconds2, "getTimezoneOffsetInMilliseconds"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzPattern/index.js +var tzPattern = /(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/; + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toDate/index.js +var MILLISECONDS_IN_HOUR2 = 36e5; +var MILLISECONDS_IN_MINUTE3 = 6e4; +var DEFAULT_ADDITIONAL_DIGITS = 2; +var patterns2 = { + dateTimePattern: /^([0-9W+-]+)(T| )(.*)/, + datePattern: /^([0-9W+-]+)(.*)/, + plainTime: /:/, + // year tokens + YY: /^(\d{2})$/, + YYY: [ + /^([+-]\d{2})$/, + // 0 additional digits + /^([+-]\d{3})$/, + // 1 additional digit + /^([+-]\d{4})$/ + // 2 additional digits + ], + YYYY: /^(\d{4})/, + YYYYY: [ + /^([+-]\d{4})/, + // 0 additional digits + /^([+-]\d{5})/, + // 1 additional digit + /^([+-]\d{6})/ + // 2 additional digits + ], + // date tokens + MM: /^-(\d{2})$/, + DDD: /^-?(\d{3})$/, + MMDD: /^-?(\d{2})-?(\d{2})$/, + Www: /^-?W(\d{2})$/, + WwwD: /^-?W(\d{2})-?(\d{1})$/, + HH: /^(\d{2}([.,]\d*)?)$/, + HHMM: /^(\d{2}):?(\d{2}([.,]\d*)?)$/, + HHMMSS: /^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/, + // time zone tokens (to identify the presence of a tz) + timeZone: tzPattern +}; +function toDate2(argument, options = {}) { + if (arguments.length < 1) { + throw new TypeError("1 argument required, but only " + arguments.length + " present"); + } + if (argument === null) { + return /* @__PURE__ */ new Date(NaN); + } + const additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits); + if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) { + throw new RangeError("additionalDigits must be 0, 1 or 2"); + } + if (argument instanceof Date || typeof argument === "object" && Object.prototype.toString.call(argument) === "[object Date]") { + return new Date(argument.getTime()); + } else if (typeof argument === "number" || Object.prototype.toString.call(argument) === "[object Number]") { + return new Date(argument); + } else if (!(Object.prototype.toString.call(argument) === "[object String]")) { + return /* @__PURE__ */ new Date(NaN); + } + const dateStrings = splitDateString(argument); + const { year, restDateString } = parseYear(dateStrings.date, additionalDigits); + const date = parseDate(restDateString, year); + if (date === null || isNaN(date.getTime())) { + return /* @__PURE__ */ new Date(NaN); + } + if (date) { + const timestamp = date.getTime(); + let time = 0; + let offset; + if (dateStrings.time) { + time = parseTime(dateStrings.time); + if (time === null || isNaN(time)) { + return /* @__PURE__ */ new Date(NaN); + } + } + if (dateStrings.timeZone || options.timeZone) { + offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time)); + if (isNaN(offset)) { + return /* @__PURE__ */ new Date(NaN); + } + } else { + offset = getTimezoneOffsetInMilliseconds2(new Date(timestamp + time)); + offset = getTimezoneOffsetInMilliseconds2(new Date(timestamp + time + offset)); + } + return new Date(timestamp + time + offset); + } else { + return /* @__PURE__ */ new Date(NaN); + } +} +__name(toDate2, "toDate"); +function splitDateString(dateString) { + const dateStrings = {}; + let parts = patterns2.dateTimePattern.exec(dateString); + let timeString; + if (!parts) { + parts = patterns2.datePattern.exec(dateString); + if (parts) { + dateStrings.date = parts[1]; + timeString = parts[2]; + } else { + dateStrings.date = null; + timeString = dateString; + } + } else { + dateStrings.date = parts[1]; + timeString = parts[3]; + } + if (timeString) { + const token = patterns2.timeZone.exec(timeString); + if (token) { + dateStrings.time = timeString.replace(token[1], ""); + dateStrings.timeZone = token[1].trim(); + } else { + dateStrings.time = timeString; + } + } + return dateStrings; +} +__name(splitDateString, "splitDateString"); +function parseYear(dateString, additionalDigits) { + if (dateString) { + const patternYYY = patterns2.YYY[additionalDigits]; + const patternYYYYY = patterns2.YYYYY[additionalDigits]; + let token = patterns2.YYYY.exec(dateString) || patternYYYYY.exec(dateString); + if (token) { + const yearString = token[1]; + return { + year: parseInt(yearString, 10), + restDateString: dateString.slice(yearString.length) + }; + } + token = patterns2.YY.exec(dateString) || patternYYY.exec(dateString); + if (token) { + const centuryString = token[1]; + return { + year: parseInt(centuryString, 10) * 100, + restDateString: dateString.slice(centuryString.length) + }; + } + } + return { + year: null + }; +} +__name(parseYear, "parseYear"); +function parseDate(dateString, year) { + if (year === null) { + return null; + } + let date; + let month; + let week; + if (!dateString || !dateString.length) { + date = /* @__PURE__ */ new Date(0); + date.setUTCFullYear(year); + return date; + } + let token = patterns2.MM.exec(dateString); + if (token) { + date = /* @__PURE__ */ new Date(0); + month = parseInt(token[1], 10) - 1; + if (!validateDate(year, month)) { + return /* @__PURE__ */ new Date(NaN); + } + date.setUTCFullYear(year, month); + return date; + } + token = patterns2.DDD.exec(dateString); + if (token) { + date = /* @__PURE__ */ new Date(0); + const dayOfYear = parseInt(token[1], 10); + if (!validateDayOfYearDate(year, dayOfYear)) { + return /* @__PURE__ */ new Date(NaN); + } + date.setUTCFullYear(year, 0, dayOfYear); + return date; + } + token = patterns2.MMDD.exec(dateString); + if (token) { + date = /* @__PURE__ */ new Date(0); + month = parseInt(token[1], 10) - 1; + const day = parseInt(token[2], 10); + if (!validateDate(year, month, day)) { + return /* @__PURE__ */ new Date(NaN); + } + date.setUTCFullYear(year, month, day); + return date; + } + token = patterns2.Www.exec(dateString); + if (token) { + week = parseInt(token[1], 10) - 1; + if (!validateWeekDate(week)) { + return /* @__PURE__ */ new Date(NaN); + } + return dayOfISOWeekYear(year, week); + } + token = patterns2.WwwD.exec(dateString); + if (token) { + week = parseInt(token[1], 10) - 1; + const dayOfWeek = parseInt(token[2], 10) - 1; + if (!validateWeekDate(week, dayOfWeek)) { + return /* @__PURE__ */ new Date(NaN); + } + return dayOfISOWeekYear(year, week, dayOfWeek); + } + return null; +} +__name(parseDate, "parseDate"); +function parseTime(timeString) { + let hours; + let minutes; + let token = patterns2.HH.exec(timeString); + if (token) { + hours = parseFloat(token[1].replace(",", ".")); + if (!validateTime(hours)) { + return NaN; + } + return hours % 24 * MILLISECONDS_IN_HOUR2; + } + token = patterns2.HHMM.exec(timeString); + if (token) { + hours = parseInt(token[1], 10); + minutes = parseFloat(token[2].replace(",", ".")); + if (!validateTime(hours, minutes)) { + return NaN; + } + return hours % 24 * MILLISECONDS_IN_HOUR2 + minutes * MILLISECONDS_IN_MINUTE3; + } + token = patterns2.HHMMSS.exec(timeString); + if (token) { + hours = parseInt(token[1], 10); + minutes = parseInt(token[2], 10); + const seconds = parseFloat(token[3].replace(",", ".")); + if (!validateTime(hours, minutes, seconds)) { + return NaN; + } + return hours % 24 * MILLISECONDS_IN_HOUR2 + minutes * MILLISECONDS_IN_MINUTE3 + seconds * 1e3; + } + return null; +} +__name(parseTime, "parseTime"); +function dayOfISOWeekYear(isoWeekYear, week, day) { + week = week || 0; + day = day || 0; + const date = /* @__PURE__ */ new Date(0); + date.setUTCFullYear(isoWeekYear, 0, 4); + const fourthOfJanuaryDay = date.getUTCDay() || 7; + const diff = week * 7 + day + 1 - fourthOfJanuaryDay; + date.setUTCDate(date.getUTCDate() + diff); + return date; +} +__name(dayOfISOWeekYear, "dayOfISOWeekYear"); +var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +function isLeapYearIndex(year) { + return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0; +} +__name(isLeapYearIndex, "isLeapYearIndex"); +function validateDate(year, month, date) { + if (month < 0 || month > 11) { + return false; + } + if (date != null) { + if (date < 1) { + return false; + } + const isLeapYear = isLeapYearIndex(year); + if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) { + return false; + } + if (!isLeapYear && date > DAYS_IN_MONTH[month]) { + return false; + } + } + return true; +} +__name(validateDate, "validateDate"); +function validateDayOfYearDate(year, dayOfYear) { + if (dayOfYear < 1) { + return false; + } + const isLeapYear = isLeapYearIndex(year); + if (isLeapYear && dayOfYear > 366) { + return false; + } + if (!isLeapYear && dayOfYear > 365) { + return false; + } + return true; +} +__name(validateDayOfYearDate, "validateDayOfYearDate"); +function validateWeekDate(week, day) { + if (week < 0 || week > 52) { + return false; + } + if (day != null && (day < 0 || day > 6)) { + return false; + } + return true; +} +__name(validateWeekDate, "validateWeekDate"); +function validateTime(hours, minutes, seconds) { + if (hours < 0 || hours >= 25) { + return false; + } + if (minutes != null && (minutes < 0 || minutes >= 60)) { + return false; + } + if (seconds != null && (seconds < 0 || seconds >= 60)) { + return false; + } + return true; +} +__name(validateTime, "validateTime"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/index.js +var tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g; +function format2(date, formatStr, options = {}) { + formatStr = String(formatStr); + const matches = formatStr.match(tzFormattingTokensRegExp); + if (matches) { + const d = toDate2(options.originalDate || date, options); + formatStr = matches.reduce(function(result, token) { + if (token[0] === "'") { + return result; + } + const pos = result.indexOf(token); + const precededByQuotedSection = result[pos - 1] === "'"; + const replaced = result.replace(token, "'" + formatters2[token[0]](d, token, options) + "'"); + return precededByQuotedSection ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1) : replaced; + }, formatStr); + } + return format(date, formatStr, options); +} +__name(format2, "format"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toZonedTime/index.js +function toZonedTime(date, timeZone, options) { + date = toDate2(date, options); + const offsetMilliseconds = tzParseTimezone(timeZone, date, true); + const d = new Date(date.getTime() - offsetMilliseconds); + const resultDate = /* @__PURE__ */ new Date(0); + resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()); + resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds()); + return resultDate; +} +__name(toZonedTime, "toZonedTime"); + +// node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/formatInTimeZone/index.js +function formatInTimeZone(date, timeZone, formatStr, options) { + options = { + ...options, + timeZone, + originalDate: date + }; + return format2(toZonedTime(date, timeZone, { timeZone: options.timeZone }), formatStr, options); +} +__name(formatInTimeZone, "formatInTimeZone"); + +// functions/[[path]].ts +var { preflight, corsify } = y(); +var router = t(); +router.all("/*", preflight); +router.all("/(ajax|rpc)/:path+", async (req, env) => { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(req.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + method: req.method, + headers, + body: req.body + }); + return fetch(newReq); +}); +router.all("/(~|-)/:path+", async (req, env) => { + const url = new URL(req.url); + const prefix = url.pathname.split("/")[1]; + switch (prefix) { + case "-": + url.hostname = "i.pximg.net"; + break; + case "~": + url.hostname = "s.pximg.net"; + break; + default: + return new Response("Invalid request", { status: 400 }); + } + url.pathname = url.pathname.substring(prefix.length + 1); + const headers = new Headers(); + const proxyHeaders = [ + "accept", + "accept-encoding", + "accept-language", + "range", + "if-range", + "if-none-match", + "if-modified-since", + "cache-control" + ]; + for (const h2 of proxyHeaders) { + if (req.headers.has(h2)) { + headers.set(h2, req.headers.get(h2)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + return fetch(newReq); +}); +router.all("/api/illust/random", async (req, env) => { + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + url.pathname = "/ajax/illust/discovery"; + const requestImage = (req.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + url.searchParams.set("mode", url.searchParams.get("mode") ?? "safe"); + url.searchParams.set("max", requestImage ? "1" : url.searchParams.get("max") ?? "18"); + const headers = new Headers(req.headers); + headers.set("referer", "https://www.pixiv.net/"); + const newReq = new Request(url.toString(), { + headers + }); + const res = await fetch(newReq); + const data = await res.json(); + const illusts = (data.illusts ?? []).filter( + (value) => Object.keys(value).includes("id") + ); + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || "https://i.pximg.net/").replace(/\/$/, "") + "/"; + illusts.forEach((value) => { + try { + const updateDate = new Date(value.updateDate); + const middle = `img/${formatInTimeZone( + updateDate, + "Asia/Tokyo", + "yyyy/MM/dd/HH/mm/ss" + )}/${value.id}`; + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg` + }; + } catch (error) { + console.error("Error formatting date for illust:", value.id, error); + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg` + }; + } + }); + if (requestImage) { + return new Response(null, { status: 302, headers: { Location: illusts[0].urls.regular } }); + } + return new Response(JSON.stringify(illusts), { + headers: { "Content-Type": "application/json" } + }); +}); +router.all("/api/user", async (req, env) => { + const token = req.headers.get("cookie")?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get("token"); + if (!token) { + return new Response(JSON.stringify({ message: "\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5" }), { status: 403, headers: { "Content-Type": "application/json" } }); + } + const url = new URL(req.url); + url.hostname = "www.pixiv.net"; + url.pathname = "/"; + const headers = new Headers(req.headers); + headers.set("cookie", `PHPSESSID=${token}`); + const newReq = new Request(url.toString(), { + headers + }); + const res = await fetch(newReq); + const text = await res.text(); + let meta = null; + class MetaHandler { + constructor(type) { + this.type = type; + } + static { + __name(this, "MetaHandler"); + } + text(chunk) { + try { + if (this.type === "legacy") { + const data = JSON.parse(chunk.text); + meta = { + userData: data.userData, + token: data.token || "" + }; + } else { + const nextData = JSON.parse(chunk.text); + const perloadState = JSON.parse( + nextData?.props?.pageProps?.serverSerializedPreloadedState + ); + meta = { + userData: perloadState?.userData?.self, + token: perloadState?.api?.token || "" + }; + } + } catch (e) { + console.error("Error parsing meta", e); + } + } + } + const rewriter = new HTMLRewriter().on('meta[name="global-data"]', new MetaHandler("legacy")).on("script#__NEXT_DATA__", new MetaHandler("next")); + await rewriter.transform(new Response(text)).text(); + if (!meta || !meta.userData) { + return new Response(JSON.stringify({ message: "\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001" }), { status: 401, headers: { "Content-Type": "application/json" } }); + } + const responseHeaders = new Headers({ + "cache-control": "no-cache", + "set-cookie": `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`, + "Content-Type": "application/json" + }); + return new Response(JSON.stringify(meta), { headers: responseHeaders }); +}); +var path_default = { + fetch: /* @__PURE__ */ __name((req, env, ctx) => router.handle(req, env, ctx).then(corsify).catch((err) => { + console.error(err); + return new Response("Internal Server Error", { status: 500 }); + }), "fetch") +}; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-lcE67Q/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-lcE67Q/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-m5fb1Z/[[path]].js.map b/.wrangler/tmp/dev-m5fb1Z/[[path]].js.map new file mode 100644 index 0000000..1f82afe --- /dev/null +++ b/.wrangler/tmp/dev-m5fb1Z/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-lcE67Q/checked-fetch.js", "../../../node_modules/.pnpm/itty-router@5.0.22/node_modules/itty-router/index.mjs", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js", "../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDefaultOptions.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzIntlTimeZoneName/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzTokenizeDate/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/newDateUTC/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzParseTimezone/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/formatters/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzPattern/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toDate/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toZonedTime/index.js", "../../../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/formatInTimeZone/index.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-lcE67Q/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-lcE67Q/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-m5fb1Z", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "const e=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of s.searchParams)c[e]=c[e]?[].concat(c[e],t):t;for(let[c,n,l,i]of t)if((c==e.method||\"ALL\"==c)&&(a=s.pathname.match(n))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e=\"\",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...c)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\\/+(\\/|$)/g,\"$1\")).replace(/(\\/?\\.?):(\\w+)\\+/g,\"($1(?<$2>*))\").replace(/(\\/?\\.?):(\\w+)/g,\"($1(?<$2>[^$1/]+?))\").replace(/\\./g,\"\\\\.\").replace(/(\\/?)\\*/g,\"($1.*)?\")}/*$`),c,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,c=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of c.searchParams)n[e]=n[e]?[].concat(n[e],t):t;e:try{for(let t of r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,n,l,i]of t)if((r==e.method||\"ALL\"==r)&&(s=c.pathname.match(n))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e=\"text/plain; charset=utf-8\",t)=>(r,o={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o.url?void 0:o);return a.headers.set(\"content-type\",e),a},o=r(\"application/json; charset=utf-8\",JSON.stringify),a=e=>({400:\"Bad Request\",401:\"Unauthorized\",403:\"Forbidden\",404:\"Not Found\",500:\"Internal Server Error\"}[e]||\"Unknown Error\"),s=(e=500,t)=>{if(e instanceof Error){const{message:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,...\"object\"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},c=e=>{e.proxy=new Proxy(e.proxy??e,{get:(t,r)=>t[r]?.bind?.(e)??t[r]??t?.params?.[r]})},n=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:n=[],...l}={})=>t({before:[c,...n],catch:s,finally:[(e,...t)=>e??r(...t),e,...a],...l});class l extends Error{status;constructor(e=500,t){super(\"object\"==typeof t?t.error:t),\"object\"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=r(\"text/plain; charset=utf-8\",String),f=r(\"text/html\"),u=r(\"image/jpeg\"),h=r(\"image/png\"),g=r(\"image/webp\"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get(\"Cookie\")||\"\").split(/;\\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t=\"*\",credentials:r=!1,allowMethods:o=\"*\",allowHeaders:a,exposeHeaders:s,maxAge:c}=e,n=e=>{const o=e?.headers.get(\"origin\");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):\"*\"==t&&r?o:t},l=(e,t)=>{for(const[r,o]of Object.entries(t))o&&e.headers.append(r,o);return e};return{corsify:(e,t)=>e?.headers?.get(\"access-control-allow-origin\")||101==e.status?e:l(e.clone(),{\"access-control-allow-origin\":n(t),\"access-control-allow-credentials\":r}),preflight:e=>{if(\"OPTIONS\"==e.method){const t=new Response(null,{status:204});return l(t,{\"access-control-allow-origin\":n(e),\"access-control-allow-methods\":o?.join?.(\",\")??o,\"access-control-expose-headers\":s?.join?.(\",\")??s,\"access-control-allow-headers\":a?.join?.(\",\")??a??e.headers.get(\"access-control-request-headers\"),\"access-control-max-age\":c,\"access-control-allow-credentials\":r})}}}};export{n as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,c as withParams};\n", "const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n", "export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n", "import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n", "const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n", "/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n", "import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n", "export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n", "export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n", "import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n", "import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n", "let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n", "import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n", "import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n", "import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n", "import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n", "export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n", "import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n", "import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n", "const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n", "const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n", "/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n", "import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n", "import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n", "import { getDefaultOptions } from 'date-fns';\n/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport function tzIntlTimeZoneName(length, date, options) {\n const defaultOptions = getDefaultOptions();\n const dtf = getDTF(length, options.timeZone, options.locale ?? defaultOptions.locale);\n return 'formatToParts' in dtf ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date);\n}\nfunction partsTimeZone(dtf, date) {\n const formatted = dtf.formatToParts(date);\n for (let i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value;\n }\n }\n return undefined;\n}\nfunction hackyTimeZone(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, '');\n const tzNameMatch = / [\\w-+ ]+$/.exec(formatted);\n return tzNameMatch ? tzNameMatch[0].substr(1) : '';\n}\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length,\n });\n}\n", "/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport function tzTokenizeDate(date, timeZone) {\n const dtf = getDateTimeFormat(timeZone);\n return 'formatToParts' in dtf ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\nfunction partsOffset(dtf, date) {\n try {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const pos = typeToPos[formatted[i].type];\n if (pos !== undefined) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n }\n catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n throw error;\n }\n}\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n // const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n return [\n parseInt(parsed[3], 10),\n parseInt(parsed[1], 10),\n parseInt(parsed[2], 10),\n parseInt(parsed[4], 10),\n parseInt(parsed[5], 10),\n parseInt(parsed[6], 10),\n ];\n}\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nconst dtfCache = {};\n// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\nconst testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n}).format(new Date('2014-06-25T04:00:00.123Z'));\nconst hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||\n testDateFormatted === '\u200E06\u200E/\u200E25\u200E/\u200E2014\u200E \u200E00\u200E:\u200E00\u200E:\u200E00';\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n dtfCache[timeZone] = hourCycleSupported\n ? new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n : new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n }\n return dtfCache[timeZone];\n}\n", "/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n const utcDate = new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\n", "import { tzTokenizeDate } from '../tzTokenizeDate/index.js';\nimport { newDateUTC } from '../newDateUTC/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\n};\n// Parse constious time zone offset formats to an offset in milliseconds\nexport function tzParseTimezone(timezoneString, date, isUtcDate) {\n // Empty string\n if (!timezoneString) {\n return 0;\n }\n // Z\n let token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0;\n }\n let hours;\n let absoluteOffset;\n // \u00B1hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[1], 10);\n if (!validateTimezone(hours)) {\n return NaN;\n }\n return -(hours * MILLISECONDS_IN_HOUR);\n }\n // \u00B1hh:mm or \u00B1hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n const minutes = parseInt(token[3], 10);\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n // IANA time zone\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n const utcDate = isUtcDate ? date : toUtcDate(date);\n const offset = calcOffset(utcDate, timezoneString);\n const fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\nfunction calcOffset(date, timezoneString) {\n const tokens = tzTokenizeDate(date, timezoneString);\n // ms dropped because it's not provided by tzTokenizeDate\n const asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();\n let asTS = date.getTime();\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset, timezoneString) {\n const localTS = date.getTime();\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - offset;\n // Test whether the zone matches the offset for this ts\n const o2 = calcOffset(new Date(utcGuess), timezoneString);\n // If so, offset didn't change, and we're done\n if (offset === o2) {\n return offset;\n }\n // If not, change the ts by the difference in the offset\n utcGuess -= o2 - offset;\n // If that gives us the local time we want, we're done\n const o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n return Math.max(o2, o3);\n}\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));\n}\nconst validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString])\n return true;\n try {\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n", "import { tzIntlTimeZoneName } from '../../_lib/tzIntlTimeZoneName/index.js';\nimport { tzParseTimezone } from '../../_lib/tzParseTimezone/index.js';\nconst MILLISECONDS_IN_MINUTE = 60 * 1000;\nexport const formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, options) {\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', date, options);\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', date, options);\n }\n },\n};\nfunction getTimeZoneOffset(timeZone, originalDate) {\n const timeZoneOffset = timeZone\n ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n : originalDate?.getTimezoneOffset() ?? 0;\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone);\n }\n return timeZoneOffset;\n}\nfunction addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? '-' : '';\n let output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nfunction formatTimezone(offset, delimiter = '') {\n const sign = offset > 0 ? '-' : '+';\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n const minutes = addLeadingZeros(Math.floor(absOffset % 60), 2);\n return sign + hours + delimiter + minutes;\n}\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\nfunction formatTimezoneShort(offset, delimiter = '') {\n const sign = offset > 0 ? '-' : '+';\n const absOffset = Math.abs(offset);\n const hours = Math.floor(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n", "/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return +date - +utcDate;\n}\n", "/** Regex to identify the presence of a time zone specifier in a date string */\nexport const tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\n", "import { getTimezoneOffsetInMilliseconds } from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { tzPattern } from '../_lib/tzPattern/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst DEFAULT_ADDITIONAL_DIGITS = 2;\nconst patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n};\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param argument the value to convert\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {string} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n *\n * @returns the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function toDate(argument, options = {}) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n if (argument === null) {\n return new Date(NaN);\n }\n const additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n }\n else if (typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n }\n else if (!(Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n const dateStrings = splitDateString(argument);\n const { year, restDateString } = parseYear(dateStrings.date, additionalDigits);\n const date = parseDate(restDateString, year);\n if (date === null || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (date) {\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (time === null || isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n }\n else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n }\n else {\n return new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n const dateStrings = {};\n let parts = patterns.dateTimePattern.exec(dateString);\n let timeString;\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n }\n else {\n dateStrings.date = null;\n timeString = dateString;\n }\n }\n else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n const token = patterns.timeZone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timeZone = token[1].trim();\n }\n else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n if (dateString) {\n const patternYYY = patterns.YYY[additionalDigits];\n const patternYYYYY = patterns.YYYYY[additionalDigits];\n // YYYY or \u00B1YYYYY\n let token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n const yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n };\n }\n // YY or \u00B1YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n const centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n };\n }\n }\n // Invalid ISO-formatted year\n return {\n year: null,\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n let date;\n let month;\n let week;\n // YYYY\n if (!dateString || !dateString.length) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n // YYYY-MM\n let token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n if (!validateDate(year, month)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n const dayOfYear = parseInt(token[1], 10);\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n const day = parseInt(token[2], 10);\n if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n if (!validateWeekDate(week)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week);\n }\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n const dayOfWeek = parseInt(token[2], 10) - 1;\n if (!validateWeekDate(week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n // Invalid ISO-formatted date\n return null;\n}\nfunction parseTime(timeString) {\n let hours;\n let minutes;\n // hh\n let token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n if (!validateTime(hours)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR;\n }\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n if (!validateTime(hours, minutes)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n const seconds = parseFloat(token[3].replace(',', '.'));\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n }\n // Invalid ISO-formatted time\n return null;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n// Validation functions\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours < 0 || hours >= 25) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}\n", "import { format as dateFnsFormat } from 'date-fns/format';\nimport { formatters } from './formatters/index.js';\nimport { toDate } from '../toDate/index.js';\nconst tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may consty by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param date the original date\n * @param formatStr the string of tokens\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n * improve correctness of the replaced timezone token close to the DST threshold.\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options = {}) {\n formatStr = String(formatStr);\n const matches = formatStr.match(tzFormattingTokensRegExp);\n if (matches) {\n const d = toDate(options.originalDate || date, options);\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result; // This is a quoted portion, matched only to ensure we don't match inside it\n }\n const pos = result.indexOf(token);\n const precededByQuotedSection = result[pos - 1] === \"'\";\n const replaced = result.replace(token, \"'\" + formatters[token[0]](d, token, options) + \"'\");\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection\n ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n : replaced;\n }, formatStr);\n }\n return dateFnsFormat(date, formatStr, options);\n}\n", "import { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { toDate } from '../toDate/index.js';\n/**\n * @name toZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param date the date with the relevant UTC time\n * @param timeZone the time zone to get local time for, can be an offset or IANA time zone\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n *\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = toZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport function toZonedTime(date, timeZone, options) {\n date = toDate(date, options);\n const offsetMilliseconds = tzParseTimezone(timeZone, date, true);\n const d = new Date(date.getTime() - offsetMilliseconds);\n const resultDate = new Date(0);\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());\n return resultDate;\n}\n", "import { format } from '../format/index.js';\nimport { toZonedTime } from '../toZonedTime/index.js';\n/**\n * @name formatInTimeZone\n * @category Time Zone Helpers\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\n *\n * @param date the date representing the local time / real UTC time\n * @param timeZone the time zone this date should be formatted for; can be an offset or IANA time zone\n * @param formatStr the string of tokens\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n */\nexport function formatInTimeZone(date, timeZone, formatStr, options) {\n options = {\n ...options,\n timeZone,\n originalDate: date,\n };\n return format(toZonedTime(date, timeZone, { timeZone: options.timeZone }), formatStr, options);\n}\n", "import { Router, cors } from 'itty-router'\nimport { formatInTimeZone } from 'date-fns-tz'\n\nconst { preflight, corsify } = cors()\n\nconst router = Router()\n\nrouter.all('/*', preflight)\n\n// Generic proxy\nrouter.all('/(ajax|rpc)/:path+', async (req, env) => {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(req.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n method: req.method,\n headers,\n body: req.body,\n })\n\n return fetch(newReq)\n})\n\n// Image proxy\nrouter.all('/(~|-)/:path+', async (req, env) => {\n const url = new URL(req.url)\n const prefix = url.pathname.split('/')[1]\n\n switch (prefix) {\n case '-':\n url.hostname = 'i.pximg.net'\n break\n case '~':\n url.hostname = 's.pximg.net'\n break\n default:\n return new Response('Invalid request', { status: 400 })\n }\n\n url.pathname = url.pathname.substring(prefix.length + 1)\n\n const headers = new Headers()\n const proxyHeaders = [\n 'accept',\n 'accept-encoding',\n 'accept-language',\n 'range',\n 'if-range',\n 'if-none-match',\n 'if-modified-since',\n 'cache-control',\n ]\n\n for (const h of proxyHeaders) {\n if (req.headers.has(h)) {\n headers.set(h, req.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n return fetch(newReq)\n})\n\nrouter.all('/api/illust/random', async (req, env) => {\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n url.pathname = '/ajax/illust/discovery'\n\n const requestImage =\n (req.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n url.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n url.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers(req.headers)\n headers.set('referer', 'https://www.pixiv.net/')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const res = await fetch(newReq)\n const data = await res.json()\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n Object.keys(value).includes('id')\n )\n\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n illusts.forEach((value: any) => {\n try {\n const updateDate = new Date(value.updateDate)\n const middle = `img/${formatInTimeZone(\n updateDate,\n 'Asia/Tokyo',\n 'yyyy/MM/dd/HH/mm/ss'\n )}/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } catch (error) {\n console.error('Error formatting date for illust:', value.id, error)\n // Fallback URLs without date formatting\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/img/2024/01/01/00/00/00/${value.id}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/img/2024/01/01/00/00/00/${value.id}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/img/2024/01/01/00/00/00/${value.id}_p0.jpg`,\n }\n }\n })\n\n if (requestImage) {\n return new Response(null, { status: 302, headers: { Location: illusts[0].urls.regular } })\n }\n\n return new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n })\n})\n\nrouter.all('/api/user', async (req, env) => {\n const token = req.headers.get('cookie')?.match(/PHPSESSID=([^;]+)/)?.[1] || new URL(req.url).searchParams.get('token')\n if (!token) {\n return new Response(JSON.stringify({ message: '\u672A\u914D\u7F6E\u7528\u6237\u5BC6\u94A5' }), { status: 403, headers: { 'Content-Type': 'application/json' } })\n }\n\n const url = new URL(req.url)\n url.hostname = 'www.pixiv.net'\n url.pathname = '/'\n\n const headers = new Headers(req.headers)\n headers.set('cookie', `PHPSESSID=${token}`)\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const res = await fetch(newReq)\n const text = await res.text()\n\n let meta: { userData: any; token: string } | null = null\n\n class MetaHandler {\n constructor(private type: 'legacy' | 'next') {}\n text(chunk: Text) {\n try {\n if (this.type === 'legacy') {\n const data = JSON.parse(chunk.text)\n meta = {\n userData: data.userData,\n token: data.token || '',\n }\n } else {\n const nextData = JSON.parse(chunk.text)\n const perloadState = JSON.parse(\n nextData?.props?.pageProps?.serverSerializedPreloadedState\n )\n meta = {\n userData: perloadState?.userData?.self,\n token: perloadState?.api?.token || '',\n }\n }\n } catch (e) {\n console.error('Error parsing meta', e)\n }\n }\n }\n\n const rewriter = new HTMLRewriter()\n .on('meta[name=\"global-data\"]', new MetaHandler('legacy'))\n .on('script#__NEXT_DATA__', new MetaHandler('next'))\n\n await rewriter.transform(new Response(text)).text()\n\n if (!meta || !meta.userData) {\n return new Response(JSON.stringify({ message: '\u65E0\u6CD5\u83B7\u53D6\u767B\u5F55\u72B6\u6001' }), { status: 401, headers: { 'Content-Type': 'application/json' } })\n }\n\n const responseHeaders = new Headers({\n 'cache-control': 'no-cache',\n 'set-cookie': `CSRFTOKEN=${meta.token}; path=/; secure; sameSite=Lax`,\n 'Content-Type': 'application/json',\n })\n\n return new Response(JSON.stringify(meta), { headers: responseHeaders })\n})\n\nexport default {\n fetch: (req: Request, env: any, ctx: any) =>\n router\n .handle(req, env, ctx)\n .then(corsify)\n .catch((err) => {\n console.error(err)\n return new Response('Internal Server Error', { status: 500 })\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-lcE67Q\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-lcE67Q\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-lcE67Q\\\\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": ["t", "r", "o", "e", "n", "t", "r", "o", "e", "format", "defaultOptions", "defaultOptions", "defaultOptions", "localize", "formatLong", "format", "defaultOptions", "getDefaultOptions", "defaultOptions", "getDefaultOptions", "MILLISECONDS_IN_MINUTE", "formatters", "formatTimezoneWithOptionalMinutes", "formatTimezone", "formatTimezoneShort", "addLeadingZeros", "getTimezoneOffsetInMilliseconds", "MILLISECONDS_IN_HOUR", "MILLISECONDS_IN_MINUTE", "patterns", "toDate", "getTimezoneOffsetInMilliseconds", "format", "toDate", "formatters", "toDate", "format", "h"] +} diff --git a/.wrangler/tmp/dev-puTXdr/[[path]].js b/.wrangler/tmp/dev-puTXdr/[[path]].js new file mode 100644 index 0000000..eeaa1ff --- /dev/null +++ b/.wrangler/tmp/dev-puTXdr/[[path]].js @@ -0,0 +1,407 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-fNR4lX/checked-fetch.js +var urls = /* @__PURE__ */ new Set(); +function checkURL(request, init) { + const url = request instanceof URL ? request : new URL( + (typeof request === "string" ? new Request(request, init) : request).url + ); + if (url.port && url.port !== "443" && url.protocol === "https:") { + if (!urls.has(url.toString())) { + urls.add(url.toString()); + console.warn( + `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: + - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. +` + ); + } + } +} +__name(checkURL, "checkURL"); +globalThis.fetch = new Proxy(globalThis.fetch, { + apply(target, thisArg, argArray) { + const [request, init] = argArray; + checkURL(request, init); + return Reflect.apply(target, thisArg, argArray); + } +}); + +// functions/[[path]].ts +function corsHeaders() { + return { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With", + "Access-Control-Max-Age": "86400" + }; +} +__name(corsHeaders, "corsHeaders"); +function corsResponse(response) { + const headers = new Headers(response.headers); + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value); + }); + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers + }); +} +__name(corsResponse, "corsResponse"); +var path_default = { + fetch: /* @__PURE__ */ __name(async (request, env, ctx) => { + console.log("Worker fetch called:", request.method, request.url); + const url = new URL(request.url); + const path = url.pathname; + if (request.method === "OPTIONS") { + return new Response(null, { + status: 200, + headers: corsHeaders() + }); + } + try { + if (path === "/") { + return corsResponse(new Response("Pixiv Now Worker is running!", { + headers: { "Content-Type": "text/plain" } + })); + } + if (path === "/test") { + return corsResponse(new Response(JSON.stringify({ + message: "Test successful", + timestamp: Date.now(), + method: request.method, + path + }), { + headers: { "Content-Type": "application/json" } + })); + } + if (path === "/api/illust/random") { + return await handleRandomAPI(request, env, url); + } + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env); + } + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env); + } + if (path === "/api/user") { + return await handleUserAPI(request, env, url); + } + return corsResponse(new Response("Not Found", { + status: 404, + headers: { "Content-Type": "text/plain" } + })); + } catch (error) { + console.error("Worker error:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } + }, "fetch") +}; +async function handleRandomAPI(request, env, url) { + try { + const requestImage = (request.headers.get("accept")?.includes("image") || url.searchParams.get("format") === "image") && url.searchParams.get("format") !== "json"; + const mockIllusts = [ + { + id: "123456789", + title: "Test Illustration", + userId: "987654321", + userName: "Test Artist", + tags: ["test", "mock"], + updateDate: "2024-01-01T12:00:00+00:00", + urls: { + mini: "https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + thumb: "https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg", + small: "https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + regular: "https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg", + original: "https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg" + } + } + ]; + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })); + } + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in random API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleRandomAPI, "handleRandomAPI"); +async function handleGenericProxy(request, env) { + const url = new URL(request.url); + url.hostname = "www.pixiv.net"; + const headers = new Headers(request.headers); + headers.set("origin", "https://www.pixiv.net"); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleGenericProxy, "handleGenericProxy"); +async function handleImageProxy(request, env) { + const url = new URL(request.url); + const path = url.pathname.slice(2); + if (url.pathname.startsWith("/~")) { + if (env.VITE_PXIMG_BASEURL_S) { + url.href = env.VITE_PXIMG_BASEURL_S + path; + } else { + url.hostname = "s.pximg.net"; + url.pathname = "/" + path; + } + } else { + if (env.VITE_PXIMG_BASEURL_I) { + url.href = env.VITE_PXIMG_BASEURL_I + path; + } else { + url.hostname = "i.pximg.net"; + url.pathname = "/" + path; + } + } + const headers = new Headers(); + for (const h of ["accept", "accept-encoding", "accept-language", "cache-control", "user-agent"]) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)); + } + } + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const newReq = new Request(url.toString(), { + headers + }); + const response = await fetch(newReq); + return corsResponse(response); +} +__name(handleImageProxy, "handleImageProxy"); +async function handleUserAPI(request, env, url) { + try { + const userId = url.searchParams.get("id"); + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: "User ID is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + })); + } + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`); + const headers = new Headers(); + headers.set("referer", "https://www.pixiv.net/"); + headers.set("user-agent", env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"); + const response = await fetch(pixivUrl.toString(), { headers }); + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { "Content-Type": "application/json" } + })); + } + const data = await response.json(); + return corsResponse(new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" } + })); + } catch (error) { + console.error("Error in user API:", error); + return corsResponse(new Response(JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error" + }), { + status: 500, + headers: { "Content-Type": "application/json" } + })); + } +} +__name(handleUserAPI, "handleUserAPI"); + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts +var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } finally { + try { + if (request.body !== null && !request.bodyUsed) { + const reader = request.body.getReader(); + while (!(await reader.read()).done) { + } + } + } catch (e) { + console.error("Failed to drain the unused request body.", e); + } + } +}, "drainBody"); +var middleware_ensure_req_body_drained_default = drainBody; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts +function reduceError(e) { + return { + name: e?.name, + message: e?.message ?? String(e), + stack: e?.stack, + cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) + }; +} +__name(reduceError, "reduceError"); +var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { + try { + return await middlewareCtx.next(request, env); + } catch (e) { + const error = reduceError(e); + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" } + }); + } +}, "jsonError"); +var middleware_miniflare3_json_error_default = jsonError; + +// .wrangler/tmp/bundle-fNR4lX/middleware-insertion-facade.js +var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + middleware_ensure_req_body_drained_default, + middleware_miniflare3_json_error_default +]; +var middleware_insertion_facade_default = path_default; + +// node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts +var __facade_middleware__ = []; +function __facade_register__(...args) { + __facade_middleware__.push(...args.flat()); +} +__name(__facade_register__, "__facade_register__"); +function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { + const [head, ...tail] = middlewareChain; + const middlewareCtx = { + dispatch, + next(newRequest, newEnv) { + return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); + } + }; + return head(request, env, ctx, middlewareCtx); +} +__name(__facade_invokeChain__, "__facade_invokeChain__"); +function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { + return __facade_invokeChain__(request, env, ctx, dispatch, [ + ...__facade_middleware__, + finalMiddleware + ]); +} +__name(__facade_invoke__, "__facade_invoke__"); + +// .wrangler/tmp/bundle-fNR4lX/middleware-loader.entry.ts +var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { + constructor(scheduledTime, cron, noRetry) { + this.scheduledTime = scheduledTime; + this.cron = cron; + this.#noRetry = noRetry; + } + static { + __name(this, "__Facade_ScheduledController__"); + } + #noRetry; + noRetry() { + if (!(this instanceof ___Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + this.#noRetry(); + } +}; +function wrapExportedHandler(worker) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return worker; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { + if (worker.fetch === void 0) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }, "fetchDispatcher"); + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher = /* @__PURE__ */ __name(function(type, init) { + if (type === "scheduled" && worker.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return worker.scheduled(controller, env, ctx); + } + }, "dispatcher"); + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + } + }; +} +__name(wrapExportedHandler, "wrapExportedHandler"); +function wrapWorkerEntrypoint(klass) { + if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { + return klass; + } + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + return class extends klass { + #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === void 0) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }, "#fetchDispatcher"); + #dispatcher = /* @__PURE__ */ __name((type, init) => { + if (type === "scheduled" && super.scheduled !== void 0) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => { + } + ); + return super.scheduled(controller); + } + }, "#dispatcher"); + fetch(request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} +__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); +var WRAPPED_ENTRY; +if (typeof middleware_insertion_facade_default === "object") { + WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); +} else if (typeof middleware_insertion_facade_default === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); +} +var middleware_loader_entry_default = WRAPPED_ENTRY; +export { + __INTERNAL_WRANGLER_MIDDLEWARE__, + middleware_loader_entry_default as default +}; +//# sourceMappingURL=%5B%5Bpath%5D%5D.js.map diff --git a/.wrangler/tmp/dev-puTXdr/[[path]].js.map b/.wrangler/tmp/dev-puTXdr/[[path]].js.map new file mode 100644 index 0000000..ba20da6 --- /dev/null +++ b/.wrangler/tmp/dev-puTXdr/[[path]].js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../bundle-fNR4lX/checked-fetch.js", "../../../functions/%5B%5Bpath%5D%5D.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-fNR4lX/middleware-insertion-facade.js", "../../../node_modules/.pnpm/wrangler@4.42.1/node_modules/wrangler/templates/middleware/common.ts", "../bundle-fNR4lX/middleware-loader.entry.ts"], + "sourceRoot": "D:\\github\\pixivnow\\.wrangler\\tmp\\dev-puTXdr", + "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// \u624B\u52A8\u5B9E\u73B0 CORS \u5904\u7406\nfunction corsHeaders() {\n return {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n }\n}\n\nfunction corsResponse(response: Response) {\n const headers = new Headers(response.headers)\n Object.entries(corsHeaders()).forEach(([key, value]) => {\n headers.set(key, value)\n })\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n}\n\nexport default {\n fetch: async (request: Request, env: any, ctx: any) => {\n console.log('Worker fetch called:', request.method, request.url)\n \n const url = new URL(request.url)\n const path = url.pathname\n \n // \u5904\u7406 OPTIONS \u8BF7\u6C42\uFF08CORS \u9884\u68C0\uFF09\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 200,\n headers: corsHeaders(),\n })\n }\n \n try {\n // \u5065\u5EB7\u68C0\u67E5\u7AEF\u70B9\n if (path === '/') {\n return corsResponse(new Response('Pixiv Now Worker is running!', {\n headers: { 'Content-Type': 'text/plain' },\n }))\n }\n \n // \u6D4B\u8BD5\u7AEF\u70B9\n if (path === '/test') {\n return corsResponse(new Response(JSON.stringify({ \n message: 'Test successful', \n timestamp: Date.now(),\n method: request.method,\n path: path\n }), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n // \u968F\u673A\u56FE\u7247 API\n if (path === '/api/illust/random') {\n return await handleRandomAPI(request, env, url)\n }\n \n // \u901A\u7528\u4EE3\u7406 (ajax|rpc)\n if (path.match(/^\\/(ajax|rpc)\\//)) {\n return await handleGenericProxy(request, env)\n }\n \n // \u56FE\u7247\u4EE3\u7406 (~|-)\n if (path.match(/^\\/[~-]\\//)) {\n return await handleImageProxy(request, env)\n }\n \n // \u7528\u6237 API\n if (path === '/api/user') {\n return await handleUserAPI(request, env, url)\n }\n \n // 404\n return corsResponse(new Response('Not Found', { \n status: 404,\n headers: { 'Content-Type': 'text/plain' }\n }))\n \n } catch (error) {\n console.error('Worker error:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n },\n}\n\n// \u968F\u673A\u56FE\u7247 API \u5904\u7406\u5668\nasync function handleRandomAPI(request: Request, env: any, url: URL) {\n try {\n // \u7B80\u5316\u7248\u672C\uFF1A\u8FD4\u56DE\u6A21\u62DF\u6570\u636E\u800C\u4E0D\u662F\u8C03\u7528 Pixiv API\n const requestImage =\n (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') &&\n url.searchParams.get('format') !== 'json'\n\n // \u6A21\u62DF\u6570\u636E\u7528\u4E8E\u6D4B\u8BD5\n const mockIllusts = [\n {\n id: '123456789',\n title: 'Test Illustration',\n userId: '987654321',\n userName: 'Test Artist',\n tags: ['test', 'mock'],\n updateDate: '2024-01-01T12:00:00+00:00',\n urls: {\n mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg',\n small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg',\n original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg',\n }\n }\n ]\n\n if (requestImage && mockIllusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: mockIllusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(mockIllusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n\n /* \u539F\u59CB Pixiv API \u8C03\u7528\u4EE3\u7801 - \u6682\u65F6\u6CE8\u91CA\u6389\n const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery')\n pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe')\n pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18')\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n console.log('Fetching from Pixiv API:', pixivUrl.toString())\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n console.error('Pixiv API error:', response.status, response.statusText)\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n console.log('Pixiv API response:', data)\n\n // \u68C0\u67E5 API \u54CD\u5E94\u662F\u5426\u6709\u9519\u8BEF\n if (data.error) {\n console.error('Pixiv API returned error:', data.error)\n return corsResponse(new Response(JSON.stringify({ error: data.error }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const illusts = (data.illusts ?? []).filter((value: any) =>\n value && typeof value === 'object' && value.id\n )\n\n if (illusts.length === 0) {\n return corsResponse(new Response(JSON.stringify([]), {\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 Pixiv \u56FE\u7247 URL\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406 URL\n const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\\/$/, '') + '/'\n\n // \u5904\u7406\u56FE\u7247 URL\n illusts.forEach((value: any) => {\n try {\n if (value.updateDate) {\n const date = new Date(value.updateDate)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hour = String(date.getHours()).padStart(2, '0')\n const minute = String(date.getMinutes()).padStart(2, '0')\n const second = String(date.getSeconds()).padStart(2, '0')\n \n const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}`\n \n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n } else {\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n } catch (error) {\n console.error('Error processing illust:', value.id, error)\n const middle = `img/2024/01/01/00/00/00/${value.id}`\n value.urls = {\n mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`,\n thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`,\n small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`,\n regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`,\n original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`,\n }\n }\n })\n\n if (requestImage && illusts[0]?.urls?.regular) {\n return corsResponse(new Response(null, { \n status: 302, \n headers: { Location: illusts[0].urls.regular } \n }))\n }\n\n return corsResponse(new Response(JSON.stringify(illusts), {\n headers: { 'Content-Type': 'application/json' },\n }))\n */\n } catch (error) {\n console.error('Error in random API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n}\n\n// \u901A\u7528\u4EE3\u7406\u5904\u7406\u5668\nasync function handleGenericProxy(request: Request, env: any) {\n const url = new URL(request.url)\n url.hostname = 'www.pixiv.net'\n\n const headers = new Headers(request.headers)\n headers.set('origin', 'https://www.pixiv.net')\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n method: request.method,\n headers,\n body: request.body,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u56FE\u7247\u4EE3\u7406\u5904\u7406\u5668\nasync function handleImageProxy(request: Request, env: any) {\n const url = new URL(request.url)\n const path = url.pathname.slice(2)\n\n // \u4F7F\u7528\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u7684\u53CD\u4EE3 URL\uFF0C\u6216\u8005\u9ED8\u8BA4\u7684 Pixiv \u539F\u59CB URL\n if (url.pathname.startsWith('/~')) {\n // \u5904\u7406 s.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_S) {\n url.href = env.VITE_PXIMG_BASEURL_S + path\n } else {\n url.hostname = 's.pximg.net'\n url.pathname = '/' + path\n }\n } else {\n // \u5904\u7406 i.pximg.net \u7684\u56FE\u7247\n if (env.VITE_PXIMG_BASEURL_I) {\n url.href = env.VITE_PXIMG_BASEURL_I + path\n } else {\n url.hostname = 'i.pximg.net'\n url.pathname = '/' + path\n }\n }\n\n const headers = new Headers()\n for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) {\n if (request.headers.get(h)) {\n headers.set(h, request.headers.get(h)!)\n }\n }\n\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const newReq = new Request(url.toString(), {\n headers,\n })\n\n const response = await fetch(newReq)\n return corsResponse(response)\n}\n\n// \u7528\u6237 API \u5904\u7406\u5668\nasync function handleUserAPI(request: Request, env: any, url: URL) {\n try {\n const userId = url.searchParams.get('id')\n \n if (!userId) {\n return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n\n const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`)\n\n const headers = new Headers()\n headers.set('referer', 'https://www.pixiv.net/')\n // \u4F7F\u7528\u9ED8\u8BA4\u7684 User-Agent\uFF0C\u6216\u8005\u73AF\u5883\u53D8\u91CF\u4E2D\u7684\u81EA\u5B9A\u4E49 User-Agent\n headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0')\n\n const response = await fetch(pixivUrl.toString(), { headers })\n \n if (!response.ok) {\n return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), {\n status: response.status,\n headers: { 'Content-Type': 'application/json' },\n }))\n }\n \n const data = await response.json()\n \n return corsResponse(new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n }))\n } catch (error) {\n console.error('Error in user API:', error)\n return corsResponse(new Response(JSON.stringify({ \n error: 'Internal server error',\n message: error instanceof Error ? error.message : 'Unknown error'\n }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\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 \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"D:\\\\github\\\\pixivnow\\\\functions\\\\[[path]].ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\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 \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-fNR4lX\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"D:\\\\github\\\\pixivnow\\\\node_modules\\\\.pnpm\\\\wrangler@4.42.1\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-fNR4lX\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-fNR4lX\\\\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": [] +} diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..b6f2fdd --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,121 @@ +# PixivNow Worker 部署指南 + +## 快速部署(零配置) + +PixivNow Worker 支持零配置部署,无需设置任何环境变量即可正常运行: + +```bash +# 1. 安装依赖 +pnpm install + +# 2. 登录 Cloudflare +pnpm wrangler login + +# 3. 部署到 Cloudflare Workers +pnpm deploy +``` + +## 本地开发 + +```bash +# 启动本地开发服务器 +pnpm serve + +# 服务器将在 http://127.0.0.1:8787 启动 +``` + +## API 端点 + +- `GET /` - 健康检查 +- `GET /api/illust/random` - 随机插画 API +- `GET /api/user?id={user_id}` - 用户信息 API +- `GET /-/{image_path}` - i.pximg.net 图片代理 +- `GET /~/{image_path}` - s.pximg.net 图片代理 +- `GET /{pixiv_path}` - 通用 Pixiv 代理 + +## 反代配置 + +### 通过 wrangler.toml 配置 + +编辑 `wrangler.toml` 文件中的 `[vars]` 部分: + +```toml +[vars] +# 图片反代配置 +VITE_PXIMG_BASEURL_I = "https://i.pixiv.re/" # i.pximg.net 反代 +VITE_PXIMG_BASEURL_S = "https://s.pixiv.re/" # s.pximg.net 反代 + +# 其他可选配置 +USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" +UA_BLACKLIST = "[]" +``` + +### 通过 Cloudflare Dashboard 配置 + +1. 登录 [Cloudflare Dashboard](https://dash.cloudflare.com/) +2. 进入 Workers & Pages +3. 选择你的 Worker +4. 进入 Settings > Variables +5. 添加环境变量: + - `VITE_PXIMG_BASEURL_I`: i.pximg.net 的反代 URL + - `VITE_PXIMG_BASEURL_S`: s.pximg.net 的反代 URL + - `USER_AGENT`: 自定义 User-Agent(可选) + +### 常用反代服务 + +```toml +# pixiv.re (推荐) +VITE_PXIMG_BASEURL_I = "https://i.pixiv.re/" +VITE_PXIMG_BASEURL_S = "https://s.pixiv.re/" + +# pixiv.cat +VITE_PXIMG_BASEURL_I = "https://i.pixiv.cat/" +VITE_PXIMG_BASEURL_S = "https://s.pixiv.cat/" + +# 自定义反代 +VITE_PXIMG_BASEURL_I = "https://your-proxy-domain.com/" +VITE_PXIMG_BASEURL_S = "https://your-s-proxy-domain.com/" +``` + +## 默认配置 + +如果不设置环境变量,Worker 将使用以下默认值: + +- **图片代理**: 直接访问 Pixiv 原始 URL (`i.pximg.net`, `s.pximg.net`) +- **User-Agent**: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0` +- **UA 黑名单**: 空数组 `[]` +- **CORS**: 完全开放,支持所有域名 + +## 测试反代配置 + +部署后,可以通过以下方式测试反代是否生效: + +```bash +# 测试 i.pximg.net 反代 +curl -I "https://your-worker.your-subdomain.workers.dev/-/img-master/img/2024/01/01/00/00/00/123456_p0_master1200.jpg" + +# 测试 s.pximg.net 反代 +curl -I "https://your-worker.your-subdomain.workers.dev/~/c/250x250_80_a2_g5/img-master/img/2024/01/01/00/00/00/123456_p0_square1200.jpg" +``` + +如果配置了反代,响应头中应该包含反代服务的标识(如 `x-proxied-by`)。 + +## 故障排除 + +### 1. 图片无法加载 +- 检查反代 URL 是否正确 +- 确认反代服务是否可用 +- 验证环境变量是否正确设置 + +### 2. CORS 错误 +- Worker 默认启用 CORS,支持所有域名 +- 如果仍有问题,检查请求头是否正确 + +### 3. 部署失败 +- 确认已登录 Cloudflare: `pnpm wrangler login` +- 检查 `wrangler.toml` 配置是否正确 +- 验证 Worker 名称是否唯一 + +## 许可证 + +MIT License \ No newline at end of file diff --git a/functions/[[path]].ts b/functions/[[path]].ts new file mode 100644 index 0000000..a645c1d --- /dev/null +++ b/functions/[[path]].ts @@ -0,0 +1,356 @@ +// 手动实现 CORS 处理 +function corsHeaders() { + return { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', + 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With', + 'Access-Control-Max-Age': '86400', + } +} + +function corsResponse(response: Response) { + const headers = new Headers(response.headers) + Object.entries(corsHeaders()).forEach(([key, value]) => { + headers.set(key, value) + }) + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers, + }) +} + +export default { + fetch: async (request: Request, env: any, ctx: any) => { + console.log('Worker fetch called:', request.method, request.url) + + const url = new URL(request.url) + const path = url.pathname + + // 处理 OPTIONS 请求(CORS 预检) + if (request.method === 'OPTIONS') { + return new Response(null, { + status: 200, + headers: corsHeaders(), + }) + } + + try { + // 健康检查端点 + if (path === '/') { + return corsResponse(new Response('Pixiv Now Worker is running!', { + headers: { 'Content-Type': 'text/plain' }, + })) + } + + // 测试端点 + if (path === '/test') { + return corsResponse(new Response(JSON.stringify({ + message: 'Test successful', + timestamp: Date.now(), + method: request.method, + path: path + }), { + headers: { 'Content-Type': 'application/json' }, + })) + } + + // 随机图片 API + if (path === '/api/illust/random') { + return await handleRandomAPI(request, env, url) + } + + // 通用代理 (ajax|rpc) + if (path.match(/^\/(ajax|rpc)\//)) { + return await handleGenericProxy(request, env) + } + + // 图片代理 (~|-) + if (path.match(/^\/[~-]\//)) { + return await handleImageProxy(request, env) + } + + // 用户 API + if (path === '/api/user') { + return await handleUserAPI(request, env, url) + } + + // 404 + return corsResponse(new Response('Not Found', { + status: 404, + headers: { 'Content-Type': 'text/plain' } + })) + + } catch (error) { + console.error('Worker error:', error) + return corsResponse(new Response(JSON.stringify({ + error: 'Internal server error', + message: error instanceof Error ? error.message : 'Unknown error' + }), { + status: 500, + headers: { 'Content-Type': 'application/json' }, + })) + } + }, +} + +// 随机图片 API 处理器 +async function handleRandomAPI(request: Request, env: any, url: URL) { + try { + // 简化版本:返回模拟数据而不是调用 Pixiv API + const requestImage = + (request.headers.get('accept')?.includes('image') || url.searchParams.get('format') === 'image') && + url.searchParams.get('format') !== 'json' + + // 模拟数据用于测试 + const mockIllusts = [ + { + id: '123456789', + title: 'Test Illustration', + userId: '987654321', + userName: 'Test Artist', + tags: ['test', 'mock'], + updateDate: '2024-01-01T12:00:00+00:00', + urls: { + mini: 'https://i.pximg.net/c/48x48/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg', + thumb: 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2024/01/01/12/00/00/123456789_p0_square1200.jpg', + small: 'https://i.pximg.net/c/540x540_70/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg', + regular: 'https://i.pximg.net/img-master/img/2024/01/01/12/00/00/123456789_p0_master1200.jpg', + original: 'https://i.pximg.net/img-original/img/2024/01/01/12/00/00/123456789_p0.jpg', + } + } + ] + + if (requestImage && mockIllusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: mockIllusts[0].urls.regular } + })) + } + + return corsResponse(new Response(JSON.stringify(mockIllusts), { + headers: { 'Content-Type': 'application/json' }, + })) + + /* 原始 Pixiv API 调用代码 - 暂时注释掉 + const pixivUrl = new URL('https://www.pixiv.net/ajax/illust/discovery') + pixivUrl.searchParams.set('mode', url.searchParams.get('mode') ?? 'safe') + pixivUrl.searchParams.set('max', requestImage ? '1' : url.searchParams.get('max') ?? '18') + + const headers = new Headers() + headers.set('referer', 'https://www.pixiv.net/') + // 使用默认的 User-Agent,或者环境变量中的自定义 User-Agent + // 使用默认的 User-Agent,或者环境变量中的自定义 User-Agent + headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0') + + console.log('Fetching from Pixiv API:', pixivUrl.toString()) + const response = await fetch(pixivUrl.toString(), { headers }) + + if (!response.ok) { + console.error('Pixiv API error:', response.status, response.statusText) + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { 'Content-Type': 'application/json' }, + })) + } + + const data = await response.json() + console.log('Pixiv API response:', data) + + // 检查 API 响应是否有错误 + if (data.error) { + console.error('Pixiv API returned error:', data.error) + return corsResponse(new Response(JSON.stringify({ error: data.error }), { + status: 400, + headers: { 'Content-Type': 'application/json' }, + })) + } + + const illusts = (data.illusts ?? []).filter((value: any) => + value && typeof value === 'object' && value.id + ) + + if (illusts.length === 0) { + return corsResponse(new Response(JSON.stringify([]), { + headers: { 'Content-Type': 'application/json' }, + })) + } + + // 使用默认的 Pixiv 图片 URL,或者环境变量中的自定义代理 URL + const PXIMG_BASEURL_I = (env.VITE_PXIMG_BASEURL_I || 'https://i.pximg.net/').replace(/\/$/, '') + '/' + + // 处理图片 URL + illusts.forEach((value: any) => { + try { + if (value.updateDate) { + const date = new Date(value.updateDate) + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + const hour = String(date.getHours()).padStart(2, '0') + const minute = String(date.getMinutes()).padStart(2, '0') + const second = String(date.getSeconds()).padStart(2, '0') + + const middle = `img/${year}/${month}/${day}/${hour}/${minute}/${second}/${value.id}` + + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`, + } + } else { + const middle = `img/2024/01/01/00/00/00/${value.id}` + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`, + } + } + } catch (error) { + console.error('Error processing illust:', value.id, error) + const middle = `img/2024/01/01/00/00/00/${value.id}` + value.urls = { + mini: `${PXIMG_BASEURL_I}c/48x48/img-master/${middle}_p0_square1200.jpg`, + thumb: `${PXIMG_BASEURL_I}c/250x250_80_a2/img-master/${middle}_p0_square1200.jpg`, + small: `${PXIMG_BASEURL_I}c/540x540_70/img-master/${middle}_p0_master1200.jpg`, + regular: `${PXIMG_BASEURL_I}img-master/${middle}_p0_master1200.jpg`, + original: `${PXIMG_BASEURL_I}img-original/${middle}_p0.jpg`, + } + } + }) + + if (requestImage && illusts[0]?.urls?.regular) { + return corsResponse(new Response(null, { + status: 302, + headers: { Location: illusts[0].urls.regular } + })) + } + + return corsResponse(new Response(JSON.stringify(illusts), { + headers: { 'Content-Type': 'application/json' }, + })) + */ + } catch (error) { + console.error('Error in random API:', error) + return corsResponse(new Response(JSON.stringify({ + error: 'Internal server error', + message: error instanceof Error ? error.message : 'Unknown error' + }), { + status: 500, + headers: { 'Content-Type': 'application/json' }, + })) + } +} + +// 通用代理处理器 +async function handleGenericProxy(request: Request, env: any) { + const url = new URL(request.url) + url.hostname = 'www.pixiv.net' + + const headers = new Headers(request.headers) + headers.set('origin', 'https://www.pixiv.net') + headers.set('referer', 'https://www.pixiv.net/') + // 使用默认的 User-Agent,或者环境变量中的自定义 User-Agent + headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0') + + const newReq = new Request(url.toString(), { + method: request.method, + headers, + body: request.body, + }) + + const response = await fetch(newReq) + return corsResponse(response) +} + +// 图片代理处理器 +async function handleImageProxy(request: Request, env: any) { + const url = new URL(request.url) + const path = url.pathname.slice(2) + + // 使用环境变量配置的反代 URL,或者默认的 Pixiv 原始 URL + if (url.pathname.startsWith('/~')) { + // 处理 s.pximg.net 的图片 + if (env.VITE_PXIMG_BASEURL_S) { + url.href = env.VITE_PXIMG_BASEURL_S + path + } else { + url.hostname = 's.pximg.net' + url.pathname = '/' + path + } + } else { + // 处理 i.pximg.net 的图片 + if (env.VITE_PXIMG_BASEURL_I) { + url.href = env.VITE_PXIMG_BASEURL_I + path + } else { + url.hostname = 'i.pximg.net' + url.pathname = '/' + path + } + } + + const headers = new Headers() + for (const h of ['accept', 'accept-encoding', 'accept-language', 'cache-control', 'user-agent']) { + if (request.headers.get(h)) { + headers.set(h, request.headers.get(h)!) + } + } + + headers.set('referer', 'https://www.pixiv.net/') + // 使用默认的 User-Agent,或者环境变量中的自定义 User-Agent + headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0') + + const newReq = new Request(url.toString(), { + headers, + }) + + const response = await fetch(newReq) + return corsResponse(response) +} + +// 用户 API 处理器 +async function handleUserAPI(request: Request, env: any, url: URL) { + try { + const userId = url.searchParams.get('id') + + if (!userId) { + return corsResponse(new Response(JSON.stringify({ error: 'User ID is required' }), { + status: 400, + headers: { 'Content-Type': 'application/json' }, + })) + } + + const pixivUrl = new URL(`https://www.pixiv.net/ajax/user/${userId}`) + + const headers = new Headers() + headers.set('referer', 'https://www.pixiv.net/') + // 使用默认的 User-Agent,或者环境变量中的自定义 User-Agent + headers.set('user-agent', env.USER_AGENT || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0') + + const response = await fetch(pixivUrl.toString(), { headers }) + + if (!response.ok) { + return corsResponse(new Response(JSON.stringify({ error: `Pixiv API returned ${response.status}` }), { + status: response.status, + headers: { 'Content-Type': 'application/json' }, + })) + } + + const data = await response.json() + + return corsResponse(new Response(JSON.stringify(data), { + headers: { 'Content-Type': 'application/json' }, + })) + } catch (error) { + console.error('Error in user API:', error) + return corsResponse(new Response(JSON.stringify({ + error: 'Internal server error', + message: error instanceof Error ? error.message : 'Unknown error' + }), { + status: 500, + headers: { 'Content-Type': 'application/json' }, + })) + } +} \ No newline at end of file diff --git a/package.json b/package.json index c230008..6320d4c 100644 --- a/package.json +++ b/package.json @@ -12,17 +12,17 @@ "license": "MIT", "scripts": { "start": "vite", - "serve": "vercel dev", + "serve": "wrangler dev", "build": "vite build", - "preview": "vercel deploy", + "preview": "wrangler deploy", "changelog": "conventional-changelog -p jquery -i CHANGELOG.md -s -r 0" }, "dependencies": { - "axios": "^1.11.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "fflate": "^0.8.2", "gif.js": "^0.2.0", + "itty-router": "^5.0.22", "js-cookie": "^3.0.5", "modern-mp4": "^0.2.0", "naive-ui": "^2.42.0", @@ -44,11 +44,9 @@ "@types/lodash.escaperegexp": "^4.1.9", "@types/node": "^22.17.2", "@types/nprogress": "^0.2.3", - "@vercel/node": "^5.3.13", "@vitejs/plugin-vue": "^6.0.1", "@vue/language-plugin-pug": "^3.0.6", "@vueuse/core": "^13.7.0", - "cheerio": "^1.1.2", "conventional-changelog-cli": "^5.0.0", "cookie": "^1.0.2", "lodash.escaperegexp": "^4.1.2", @@ -61,8 +59,8 @@ "unplugin-auto-import": "^20.0.0", "unplugin-icons": "^22.2.0", "unplugin-vue-components": "^29.0.0", - "vercel": "^46.0.2", - "vite": "^7.1.3" + "vite": "^7.1.3", + "wrangler": "^4.42.1" }, "packageManager": "pnpm@10.18.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c587ccd..462c8e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: dependencies: - axios: - specifier: ^1.11.0 - version: 1.12.2 date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -23,6 +20,9 @@ importers: gif.js: specifier: ^0.2.0 version: 0.2.0 + itty-router: + specifier: ^5.0.22 + version: 5.0.22 js-cookie: specifier: ^3.0.5 version: 3.0.5 @@ -81,9 +81,6 @@ importers: '@types/nprogress': specifier: ^0.2.3 version: 0.2.3 - '@vercel/node': - specifier: ^5.3.13 - version: 5.3.24(rollup@4.52.3) '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.1(vite@7.1.9(@types/node@22.18.8)(sass@1.93.2))(vue@3.5.22(typescript@5.9.3)) @@ -93,9 +90,6 @@ importers: '@vueuse/core': specifier: ^13.7.0 version: 13.9.0(vue@3.5.22(typescript@5.9.3)) - cheerio: - specifier: ^1.1.2 - version: 1.1.2 conventional-changelog-cli: specifier: ^5.0.0 version: 5.0.0(conventional-commits-filter@5.0.0) @@ -132,12 +126,12 @@ importers: unplugin-vue-components: specifier: ^29.0.0 version: 29.1.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3)) - vercel: - specifier: ^46.0.2 - version: 46.1.1(rollup@4.52.3) vite: specifier: ^7.1.3 version: 7.1.9(@types/node@22.18.8)(sass@1.93.2) + wrangler: + specifier: ^4.42.1 + version: 4.42.1 packages: @@ -172,6 +166,49 @@ packages: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} + '@cloudflare/kv-asset-handler@0.4.0': + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + engines: {node: '>=18.0.0'} + + '@cloudflare/unenv-preset@2.7.7': + resolution: {integrity: sha512-HtZuh166y0Olbj9bqqySckz0Rw9uHjggJeoGbDx5x+sgezBXlxO6tQSig2RZw5tgObF8mWI8zaPvQMkQZtAODw==} + peerDependencies: + unenv: 2.0.0-rc.21 + workerd: ^1.20250927.0 + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/workerd-darwin-64@1.20251004.0': + resolution: {integrity: sha512-gL6/b7NXCum95e77n+CLyDzmfV14ZAsyoWWHoWsi2Nt89ngl8xB7aW6IQQPZPjxvtSth5y/peFCIbmR55DxFCg==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20251004.0': + resolution: {integrity: sha512-w3oE8PtYUAOyJCYLXIdmLuCmRrn1dEqB91u1sZs+MbLxzTNrvRwNaiioLJBHhpIeg3Oq2kyn3+idg0FdvgDLTA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20251004.0': + resolution: {integrity: sha512-PZxHuL6p2bxDI1ozBguKFO71AySTy0MzXiHePiubBuX+Mqa8sCmdAbWbp3QPIoErZ9eBsvw9UCNeSyEtM9H/iw==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20251004.0': + resolution: {integrity: sha512-ePCfH9W2ea+YhVL+FhXjWRV9vGWj/zshO3ugKm/qCO6OXAL1h0NPYCe55iZXFKwngwQH82H6Fv8UROaxDaGZ1Q==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20251004.0': + resolution: {integrity: sha512-sRuSls6kH6C2MG+xWoCi7fuV0SG26dB8+Cc2b59Pc0dzJRThOeNXbwpiSIZ4BQFGUudGlbCRwCpzIuPW3JxQLg==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@conventional-changelog/git-client@1.0.1': resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} engines: {node: '>=18'} @@ -201,25 +238,8 @@ packages: '@dragon-fish/sensitive-words-filter@2.0.1': resolution: {integrity: sha512-VeFjf6P631/2O/3STD5NFTL+RjyK0Bk6rvZSCN9YFuNfct5qfUjz+ugBMZnqjTEA+seYepJMFVro/USHHMt4Lw==} - '@edge-runtime/format@2.2.1': - resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==} - engines: {node: '>=16'} - - '@edge-runtime/node-utils@2.3.0': - resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==} - engines: {node: '>=16'} - - '@edge-runtime/ponyfill@2.4.2': - resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==} - engines: {node: '>=16'} - - '@edge-runtime/primitives@4.1.0': - resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==} - engines: {node: '>=16'} - - '@edge-runtime/vm@3.2.0': - resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==} - engines: {node: '>=16'} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} '@emotion/hash@0.8.0': resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} @@ -230,126 +250,252 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.10': resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.10': resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.10': resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.10': resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.10': resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.10': resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.10': resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.10': resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.10': resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.10': resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.10': resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.10': resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.10': resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.10': resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.10': resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.10': resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.10': resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.10': resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.10': resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.10': resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.10': resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} engines: {node: '>=18'} @@ -362,27 +508,47 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.10': resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.10': resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.10': resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] '@hutson/parse-repository-url@5.0.0': resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} @@ -397,6 +563,123 @@ packages: '@iconify/utils@3.0.2': resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@intlify/core-base@11.1.12': resolution: {integrity: sha512-whh0trqRsSqVLNEUCwU59pyJZYpU8AmSWl8M3Jz2Mv5ESPP6kFh4juas2NpZ1iCvy7GlNRffUD1xr84gceimjg==} engines: {node: '>= 16'} @@ -409,14 +692,6 @@ packages: resolution: {integrity: sha512-Om86EjuQtA69hdNj3GQec9ZC0L0vPSAnXzB3gP/gyJ7+mA7t06d9aOAiqMZ+xEOsumGP4eEBlfl8zF2LOTzf2A==} engines: {node: '>= 16'} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -439,23 +714,6 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@mapbox/node-pre-gyp@2.0.0': - resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} - engines: {node: '>=18'} - hasBin: true - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -544,9 +802,14 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@poppinss/colors@4.1.5': + resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} + + '@poppinss/dumper@0.6.4': + resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} + + '@poppinss/exception@1.2.2': + resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} '@prettier/plugin-pug@3.4.2': resolution: {integrity: sha512-/VOVeIscKYlPpsZrjrRV+44ZftCEIJq9Z/zR8PtAz/EDv82TKscw3z+fhTVqRz68G1TqQ/5COMFUVfPwPBH90w==} @@ -557,15 +820,6 @@ packages: '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/rollup-android-arm-eabi@4.52.3': resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} cpu: [arm] @@ -687,8 +941,12 @@ packages: cpu: [x64] os: [win32] - '@sinclair/typebox@0.25.24': - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + '@sindresorhus/is@7.1.0': + resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} + engines: {node: '>=18'} + + '@speed-highlight/core@1.2.7': + resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} '@tabler/icons-vue@3.35.0': resolution: {integrity: sha512-m5ugq8mWYfTzx0opMcX49ADFxr3xu0IhJaOddw8Djlhx30pBOPWwOiIUBMAqlgP9TFHAysdwqrq50hBw5DxPSQ==} @@ -698,25 +956,6 @@ packages: '@tabler/icons@3.35.0': resolution: {integrity: sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@ts-morph/common@0.11.1': - resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -729,9 +968,6 @@ packages: '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} @@ -744,9 +980,6 @@ packages: '@types/lodash@4.17.20': resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} - '@types/node@16.18.11': - resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==} - '@types/node@22.18.8': resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} @@ -762,76 +995,6 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@vercel/blob@1.0.2': - resolution: {integrity: sha512-Im/KeFH4oPx7UsM+QiteimnE07bIUD7JK6CBafI9Z0jRFogaialTBMiZj8EKk/30ctUYsrpIIyP9iIY1YxWnUQ==} - engines: {node: '>=16.14'} - - '@vercel/build-utils@11.0.2': - resolution: {integrity: sha512-Y48OT9IsvAFU21LJ3m5SbrXpQaD++h4v4nQoQjCUDZORxXzPf3doVQfrQBBIX45xoSkfq/Fuq0VNF0yRbJw/aA==} - - '@vercel/build-utils@12.1.0': - resolution: {integrity: sha512-yqpAh2KHm9iWUXo/aRWiLIxi8dMAwFtse2iZsg2QNEMs9W20va6L8PMFvdAa5MX9pgRwc38gbjD3V7drxSwq4g==} - - '@vercel/detect-agent@0.2.0': - resolution: {integrity: sha512-qf10Q2UwlbJAcWVqQGkyp9OlLBn9Aj2VVE0M4mTDe0gpB7Fo8qycTJLccDbHeyLrWnT6Q12sVy9ZYHas7B+rwg==} - - '@vercel/error-utils@2.0.3': - resolution: {integrity: sha512-CqC01WZxbLUxoiVdh9B/poPbNpY9U+tO1N9oWHwTl5YAZxcqXmmWJ8KNMFItJCUUWdY3J3xv8LvAuQv2KZ5YdQ==} - - '@vercel/express@0.0.10': - resolution: {integrity: sha512-t2rVsyCeh+ayu2gMno16UNF4xmX/FDTzfREVd1v6sEfzY80qAS9qvKWSuFKfV3VjAiqlSnWBpiw4gU6Mu0gNQg==} - - '@vercel/fun@1.1.6': - resolution: {integrity: sha512-xDiM+bD0fSZyzcjsAua3D+guXclvHOSTzr03UcZEQwYzIjwWjLduT7bl2gAaeNIe7fASAIZd0P00clcj0On4rQ==} - engines: {node: '>= 18'} - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - resolution: {integrity: sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==} - - '@vercel/gatsby-plugin-vercel-builder@2.0.93': - resolution: {integrity: sha512-Vh1Dt+Wa3DUtyc1ety3XG//jRST9M01WiF1W1taAW2k+SfKEjAbTJWoRblj97ah5Boz+uqSBIBg2ULZvNf+xzw==} - - '@vercel/go@3.2.3': - resolution: {integrity: sha512-PErgHlV7cf8hyPq31aRsL4xm5t4rCSO6vN5AQLlAGSy3ctdgqG7sI6hq/CAKo3CfgIhVHUwNYapFJgGJB/s4OA==} - - '@vercel/hono@0.0.18': - resolution: {integrity: sha512-Ie6JOW/uzWvlxg3OH0itSlzetAcWqqVYrhuHnzAJi2/9InusEmWE104rOj/5D3yyvJ9aXInPj3KoUldDVwJ81Q==} - - '@vercel/hydrogen@1.2.4': - resolution: {integrity: sha512-eb16oesfgHuBlXxe+WqI+rMdP4QpeHXLJh9ropFy+StkWC2F0ZFKegutEpvJCRg0FHttRnn9uMzMmzJ2F4xKkg==} - - '@vercel/next@4.12.3': - resolution: {integrity: sha512-Ukvf5Q1DpuQJmUjImTU2i90/iVCxRHGp51FC48Qdw62hh31SV1kBIzarm8VOb1UFFDdARqFsBlib9lx9vuJ+Dw==} - - '@vercel/nft@0.30.1': - resolution: {integrity: sha512-2mgJZv4AYBFkD/nJ4QmiX5Ymxi+AisPLPcS/KPXVqniyQNqKXX+wjieAbDXQP3HcogfEbpHoRMs49Cd4pfkk8g==} - engines: {node: '>=18'} - hasBin: true - - '@vercel/node@5.3.17': - resolution: {integrity: sha512-quNnXO1XuMMid9MXJKPDtpwiNZUFrJgTvdcUu+AXRZg99rOw9N5pk+M0rM4+0FwVXVCIlXzjfKelEOXC8SxGQw==} - - '@vercel/node@5.3.24': - resolution: {integrity: sha512-yk8pdoNbAbUO5zcmqyMPQ6kNvN896c/gJbsiGS5RvO9Gyehib5IxUOap6SnLSExH4tWAl1XTbOptfuysqZpYog==} - - '@vercel/python@5.0.0': - resolution: {integrity: sha512-JHpYKQ8d478REzmF7NcJTJcncFziJhVOwzan8wW4F1RJOHGDBTPkATAgi4CPQIijToRamPCkgeECzNOvLUDR+w==} - - '@vercel/redwood@2.3.6': - resolution: {integrity: sha512-Rm9xECWNIJOwtPsZ1/XcgyJj95KM7cWwNHYPMw8dzFAnLQGyapGe/YHEjxV6POI2RF8R0nFmU1t+45XBweYJJA==} - - '@vercel/remix-builder@5.4.12': - resolution: {integrity: sha512-25HHNUpIu3TfuZnphDDX7yG+4QugbxDq0bB8d1KCeOWsKH+z0Zscg7rchs3Pqy6kdhV/US6zH+YAogtwMvdDMg==} - - '@vercel/ruby@2.2.1': - resolution: {integrity: sha512-DsmTCggOa/Uvt/9JkafXx9U+Bz5eNIb6Bs422EOQo2zKwcxW88ITSh8mM5m0dQ0+B4k02X/moVim6iFa4sjazg==} - - '@vercel/static-build@2.7.20': - resolution: {integrity: sha512-2Ggjk0fsVG2LgFjDmunIA6i9/UEaVxcinJblkR8aHeKecVL4ibqXhluiyXygAobfpRiYJlU9gXgS2veieB57sw==} - - '@vercel/static-config@3.1.2': - resolution: {integrity: sha512-2d+TXr6K30w86a+WbMbGm2W91O0UzO5VeemZYBBUJbCjk/5FLLGIi8aV6RS2+WmaRvtcqNTn2pUA7nCOK3bGcQ==} - '@vitejs/plugin-vue@6.0.1': resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -908,17 +1071,8 @@ packages: peerDependencies: vue: ^3.5.0 - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} acorn@7.4.1: @@ -926,6 +1080,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -934,42 +1093,10 @@ packages: add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - - ajv@8.6.3: - resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arg@4.1.0: - resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -979,69 +1106,27 @@ packages: assert-never@1.4.0: resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} - async-listen@1.2.0: - resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==} - - async-listen@3.0.0: - resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==} - engines: {node: '>= 14'} - - async-listen@3.0.1: - resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==} - engines: {node: '>= 14'} - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} - babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@2.5.0: resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - bytes@3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} - engines: {node: '>= 0.8'} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1053,39 +1138,14 @@ packages: character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.1.2: - resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} - engines: {node: '>=20.18.1'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.0: - resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} - engines: {node: '>= 14.16.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - - cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - - code-block-writer@10.1.1: - resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1093,33 +1153,25 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} - content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -1187,10 +1239,6 @@ packages: engines: {node: '>=18'} hasBin: true - convert-hrtime@3.0.0: - resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==} - engines: {node: '>=8'} - cookie@1.0.2: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} @@ -1199,23 +1247,9 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - css-render@0.15.14: resolution: {integrity: sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==} - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - csstype@3.0.11: resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} @@ -1233,15 +1267,6 @@ packages: date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1251,13 +1276,8 @@ packages: supports-color: optional: true - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} @@ -1268,26 +1288,9 @@ packages: resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} engines: {node: '>=8'} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - doctypes@1.1.0: resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -1296,33 +1299,12 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - edge-runtime@2.5.9: - resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==} - engines: {node: '>=16'} - hasBin: true - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encoding-sniffer@0.2.1: - resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - - end-of-stream@1.1.0: - resolution: {integrity: sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} @@ -1332,147 +1314,20 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - esbuild-android-64@0.14.47: - resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.14.47: - resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-darwin-64@0.14.47: - resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.14.47: - resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.14.47: - resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.14.47: - resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.14.47: - resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.14.47: - resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.14.47: - resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.14.47: - resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.14.47: - resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.14.47: - resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.14.47: - resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.14.47: - resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.14.47: - resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.14.47: - resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.14.47: - resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.14.47: - resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.14.47: - resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.14.47: - resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild@0.14.47: - resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.25.10: resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} engines: {node: '>=18'} hasBin: true + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -1483,32 +1338,16 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - events-intercept@2.0.0: - resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} - evtd@0.2.4: resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -1521,9 +1360,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1532,31 +1368,6 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - - fs-extra@11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} - engines: {node: '>=14.14'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1565,10 +1376,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - generic-pool@3.4.2: - resolution: {integrity: sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==} - engines: {node: '>= 4'} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1594,9 +1401,8 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} @@ -1606,9 +1412,6 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -1637,29 +1440,6 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - - http-errors@1.4.0: - resolution: {integrity: sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==} - engines: {node: '>= 0.6'} - - http-errors@1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} @@ -1667,20 +1447,13 @@ packages: resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} engines: {node: '>=18'} - inherits@2.0.1: - resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -1692,17 +1465,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -1722,17 +1488,8 @@ packages: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jose@5.9.6: - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} + itty-router@5.0.22: + resolution: {integrity: sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==} js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} @@ -1747,18 +1504,13 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - json-schema-to-ts@1.6.4: - resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -1778,16 +1530,9 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -1796,68 +1541,29 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micro@9.3.5-canary.3: - resolution: {integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==} - engines: {node: '>= 8.0.0'} - hasBin: true - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + miniflare@4.20251004.0: + resolution: {integrity: sha512-XxQ/vZVp5yTbnwq83fJag9DL8ww5IBfzaFZzlxMWMo2wf7bfHPYMkE4VbeibMwdLI+Pkyddg4zIxMTOvvZNigg==} + engines: {node: '>=18.0.0'} + hasBin: true minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - mint-filter@3.0.1: resolution: {integrity: sha512-mBMrNggwa5JtMvBWx0hC4t04iGwHChovV7gg+43CQg+vHYxPiHCwEc3DYHC0Wdq+Hxt2HBP0HdsT0QKmSxE9tA==} mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} @@ -1869,16 +1575,6 @@ packages: mp4box@0.5.3: resolution: {integrity: sha512-RIvyFZdPDIg3+mL6vUdPBSyQRrEfKO3ryAeJ4xJJV7HBHQUH3KfLlZRzfSpBHCd/HqR63HfbrWQI/CwXDvYENQ==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1901,33 +1597,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} @@ -1939,22 +1608,12 @@ packages: nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - once@1.3.3: - resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} - - os-paths@4.4.0: - resolution: {integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==} - engines: {node: '>= 6.0'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} @@ -1963,58 +1622,18 @@ packages: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} - parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-match@1.2.4: - resolution: {integrity: sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==} - deprecated: This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - - path-to-regexp@6.1.0: - resolution: {integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2050,19 +1669,9 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} - promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - promisepipe@3.0.0: - resolution: {integrity: sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pug-attrs@3.0.0: resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} @@ -2099,20 +1708,9 @@ packages: pug@3.0.3: resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - raw-body@2.4.1: - resolution: {integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==} - engines: {node: '>= 0.8'} - read-package-up@11.0.0: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} @@ -2129,27 +1727,11 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} hasBin: true - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} @@ -2158,12 +1740,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.93.2: resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} engines: {node: '>=14.0.0'} @@ -2175,38 +1751,17 @@ packages: seemly@0.3.10: resolution: {integrity: sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q==} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true - setprototypeof@1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -2232,34 +1787,9 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} - stat-mode@0.3.0: - resolution: {integrity: sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} - - stream-to-promise@2.2.0: - resolution: {integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} + stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} @@ -2268,18 +1798,14 @@ packages: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - tar@7.4.4: - resolution: {integrity: sha512-O1z7ajPkjTgEgmTGz0v9X4eqeEXTDREPTO77pVC1Nbs86feBU1Zhdg+edzavPmYW1olxkwsqA2v4uOw6E8LeDg==} - engines: {node: '>=18'} - temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} @@ -2288,17 +1814,6 @@ packages: resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} engines: {node: '>=14.18'} - throttleit@2.1.0: - resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} - engines: {node: '>=18'} - - time-span@4.0.0: - resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==} - engines: {node: '>=10'} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} @@ -2310,43 +1825,12 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - treemate@0.3.11: resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} - ts-morph@12.0.0: - resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - ts-toolbelt@6.15.5: - resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2354,11 +1838,6 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -2372,24 +1851,16 @@ packages: engines: {node: '>=0.8.0'} hasBin: true - uid-promise@1.0.0: - resolution: {integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} - - undici@7.15.0: - resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} + undici@7.14.0: + resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} engines: {node: '>=20.18.1'} + unenv@2.0.0-rc.21: + resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -2398,14 +1869,6 @@ packages: resolution: {integrity: sha512-g/OLFZR2mEfqbC6NC9b2225eCJGvufxq34mj6kM3OmI5gdSL0qyqtnv+9qmsGpAmnzSl6x0IWZj4W+8j2hLkMA==} engines: {node: '>=18.12.0'} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - unplugin-auto-import@20.2.0: resolution: {integrity: sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==} engines: {node: '>=14'} @@ -2462,12 +1925,6 @@ packages: resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -2476,11 +1933,6 @@ packages: peerDependencies: vue: ^3.0.11 - vercel@46.1.1: - resolution: {integrity: sha512-nYkT8KFK9M/GlYn7eTSOF3bEFXD+SCLctCTPbGxX/xi2dU+mg6/RFgA7/2w89zhUUxQdB9LlvgKWoIbPTlWrwA==} - engines: {node: '>= 18'} - hasBin: true - vite@7.1.9: resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2596,31 +2048,9 @@ packages: peerDependencies: vue: ^3.0.11 - web-vitals@0.2.4: - resolution: {integrity: sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - with@7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} @@ -2628,46 +2058,41 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + workerd@1.20251004.0: + resolution: {integrity: sha512-1YajTH54RdrQrO5FY1HuH1t87H3bWjbM4MtOTF6XdPQL8LxVWACC46aGjmhyVJKMQNLECs64d+AYFGxVrFTOAA==} + engines: {node: '>=16'} + hasBin: true - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrangler@4.42.1: + resolution: {integrity: sha512-Oia5SmGmfUWfz/k5aklrE429VMiMMZkjc1EhF1nrANElCOwBTTBY1shsfhkg9F0vG8ZtHzx1rJvYfaQvct498g==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20251004.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - xdg-app-paths@5.1.0: - resolution: {integrity: sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==} - engines: {node: '>=6'} + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - xdg-portable@7.3.0: - resolution: {integrity: sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==} - engines: {node: '>= 6.0'} + youch@4.1.0-beta.10: + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - - yauzl-clone@1.0.4: - resolution: {integrity: sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==} - engines: {node: '>=6'} - - yauzl-promise@2.1.3: - resolution: {integrity: sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==} - engines: {node: '>=6'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + zod@3.22.3: + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} snapshots: @@ -2702,6 +2127,31 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@cloudflare/kv-asset-handler@0.4.0': + dependencies: + mime: 3.0.0 + + '@cloudflare/unenv-preset@2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251004.0)': + dependencies: + unenv: 2.0.0-rc.21 + optionalDependencies: + workerd: 1.20251004.0 + + '@cloudflare/workerd-darwin-64@1.20251004.0': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20251004.0': + optional: true + + '@cloudflare/workerd-linux-64@1.20251004.0': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20251004.0': + optional: true + + '@cloudflare/workerd-windows-64@1.20251004.0': + optional: true + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)': dependencies: '@types/semver': 7.7.0 @@ -2727,99 +2177,165 @@ snapshots: mint-filter: 3.0.1 tslib: 2.8.1 - '@edge-runtime/format@2.2.1': {} - - '@edge-runtime/node-utils@2.3.0': {} - - '@edge-runtime/ponyfill@2.4.2': {} - - '@edge-runtime/primitives@4.1.0': {} - - '@edge-runtime/vm@3.2.0': + '@emnapi/runtime@1.5.0': dependencies: - '@edge-runtime/primitives': 4.1.0 + tslib: 2.8.1 + optional: true '@emotion/hash@0.8.0': {} '@esbuild/aix-ppc64@0.25.10': optional: true + '@esbuild/aix-ppc64@0.25.4': + optional: true + '@esbuild/android-arm64@0.25.10': optional: true + '@esbuild/android-arm64@0.25.4': + optional: true + '@esbuild/android-arm@0.25.10': optional: true + '@esbuild/android-arm@0.25.4': + optional: true + '@esbuild/android-x64@0.25.10': optional: true + '@esbuild/android-x64@0.25.4': + optional: true + '@esbuild/darwin-arm64@0.25.10': optional: true + '@esbuild/darwin-arm64@0.25.4': + optional: true + '@esbuild/darwin-x64@0.25.10': optional: true + '@esbuild/darwin-x64@0.25.4': + optional: true + '@esbuild/freebsd-arm64@0.25.10': optional: true + '@esbuild/freebsd-arm64@0.25.4': + optional: true + '@esbuild/freebsd-x64@0.25.10': optional: true + '@esbuild/freebsd-x64@0.25.4': + optional: true + '@esbuild/linux-arm64@0.25.10': optional: true + '@esbuild/linux-arm64@0.25.4': + optional: true + '@esbuild/linux-arm@0.25.10': optional: true + '@esbuild/linux-arm@0.25.4': + optional: true + '@esbuild/linux-ia32@0.25.10': optional: true + '@esbuild/linux-ia32@0.25.4': + optional: true + '@esbuild/linux-loong64@0.25.10': optional: true + '@esbuild/linux-loong64@0.25.4': + optional: true + '@esbuild/linux-mips64el@0.25.10': optional: true + '@esbuild/linux-mips64el@0.25.4': + optional: true + '@esbuild/linux-ppc64@0.25.10': optional: true + '@esbuild/linux-ppc64@0.25.4': + optional: true + '@esbuild/linux-riscv64@0.25.10': optional: true + '@esbuild/linux-riscv64@0.25.4': + optional: true + '@esbuild/linux-s390x@0.25.10': optional: true + '@esbuild/linux-s390x@0.25.4': + optional: true + '@esbuild/linux-x64@0.25.10': optional: true + '@esbuild/linux-x64@0.25.4': + optional: true + '@esbuild/netbsd-arm64@0.25.10': optional: true + '@esbuild/netbsd-arm64@0.25.4': + optional: true + '@esbuild/netbsd-x64@0.25.10': optional: true + '@esbuild/netbsd-x64@0.25.4': + optional: true + '@esbuild/openbsd-arm64@0.25.10': optional: true + '@esbuild/openbsd-arm64@0.25.4': + optional: true + '@esbuild/openbsd-x64@0.25.10': optional: true + '@esbuild/openbsd-x64@0.25.4': + optional: true + '@esbuild/openharmony-arm64@0.25.10': optional: true '@esbuild/sunos-x64@0.25.10': optional: true + '@esbuild/sunos-x64@0.25.4': + optional: true + '@esbuild/win32-arm64@0.25.10': optional: true + '@esbuild/win32-arm64@0.25.4': + optional: true + '@esbuild/win32-ia32@0.25.10': optional: true + '@esbuild/win32-ia32@0.25.4': + optional: true + '@esbuild/win32-x64@0.25.10': optional: true - '@fastify/busboy@2.1.1': {} + '@esbuild/win32-x64@0.25.4': + optional: true '@hutson/parse-repository-url@5.0.0': {} @@ -2842,6 +2358,81 @@ snapshots: transitivePeerDependencies: - supports-color + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.5.0 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@intlify/core-base@11.1.12': dependencies: '@intlify/message-compiler': 11.1.12 @@ -2854,19 +2445,6 @@ snapshots: '@intlify/shared@11.1.12': {} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2893,31 +2471,6 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@mapbox/node-pre-gyp@2.0.0': - dependencies: - consola: 3.4.2 - detect-libc: 2.1.0 - https-proxy-agent: 7.0.6 - node-fetch: 2.6.9 - nopt: 8.1.0 - semver: 7.7.2 - tar: 7.4.4 - transitivePeerDependencies: - - encoding - - supports-color - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -2979,8 +2532,17 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@pkgjs/parseargs@0.11.0': - optional: true + '@poppinss/colors@4.1.5': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.6.4': + dependencies: + '@poppinss/colors': 4.1.5 + '@sindresorhus/is': 7.1.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.2': {} '@prettier/plugin-pug@3.4.2(prettier@3.6.2)': dependencies: @@ -2989,14 +2551,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.29': {} - '@rollup/pluginutils@5.3.0(rollup@4.52.3)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.3 - '@rollup/rollup-android-arm-eabi@4.52.3': optional: true @@ -3063,7 +2617,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@sinclair/typebox@0.25.24': {} + '@sindresorhus/is@7.1.0': {} + + '@speed-highlight/core@1.2.7': {} '@tabler/icons-vue@3.35.0(vue@3.5.22(typescript@5.9.3))': dependencies: @@ -3072,23 +2628,6 @@ snapshots: '@tabler/icons@3.35.0': {} - '@tootallnate/once@2.0.0': {} - - '@ts-morph/common@0.11.1': - dependencies: - fast-glob: 3.3.3 - minimatch: 3.1.2 - mkdirp: 1.0.4 - path-browserify: 1.0.1 - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - '@types/estree@1.0.8': {} '@types/events@3.0.3': {} @@ -3099,8 +2638,6 @@ snapshots: '@types/js-cookie@3.0.6': {} - '@types/json-schema@7.0.15': {} - '@types/katex@0.16.7': {} '@types/lodash-es@4.17.12': @@ -3113,8 +2650,6 @@ snapshots: '@types/lodash@4.17.20': {} - '@types/node@16.18.11': {} - '@types/node@22.18.8': dependencies: undici-types: 6.21.0 @@ -3127,218 +2662,6 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@vercel/blob@1.0.2': - dependencies: - async-retry: 1.3.3 - is-buffer: 2.0.5 - is-node-process: 1.2.0 - throttleit: 2.1.0 - undici: 5.29.0 - - '@vercel/build-utils@11.0.2': {} - - '@vercel/build-utils@12.1.0': {} - - '@vercel/detect-agent@0.2.0': {} - - '@vercel/error-utils@2.0.3': {} - - '@vercel/express@0.0.10(rollup@4.52.3)': - dependencies: - '@vercel/node': 5.3.17(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - ts-morph: 12.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - - '@vercel/fun@1.1.6': - dependencies: - '@tootallnate/once': 2.0.0 - async-listen: 1.2.0 - debug: 4.3.4 - generic-pool: 3.4.2 - micro: 9.3.5-canary.3 - ms: 2.1.1 - node-fetch: 2.6.7 - path-match: 1.2.4 - promisepipe: 3.0.0 - semver: 7.5.4 - stat-mode: 0.3.0 - stream-to-promise: 2.2.0 - tar: 6.2.1 - tinyexec: 0.3.2 - tree-kill: 1.2.2 - uid-promise: 1.0.0 - xdg-app-paths: 5.1.0 - yauzl-promise: 2.1.3 - transitivePeerDependencies: - - encoding - - supports-color - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - dependencies: - web-vitals: 0.2.4 - - '@vercel/gatsby-plugin-vercel-builder@2.0.93': - dependencies: - '@sinclair/typebox': 0.25.24 - '@vercel/build-utils': 11.0.2 - esbuild: 0.14.47 - etag: 1.8.1 - fs-extra: 11.1.0 - - '@vercel/go@3.2.3': {} - - '@vercel/hono@0.0.18(rollup@4.52.3)': - dependencies: - '@vercel/node': 5.3.17(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - ts-morph: 12.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - - '@vercel/hydrogen@1.2.4': - dependencies: - '@vercel/static-config': 3.1.2 - ts-morph: 12.0.0 - - '@vercel/next@4.12.3(rollup@4.52.3)': - dependencies: - '@vercel/nft': 0.30.1(rollup@4.52.3) - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/nft@0.30.1(rollup@4.52.3)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.3.0(rollup@4.52.3) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.3 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/node@5.3.17(rollup@4.52.3)': - dependencies: - '@edge-runtime/node-utils': 2.3.0 - '@edge-runtime/primitives': 4.1.0 - '@edge-runtime/vm': 3.2.0 - '@types/node': 16.18.11 - '@vercel/build-utils': 11.0.2 - '@vercel/error-utils': 2.0.3 - '@vercel/nft': 0.30.1(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - async-listen: 3.0.0 - cjs-module-lexer: 1.2.3 - edge-runtime: 2.5.9 - es-module-lexer: 1.4.1 - esbuild: 0.14.47 - etag: 1.8.1 - node-fetch: 2.6.9 - path-to-regexp: 6.1.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5) - typescript: 4.9.5 - undici: 5.28.4 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - - '@vercel/node@5.3.24(rollup@4.52.3)': - dependencies: - '@edge-runtime/node-utils': 2.3.0 - '@edge-runtime/primitives': 4.1.0 - '@edge-runtime/vm': 3.2.0 - '@types/node': 16.18.11 - '@vercel/build-utils': 12.1.0 - '@vercel/error-utils': 2.0.3 - '@vercel/nft': 0.30.1(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - async-listen: 3.0.0 - cjs-module-lexer: 1.2.3 - edge-runtime: 2.5.9 - es-module-lexer: 1.4.1 - esbuild: 0.14.47 - etag: 1.8.1 - mime-types: 2.1.35 - node-fetch: 2.6.9 - path-to-regexp: 6.1.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5) - typescript: 4.9.5 - undici: 5.28.4 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - - '@vercel/python@5.0.0': {} - - '@vercel/redwood@2.3.6(rollup@4.52.3)': - dependencies: - '@vercel/nft': 0.30.1(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - semver: 6.3.1 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/remix-builder@5.4.12(rollup@4.52.3)': - dependencies: - '@vercel/error-utils': 2.0.3 - '@vercel/nft': 0.30.1(rollup@4.52.3) - '@vercel/static-config': 3.1.2 - path-to-regexp: 6.1.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/ruby@2.2.1': {} - - '@vercel/static-build@2.7.20': - dependencies: - '@vercel/gatsby-plugin-vercel-analytics': 1.0.11 - '@vercel/gatsby-plugin-vercel-builder': 2.0.93 - '@vercel/static-config': 3.1.2 - ts-morph: 12.0.0 - - '@vercel/static-config@3.1.2': - dependencies: - ajv: 8.6.3 - json-schema-to-ts: 1.6.4 - ts-morph: 12.0.0 - '@vitejs/plugin-vue@6.0.1(vite@7.1.9(@types/node@22.18.8)(sass@1.93.2))(vue@3.5.22(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 @@ -3452,115 +2775,43 @@ snapshots: dependencies: vue: 3.5.22(typescript@5.9.3) - abbrev@3.0.1: {} - - acorn-import-attributes@1.9.5(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 + acorn-walk@8.3.2: {} acorn@7.4.1: {} + acorn@8.14.0: {} + acorn@8.15.0: {} add-stream@1.0.0: {} - agent-base@7.1.4: {} - - ajv@8.6.3: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.3: {} - - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.0: {} - - arg@4.1.3: {} - array-ify@1.0.0: {} asap@2.0.6: {} assert-never@1.4.0: {} - async-listen@1.2.0: {} - - async-listen@3.0.0: {} - - async-listen@3.0.1: {} - - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - - async-sema@3.1.1: {} - async-validator@4.2.5: {} - asynckit@0.4.0: {} - - axios@1.12.2: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - babel-walk@3.0.0-canary-5: dependencies: '@babel/types': 7.28.2 - balanced-match@1.0.2: {} - binary-extensions@2.3.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - birpc@2.5.0: {} - boolbase@1.0.0: {} - - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 + blake3-wasm@2.1.5: {} braces@3.0.3: dependencies: fill-range: 7.1.1 - buffer-crc32@0.2.13: {} - - bytes@3.1.0: {} - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -3575,29 +2826,6 @@ snapshots: dependencies: is-regex: 1.2.1 - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.2.2 - css-what: 6.2.2 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@1.1.2: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 7.15.0 - whatwg-mimetype: 4.0.0 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -3610,52 +2838,40 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.0: - dependencies: - readdirp: 4.1.2 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 - chownr@2.0.0: {} - - chownr@3.0.0: {} - - cjs-module-lexer@1.2.3: {} - - code-block-writer@10.1.1: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} - combined-stream@1.0.8: + color-string@1.9.1: dependencies: - delayed-stream: 1.0.0 + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 compare-func@2.0.0: dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 - concat-map@0.0.1: {} - confbox@0.1.8: {} confbox@0.2.2: {} - consola@3.4.2: {} - constantinople@4.0.1: dependencies: '@babel/parser': 7.28.4 '@babel/types': 7.28.2 - content-type@1.0.4: {} - conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -3735,37 +2951,17 @@ snapshots: dependencies: meow: 13.2.0 - convert-hrtime@3.0.0: {} - cookie@1.0.2: {} copy-anything@3.0.5: dependencies: is-what: 4.1.16 - create-require@1.1.1: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - css-render@0.15.14: dependencies: '@emotion/hash': 0.8.0 csstype: 3.0.11 - css-select@5.2.2: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-what@6.2.2: {} - csstype@3.0.11: {} csstype@3.1.3: {} @@ -3782,45 +2978,19 @@ snapshots: date-fns@4.1.0: {} - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.4.3: dependencies: ms: 2.1.3 - delayed-stream@1.0.0: {} - - depd@1.1.2: {} + defu@6.1.4: {} detect-libc@1.0.3: optional: true detect-libc@2.1.0: {} - diff@4.0.2: {} - doctypes@1.1.0: {} - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -3831,137 +3001,18 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - - edge-runtime@2.5.9: - dependencies: - '@edge-runtime/format': 2.2.1 - '@edge-runtime/ponyfill': 2.4.2 - '@edge-runtime/vm': 3.2.0 - async-listen: 3.0.1 - mri: 1.2.0 - picocolors: 1.0.0 - pretty-ms: 7.0.1 - signal-exit: 4.0.2 - time-span: 4.0.0 - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - encoding-sniffer@0.2.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - - end-of-stream@1.1.0: - dependencies: - once: 1.3.3 - entities@4.5.0: {} - entities@6.0.1: {} + error-stack-parser-es@1.0.5: {} es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-module-lexer@1.4.1: {} - es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - esbuild-android-64@0.14.47: - optional: true - - esbuild-android-arm64@0.14.47: - optional: true - - esbuild-darwin-64@0.14.47: - optional: true - - esbuild-darwin-arm64@0.14.47: - optional: true - - esbuild-freebsd-64@0.14.47: - optional: true - - esbuild-freebsd-arm64@0.14.47: - optional: true - - esbuild-linux-32@0.14.47: - optional: true - - esbuild-linux-64@0.14.47: - optional: true - - esbuild-linux-arm64@0.14.47: - optional: true - - esbuild-linux-arm@0.14.47: - optional: true - - esbuild-linux-mips64le@0.14.47: - optional: true - - esbuild-linux-ppc64le@0.14.47: - optional: true - - esbuild-linux-riscv64@0.14.47: - optional: true - - esbuild-linux-s390x@0.14.47: - optional: true - - esbuild-netbsd-64@0.14.47: - optional: true - - esbuild-openbsd-64@0.14.47: - optional: true - - esbuild-sunos-64@0.14.47: - optional: true - - esbuild-windows-32@0.14.47: - optional: true - - esbuild-windows-64@0.14.47: - optional: true - - esbuild-windows-arm64@0.14.47: - optional: true - - esbuild@0.14.47: - optionalDependencies: - esbuild-android-64: 0.14.47 - esbuild-android-arm64: 0.14.47 - esbuild-darwin-64: 0.14.47 - esbuild-darwin-arm64: 0.14.47 - esbuild-freebsd-64: 0.14.47 - esbuild-freebsd-arm64: 0.14.47 - esbuild-linux-32: 0.14.47 - esbuild-linux-64: 0.14.47 - esbuild-linux-arm: 0.14.47 - esbuild-linux-arm64: 0.14.47 - esbuild-linux-mips64le: 0.14.47 - esbuild-linux-ppc64le: 0.14.47 - esbuild-linux-riscv64: 0.14.47 - esbuild-linux-s390x: 0.14.47 - esbuild-netbsd-64: 0.14.47 - esbuild-openbsd-64: 0.14.47 - esbuild-sunos-64: 0.14.47 - esbuild-windows-32: 0.14.47 - esbuild-windows-64: 0.14.47 - esbuild-windows-arm64: 0.14.47 - esbuild@0.25.10: optionalDependencies: '@esbuild/aix-ppc64': 0.25.10 @@ -3991,6 +3042,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.10 '@esbuild/win32-x64': 0.25.10 + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + escape-string-regexp@5.0.0: {} estree-walker@2.0.2: {} @@ -3999,78 +3078,29 @@ snapshots: dependencies: '@types/estree': 1.0.8 - etag@1.8.1: {} - - events-intercept@2.0.0: {} - evtd@0.2.4: {} + exit-hook@2.2.1: {} + exsolve@1.0.7: {} - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 fflate@0.8.2: {} - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 find-up-simple@1.0.1: {} - follow-redirects@1.15.11: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - - fs-extra@11.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fsevents@2.3.3: optional: true function-bind@1.1.2: {} - generic-pool@3.4.2: {} - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4111,21 +3141,12 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 + glob-to-regexp@0.4.1: {} globals@15.15.0: {} gopd@1.2.0: {} - graceful-fs@4.2.11: {} - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -4153,55 +3174,16 @@ snapshots: dependencies: lru-cache: 10.4.3 - htmlparser2@10.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 6.0.1 - - http-errors@1.4.0: - dependencies: - inherits: 2.0.1 - statuses: 1.5.0 - - http-errors@1.7.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - immutable@5.1.3: {} index-to-position@1.1.0: {} - inherits@2.0.1: {} - - inherits@2.0.4: {} + is-arrayish@0.3.4: {} is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-buffer@2.0.5: {} - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -4213,14 +3195,10 @@ snapshots: is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-node-process@1.2.0: {} - is-number@7.0.0: {} is-obj@2.0.0: {} @@ -4236,17 +3214,7 @@ snapshots: is-what@4.1.16: {} - isarray@0.0.1: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jose@5.9.6: {} + itty-router@5.0.22: {} js-cookie@3.0.5: {} @@ -4256,24 +3224,13 @@ snapshots: js-tokens@9.0.1: {} - json-schema-to-ts@1.6.4: - dependencies: - '@types/json-schema': 7.0.15 - ts-toolbelt: 6.15.5 - - json-schema-traverse@1.0.0: {} - - jsonfile@6.2.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - jstransformer@1.0.0: dependencies: is-promise: 2.2.2 promise: 7.3.1 + kleur@4.1.5: {} + kolorist@1.8.0: {} local-pkg@1.1.2: @@ -4290,72 +3247,46 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - make-error@1.3.6: {} - math-intrinsics@1.1.0: {} meow@13.2.0: {} - merge2@1.4.1: {} - - micro@9.3.5-canary.3: - dependencies: - arg: 4.1.0 - content-type: 1.0.4 - raw-body: 2.4.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 + optional: true - mime-db@1.52.0: {} + mime@3.0.0: {} - mime-types@2.1.35: + miniflare@4.20251004.0: dependencies: - mime-db: 1.52.0 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.12 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.2 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + sharp: 0.33.5 + stoppable: 1.1.0 + undici: 7.14.0 + workerd: 1.20251004.0 + ws: 8.18.0 + youch: 4.1.0-beta.10 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - minizlib@3.1.0: - dependencies: - minipass: 7.1.2 - mint-filter@3.0.1: {} mitt@3.0.1: {} - mkdirp@1.0.4: {} - mlly@1.8.0: dependencies: acorn: 8.15.0 @@ -4369,12 +3300,6 @@ snapshots: mp4box@0.5.3: {} - mri@1.2.0: {} - - ms@2.1.1: {} - - ms@2.1.2: {} - ms@2.1.3: {} muggle-string@0.4.1: {} @@ -4409,20 +3334,6 @@ snapshots: node-addon-api@7.1.1: optional: true - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.6.9: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: {} - - nopt@8.1.0: - dependencies: - abbrev: 3.0.1 - normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 @@ -4433,19 +3344,9 @@ snapshots: nprogress@0.2.0: {} - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - object-assign@4.1.1: {} - once@1.3.3: - dependencies: - wrappy: 1.0.2 - - os-paths@4.4.0: {} - - package-json-from-dist@1.0.1: {} + ohash@2.0.11: {} package-manager-detector@1.3.0: {} @@ -4455,53 +3356,14 @@ snapshots: index-to-position: 1.1.0 type-fest: 4.41.0 - parse-ms@2.1.0: {} - - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.3.0 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.3.0 - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - - path-browserify@1.0.1: {} - - path-key@3.1.1: {} - - path-match@1.2.4: - dependencies: - http-errors: 1.4.0 - path-to-regexp: 1.9.0 - path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - - path-to-regexp@6.1.0: {} - path-to-regexp@6.3.0: {} pathe@2.0.3: {} - pend@1.2.0: {} - perfect-debounce@1.0.0: {} - picocolors@1.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4535,18 +3397,10 @@ snapshots: prettier@3.6.2: {} - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - promise@7.3.1: dependencies: asap: 2.0.6 - promisepipe@3.0.0: {} - - proxy-from-env@1.1.0: {} - pug-attrs@3.0.0: dependencies: constantinople: 4.0.1 @@ -4614,19 +3468,8 @@ snapshots: pug-runtime: 3.0.1 pug-strip-comments: 2.0.0 - punycode@2.3.1: {} - quansync@0.2.11: {} - queue-microtask@1.2.3: {} - - raw-body@2.4.1: - dependencies: - bytes: 3.1.0 - http-errors: 1.7.3 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - read-package-up@11.0.0: dependencies: find-up-simple: 1.0.1 @@ -4647,20 +3490,12 @@ snapshots: readdirp@4.1.2: {} - require-from-string@2.0.2: {} - - resolve-from@5.0.0: {} - resolve@1.22.10: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry@0.13.1: {} - - reusify@1.1.0: {} - rfdc@1.4.1: {} rollup@4.52.3: @@ -4691,12 +3526,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.3 fsevents: 2.3.3 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safer-buffer@2.1.2: {} - sass@1.93.2: dependencies: chokidar: 4.0.3 @@ -4709,25 +3538,37 @@ snapshots: seemly@0.3.10: {} - semver@6.3.1: {} - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - semver@7.7.2: {} - setprototypeof@1.1.1: {} - - shebang-command@2.0.0: + sharp@0.33.5: dependencies: - shebang-regex: 3.0.0 + color: 4.2.3 + detect-libc: 2.1.0 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 - shebang-regex@3.0.0: {} - - signal-exit@4.0.2: {} - - signal-exit@4.1.0: {} + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 source-map-js@1.2.1: {} @@ -4749,39 +3590,7 @@ snapshots: speakingurl@14.0.1: {} - stat-mode@0.3.0: {} - - statuses@1.5.0: {} - - stream-to-array@2.3.0: - dependencies: - any-promise: 1.3.0 - - stream-to-promise@2.2.0: - dependencies: - any-promise: 1.3.0 - end-of-stream: 1.1.0 - stream-to-array: 2.3.0 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.2 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.2: - dependencies: - ansi-regex: 6.2.2 + stoppable@1.1.0: {} strip-literal@3.0.0: dependencies: @@ -4791,39 +3600,16 @@ snapshots: dependencies: copy-anything: 3.0.5 + supports-color@10.2.2: {} + supports-preserve-symlinks-flag@1.0.0: {} - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.4.4: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.1.0 - yallist: 5.0.0 - temp-dir@3.0.0: {} tempfile@5.0.0: dependencies: temp-dir: 3.0.0 - throttleit@2.1.0: {} - - time-span@4.0.0: - dependencies: - convert-hrtime: 3.0.0 - - tinyexec@0.3.2: {} - tinyexec@1.0.1: {} tinyglobby@0.2.15: @@ -4835,47 +3621,14 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.0: {} - token-stream@1.0.0: {} - tr46@0.0.3: {} - - tree-kill@1.2.2: {} - treemate@0.3.11: {} - ts-morph@12.0.0: - dependencies: - '@ts-morph/common': 0.11.1 - code-block-writer: 10.1.1 - - ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 16.18.11 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - ts-toolbelt@6.15.5: {} - tslib@2.8.1: {} type-fest@4.41.0: {} - typescript@4.9.5: {} - typescript@5.9.3: {} ufo@1.6.1: {} @@ -4883,19 +3636,17 @@ snapshots: uglify-js@3.19.3: optional: true - uid-promise@1.0.0: {} - undici-types@6.21.0: {} - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 + undici@7.14.0: {} - undici@5.29.0: + unenv@2.0.0-rc.21: dependencies: - '@fastify/busboy': 2.1.1 - - undici@7.15.0: {} + defu: 6.1.4 + exsolve: 1.0.7 + ohash: 2.0.11 + pathe: 2.0.3 + ufo: 1.6.1 unicorn-magic@0.1.0: {} @@ -4916,10 +3667,6 @@ snapshots: unplugin: 2.3.10 unplugin-utils: 0.3.0 - universalify@2.0.1: {} - - unpipe@1.0.0: {} - unplugin-auto-import@20.2.0(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))): dependencies: local-pkg: 1.1.2 @@ -4971,12 +3718,6 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -4987,32 +3728,6 @@ snapshots: evtd: 0.2.4 vue: 3.5.22(typescript@5.9.3) - vercel@46.1.1(rollup@4.52.3): - dependencies: - '@vercel/blob': 1.0.2 - '@vercel/build-utils': 11.0.2 - '@vercel/detect-agent': 0.2.0 - '@vercel/express': 0.0.10(rollup@4.52.3) - '@vercel/fun': 1.1.6 - '@vercel/go': 3.2.3 - '@vercel/hono': 0.0.18(rollup@4.52.3) - '@vercel/hydrogen': 1.2.4 - '@vercel/next': 4.12.3(rollup@4.52.3) - '@vercel/node': 5.3.17(rollup@4.52.3) - '@vercel/python': 5.0.0 - '@vercel/redwood': 2.3.6(rollup@4.52.3) - '@vercel/remix-builder': 5.4.12(rollup@4.52.3) - '@vercel/ruby': 2.2.1 - '@vercel/static-build': 2.7.20 - chokidar: 4.0.0 - jose: 5.9.6 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - encoding - - rollup - - supports-color - vite@7.1.9(@types/node@22.18.8)(sass@1.93.2): dependencies: esbuild: 0.25.10 @@ -5112,27 +3827,8 @@ snapshots: vooks: 0.2.12(vue@3.5.22(typescript@5.9.3)) vue: 3.5.22(typescript@5.9.3) - web-vitals@0.2.4: {} - - webidl-conversions@3.0.1: {} - webpack-virtual-modules@0.6.2: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - with@7.0.2: dependencies: '@babel/parser': 7.28.4 @@ -5142,44 +3838,43 @@ snapshots: wordwrap@1.0.0: {} - wrap-ansi@7.0.0: + workerd@1.20251004.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20251004.0 + '@cloudflare/workerd-darwin-arm64': 1.20251004.0 + '@cloudflare/workerd-linux-64': 1.20251004.0 + '@cloudflare/workerd-linux-arm64': 1.20251004.0 + '@cloudflare/workerd-windows-64': 1.20251004.0 + + wrangler@4.42.1: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + '@cloudflare/kv-asset-handler': 0.4.0 + '@cloudflare/unenv-preset': 2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251004.0) + blake3-wasm: 2.1.5 + esbuild: 0.25.4 + miniflare: 4.20251004.0 + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.21 + workerd: 1.20251004.0 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate - wrap-ansi@8.1.0: + ws@8.18.0: {} + + youch-core@0.3.3: dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.1.2 + '@poppinss/exception': 1.2.2 + error-stack-parser-es: 1.0.5 - wrappy@1.0.2: {} - - xdg-app-paths@5.1.0: + youch@4.1.0-beta.10: dependencies: - xdg-portable: 7.3.0 + '@poppinss/colors': 4.1.5 + '@poppinss/dumper': 0.6.4 + '@speed-highlight/core': 1.2.7 + cookie: 1.0.2 + youch-core: 0.3.3 - xdg-portable@7.3.0: - dependencies: - os-paths: 4.4.0 - - yallist@4.0.0: {} - - yallist@5.0.0: {} - - yauzl-clone@1.0.4: - dependencies: - events-intercept: 2.0.0 - - yauzl-promise@2.1.3: - dependencies: - yauzl: 2.10.0 - yauzl-clone: 1.0.4 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} + zod@3.22.3: {} diff --git a/src/components.d.ts b/src/components.d.ts index db751ef..2f1f98e 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -27,9 +27,16 @@ declare module 'vue' { ListLink: typeof import('./components/SideNav/ListLink.vue')['default'] NaiveuiProvider: typeof import('./components/NaiveuiProvider.vue')['default'] NAlert: typeof import('naive-ui')['NAlert'] + NButton: typeof import('naive-ui')['NButton'] + NCard: typeof import('naive-ui')['NCard'] + NEmpty: typeof import('naive-ui')['NEmpty'] + NFlex: typeof import('naive-ui')['NFlex'] NLi: typeof import('naive-ui')['NLi'] + NPagination: typeof import('naive-ui')['NPagination'] NProgress: typeof import('./components/NProgress.vue')['default'] NSpace: typeof import('naive-ui')['NSpace'] + NTabPane: typeof import('naive-ui')['NTabPane'] + NTabs: typeof import('naive-ui')['NTabs'] NTag: typeof import('naive-ui')['NTag'] NUl: typeof import('naive-ui')['NUl'] Placeholder: typeof import('./components/Placeholder.vue')['default'] diff --git a/src/components/Comment/CommentSubmit.vue b/src/components/Comment/CommentSubmit.vue index 6556d40..4bdfbee 100644 --- a/src/components/Comment/CommentSubmit.vue +++ b/src/components/Comment/CommentSubmit.vue @@ -19,6 +19,7 @@