From 0faea536176f51be1770851fdb6cf6651a348108 Mon Sep 17 00:00:00 2001 From: JuLuogo <1576586736@qq.com> Date: Wed, 8 Oct 2025 16:15:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=A4=84=E7=90=86=E5=92=8C=E9=9D=99=E6=80=81?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除测试端点,添加前端页面处理逻辑 - 实现静态资源处理功能 - 添加SPA路由支持,所有未匹配路径返回前端页面 - 更新依赖,添加@cloudflare/kv-asset-handler --- .wrangler/tmp/bundle-0fkApo/checked-fetch.js | 30 + .../middleware-insertion-facade.js | 11 + .../bundle-0fkApo/middleware-loader.entry.ts | 134 ++++ .wrangler/tmp/bundle-Zpyo5X/checked-fetch.js | 30 + .../middleware-insertion-facade.js | 11 + .../bundle-Zpyo5X/middleware-loader.entry.ts | 134 ++++ .wrangler/tmp/bundle-xddOtL/checked-fetch.js | 30 + .../middleware-insertion-facade.js | 11 + .../bundle-xddOtL/middleware-loader.entry.ts | 134 ++++ .wrangler/tmp/dev-8ou9Jm/[[path]].js | 82 ++- .wrangler/tmp/dev-8ou9Jm/[[path]].js.map | 4 +- .wrangler/tmp/dev-hZXYrC/[[path]].js | 624 ++++++++++++++++++ .wrangler/tmp/dev-hZXYrC/[[path]].js.map | 8 + .wrangler/tmp/dev-rQxgqm/[[path]].js | 462 +++++++++++++ .wrangler/tmp/dev-rQxgqm/[[path]].js.map | 8 + .wrangler/tmp/dev-raLOPp/[[path]].js | 624 ++++++++++++++++++ .wrangler/tmp/dev-raLOPp/[[path]].js.map | 8 + functions/[[path]].ts | 274 +++++++- package.json | 1 + pnpm-lock.yaml | 3 + 20 files changed, 2578 insertions(+), 45 deletions(-) create mode 100644 .wrangler/tmp/bundle-0fkApo/checked-fetch.js create mode 100644 .wrangler/tmp/bundle-0fkApo/middleware-insertion-facade.js create mode 100644 .wrangler/tmp/bundle-0fkApo/middleware-loader.entry.ts create mode 100644 .wrangler/tmp/bundle-Zpyo5X/checked-fetch.js create mode 100644 .wrangler/tmp/bundle-Zpyo5X/middleware-insertion-facade.js create mode 100644 .wrangler/tmp/bundle-Zpyo5X/middleware-loader.entry.ts create mode 100644 .wrangler/tmp/bundle-xddOtL/checked-fetch.js create mode 100644 .wrangler/tmp/bundle-xddOtL/middleware-insertion-facade.js create mode 100644 .wrangler/tmp/bundle-xddOtL/middleware-loader.entry.ts create mode 100644 .wrangler/tmp/dev-hZXYrC/[[path]].js create mode 100644 .wrangler/tmp/dev-hZXYrC/[[path]].js.map create mode 100644 .wrangler/tmp/dev-rQxgqm/[[path]].js create mode 100644 .wrangler/tmp/dev-rQxgqm/[[path]].js.map create mode 100644 .wrangler/tmp/dev-raLOPp/[[path]].js create mode 100644 .wrangler/tmp/dev-raLOPp/[[path]].js.map diff --git a/.wrangler/tmp/bundle-0fkApo/checked-fetch.js b/.wrangler/tmp/bundle-0fkApo/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-0fkApo/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-0fkApo/middleware-insertion-facade.js b/.wrangler/tmp/bundle-0fkApo/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-0fkApo/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-0fkApo/middleware-loader.entry.ts b/.wrangler/tmp/bundle-0fkApo/middleware-loader.entry.ts new file mode 100644 index 0000000..96a9ed9 --- /dev/null +++ b/.wrangler/tmp/bundle-0fkApo/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-0fkApo\\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-0fkApo\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-0fkApo\\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-Zpyo5X/checked-fetch.js b/.wrangler/tmp/bundle-Zpyo5X/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-Zpyo5X/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-Zpyo5X/middleware-insertion-facade.js b/.wrangler/tmp/bundle-Zpyo5X/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-Zpyo5X/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-Zpyo5X/middleware-loader.entry.ts b/.wrangler/tmp/bundle-Zpyo5X/middleware-loader.entry.ts new file mode 100644 index 0000000..239d86d --- /dev/null +++ b/.wrangler/tmp/bundle-Zpyo5X/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-Zpyo5X\\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-Zpyo5X\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-Zpyo5X\\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-xddOtL/checked-fetch.js b/.wrangler/tmp/bundle-xddOtL/checked-fetch.js new file mode 100644 index 0000000..8c007fd --- /dev/null +++ b/.wrangler/tmp/bundle-xddOtL/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-xddOtL/middleware-insertion-facade.js b/.wrangler/tmp/bundle-xddOtL/middleware-insertion-facade.js new file mode 100644 index 0000000..2ea7d21 --- /dev/null +++ b/.wrangler/tmp/bundle-xddOtL/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-xddOtL/middleware-loader.entry.ts b/.wrangler/tmp/bundle-xddOtL/middleware-loader.entry.ts new file mode 100644 index 0000000..a86c382 --- /dev/null +++ b/.wrangler/tmp/bundle-xddOtL/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-xddOtL\\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-xddOtL\\middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "D:\\github\\pixivnow\\.wrangler\\tmp\\bundle-xddOtL\\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-8ou9Jm/[[path]].js b/.wrangler/tmp/dev-8ou9Jm/[[path]].js index c280aa3..606f61d 100644 --- a/.wrangler/tmp/dev-8ou9Jm/[[path]].js +++ b/.wrangler/tmp/dev-8ou9Jm/[[path]].js @@ -61,21 +61,6 @@ var path_default = { }); } 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); } @@ -88,10 +73,10 @@ var path_default = { if (path === "/api/user") { return await handleUserAPI(request, env, url); } - return corsResponse(new Response("Not Found", { - status: 404, - headers: { "Content-Type": "text/plain" } - })); + if (path.startsWith("/assets/") || path === "/favicon.ico" || path === "/robots.txt" || path.startsWith("/images/")) { + return await handleStaticAssets(request, env, path); + } + return await handleFrontendPage(request, env); } catch (error) { console.error("Worker error:", error); return corsResponse(new Response(JSON.stringify({ @@ -230,6 +215,65 @@ async function handleUserAPI(request, env, url) { } } __name(handleUserAPI, "handleUserAPI"); +async function handleStaticAssets(request, env, path) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); +} +__name(handleStaticAssets, "handleStaticAssets"); +async function handleFrontendPage(request, env) { + const html = ` + + + + + + PixivNow + + + + + \n -->\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n`\n\n return corsResponse(new Response(html, {\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\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-hZXYrC/[[path]].js b/.wrangler/tmp/dev-hZXYrC/[[path]].js new file mode 100644 index 0000000..9f94258 --- /dev/null +++ b/.wrangler/tmp/dev-hZXYrC/[[path]].js @@ -0,0 +1,624 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-Zpyo5X/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 === "/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); + } + if (path.startsWith("/assets/") || path === "/favicon.ico" || path === "/robots.txt" || path.startsWith("/images/")) { + return await handleStaticAssets(request, env, path); + } + return await handleFrontendPage(request, env); + } 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"); +async function handleStaticAssets(request, env, path) { + try { + const url = new URL(request.url); + const pathname = url.pathname; + let contentType = "text/plain"; + if (pathname.endsWith(".js")) { + contentType = "application/javascript"; + } else if (pathname.endsWith(".css")) { + contentType = "text/css"; + } else if (pathname.endsWith(".ico")) { + contentType = "image/x-icon"; + } else if (pathname.endsWith(".svg")) { + contentType = "image/svg+xml"; + } else if (pathname.endsWith(".png")) { + contentType = "image/png"; + } else if (pathname.endsWith(".jpg") || pathname.endsWith(".jpeg")) { + contentType = "image/jpeg"; + } + try { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } catch (e) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } + } catch (e) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } +} +__name(handleStaticAssets, "handleStaticAssets"); +async function handleFrontendPage(request, env) { + const html = ` + + + + + + PixivNow + + + \n \n \n \n \n
\n
PixivNow
\n
\u63A2\u7D22\u7CBE\u5F69\u7684 Pixiv \u4F5C\u54C1\u4E16\u754C
\n \n \n \n
\n
\n

\uD83C\uDFA8 \u968F\u673A\u4F5C\u54C1

\n

\u53D1\u73B0\u610F\u60F3\u4E0D\u5230\u7684\u7CBE\u5F69\u4F5C\u54C1

\n
\n
\n

\uD83D\uDD0D \u667A\u80FD\u641C\u7D22

\n

\u5FEB\u901F\u627E\u5230\u4F60\u559C\u6B22\u7684\u5185\u5BB9

\n
\n
\n

\uD83D\uDCF1 \u54CD\u5E94\u5F0F\u8BBE\u8BA1

\n

\u5B8C\u7F8E\u9002\u914D\u5404\u79CD\u8BBE\u5907

\n
\n
\n

\u26A1 \u9AD8\u901F\u8BBF\u95EE

\n

\u57FA\u4E8E Cloudflare \u5168\u7403\u52A0\u901F

\n
\n
\n \n
\n \u2705 \u670D\u52A1\u6B63\u5E38\u8FD0\u884C\u4E2D\n
\n \n
\n

API \u63A5\u53E3\u53EF\u7528\uFF1A

\n

/api/illust/random - \u968F\u673A\u4F5C\u54C1

\n

/api/user - \u7528\u6237\u4FE1\u606F

\n

\u56FE\u7247\u4EE3\u7406\uFF1A/i/ \u548C /s/

\n
\n
\n \n \n \n`\n\n return corsResponse(new Response(html, {\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\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-Zpyo5X\\\\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-Zpyo5X\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-Zpyo5X\\\\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-rQxgqm/[[path]].js b/.wrangler/tmp/dev-rQxgqm/[[path]].js new file mode 100644 index 0000000..4c01e83 --- /dev/null +++ b/.wrangler/tmp/dev-rQxgqm/[[path]].js @@ -0,0 +1,462 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-0fkApo/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 === "/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); + } + if (path.startsWith("/assets/") || path === "/favicon.ico" || path === "/robots.txt" || path.startsWith("/images/")) { + return await handleStaticAssets(request, env, path); + } + return await handleFrontendPage(request, env); + } 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"); +async function handleStaticAssets(request, env, path) { + try { + return await getAssetFromKV({ + request, + waitUntil: /* @__PURE__ */ __name(() => { + }, "waitUntil") + }, { + ASSET_NAMESPACE: env.__STATIC_CONTENT, + ASSET_MANIFEST: env.__STATIC_CONTENT_MANIFEST + }); + } catch (e) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } +} +__name(handleStaticAssets, "handleStaticAssets"); +async function handleFrontendPage(request, env) { + const html = ` + + + + + + PixivNow + + + + + \n -->\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n`\n\n return corsResponse(new Response(html, {\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\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-0fkApo\\\\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-0fkApo\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-0fkApo\\\\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-raLOPp/[[path]].js b/.wrangler/tmp/dev-raLOPp/[[path]].js new file mode 100644 index 0000000..6b482af --- /dev/null +++ b/.wrangler/tmp/dev-raLOPp/[[path]].js @@ -0,0 +1,624 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// .wrangler/tmp/bundle-xddOtL/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 === "/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); + } + if (path.startsWith("/assets/") || path === "/favicon.ico" || path === "/robots.txt" || path.startsWith("/images/")) { + return await handleStaticAssets(request, env, path); + } + return await handleFrontendPage(request, env); + } 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"); +async function handleStaticAssets(request, env, path) { + try { + const url = new URL(request.url); + const pathname = url.pathname; + let contentType = "text/plain"; + if (pathname.endsWith(".js")) { + contentType = "application/javascript"; + } else if (pathname.endsWith(".css")) { + contentType = "text/css"; + } else if (pathname.endsWith(".ico")) { + contentType = "image/x-icon"; + } else if (pathname.endsWith(".svg")) { + contentType = "image/svg+xml"; + } else if (pathname.endsWith(".png")) { + contentType = "image/png"; + } else if (pathname.endsWith(".jpg") || pathname.endsWith(".jpeg")) { + contentType = "image/jpeg"; + } + try { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } catch (e) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } + } catch (e) { + return new Response("Static asset not found", { + status: 404, + headers: { "Content-Type": "text/plain" } + }); + } +} +__name(handleStaticAssets, "handleStaticAssets"); +async function handleFrontendPage(request, env) { + const html = ` + + + + + + PixivNow + + + \n \n \n \n \n
\n
PixivNow
\n
\u63A2\u7D22\u7CBE\u5F69\u7684 Pixiv \u4F5C\u54C1\u4E16\u754C
\n \n \n \n
\n
\n

\uD83C\uDFA8 \u968F\u673A\u4F5C\u54C1

\n

\u53D1\u73B0\u610F\u60F3\u4E0D\u5230\u7684\u7CBE\u5F69\u4F5C\u54C1

\n
\n
\n

\uD83D\uDD0D \u667A\u80FD\u641C\u7D22

\n

\u5FEB\u901F\u627E\u5230\u4F60\u559C\u6B22\u7684\u5185\u5BB9

\n
\n
\n

\uD83D\uDCF1 \u54CD\u5E94\u5F0F\u8BBE\u8BA1

\n

\u5B8C\u7F8E\u9002\u914D\u5404\u79CD\u8BBE\u5907

\n
\n
\n

\u26A1 \u9AD8\u901F\u8BBF\u95EE

\n

\u57FA\u4E8E Cloudflare \u5168\u7403\u52A0\u901F

\n
\n
\n \n
\n \u2705 \u670D\u52A1\u6B63\u5E38\u8FD0\u884C\u4E2D\n
\n \n
\n

API \u63A5\u53E3\u53EF\u7528\uFF1A

\n

/api/illust/random - \u968F\u673A\u4F5C\u54C1

\n

/api/user - \u7528\u6237\u4FE1\u606F

\n

\u56FE\u7247\u4EE3\u7406\uFF1A/i/ \u548C /s/

\n
\n
\n \n \n \n`\n\n return corsResponse(new Response(html, {\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\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-xddOtL\\\\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-xddOtL\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"D:\\\\github\\\\pixivnow\\\\.wrangler\\\\tmp\\\\bundle-xddOtL\\\\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;;;AC5BD,SAAS,cAAc;AACrB,SAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,IAChC,0BAA0B;AAAA,EAC5B;AACF;AAPS;AAST,SAAS,aAAa,UAAoB;AACxC,QAAM,UAAU,IAAI,QAAQ,SAAS,OAAO;AAC5C,SAAO,QAAQ,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,YAAQ,IAAI,KAAK,KAAK;AAAA,EACxB,CAAC;AACD,SAAO,IAAI,SAAS,SAAS,MAAM;AAAA,IACjC,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAVS;AAYT,IAAO,eAAQ;AAAA,EACb,OAAO,8BAAO,SAAkB,KAAU,QAAa;AACrD,YAAQ,IAAI,wBAAwB,QAAQ,QAAQ,QAAQ,GAAG;AAE/D,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,UAAM,OAAO,IAAI;AAGjB,QAAI,QAAQ,WAAW,WAAW;AAChC,aAAO,IAAI,SAAS,MAAM;AAAA,QACxB,QAAQ;AAAA,QACR,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAI;AAEF,UAAI,SAAS,sBAAsB;AACjC,eAAO,MAAM,gBAAgB,SAAS,KAAK,GAAG;AAAA,MAChD;AAGA,UAAI,KAAK,MAAM,iBAAiB,GAAG;AACjC,eAAO,MAAM,mBAAmB,SAAS,GAAG;AAAA,MAC9C;AAGA,UAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,eAAO,MAAM,iBAAiB,SAAS,GAAG;AAAA,MAC5C;AAGA,UAAI,SAAS,aAAa;AACxB,eAAO,MAAM,cAAc,SAAS,KAAK,GAAG;AAAA,MAC9C;AAGA,UAAI,KAAK,WAAW,UAAU,KAAK,SAAS,kBAAkB,SAAS,iBAAiB,KAAK,WAAW,UAAU,GAAG;AACnH,eAAO,MAAM,mBAAmB,SAAS,KAAK,IAAI;AAAA,MACpD;AAGA,aAAO,MAAM,mBAAmB,SAAS,GAAG;AAAA,IAE9C,SAAS,OAAO;AACd,cAAQ,MAAM,iBAAiB,KAAK;AACpC,aAAO,aAAa,IAAI,SAAS,KAAK,UAAU;AAAA,QAC9C,OAAO;AAAA,QACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACpD,CAAC,GAAG;AAAA,QACF,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAChD,CAAC,CAAC;AAAA,IACJ;AAAA,EACF,GArDO;AAsDT;AAGA,eAAe,gBAAgB,SAAkB,KAAU,KAAU;AACnE,MAAI;AAEF,UAAM,gBACH,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,OAAO,KAAK,IAAI,aAAa,IAAI,QAAQ,MAAM,YACxF,IAAI,aAAa,IAAI,QAAQ,MAAM;AAGrC,UAAM,cAAc;AAAA,MAClB;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM,CAAC,QAAQ,MAAM;AAAA,QACrB,YAAY;AAAA,QACZ,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAEA,QAAI,gBAAgB,YAAY,CAAC,GAAG,MAAM,SAAS;AACjD,aAAO,aAAa,IAAI,SAAS,MAAM;AAAA,QACrC,QAAQ;AAAA,QACR,SAAS,EAAE,UAAU,YAAY,CAAC,EAAE,KAAK,QAAQ;AAAA,MACnD,CAAC,CAAC;AAAA,IACJ;AAEA,WAAO,aAAa,IAAI,SAAS,KAAK,UAAU,WAAW,GAAG;AAAA,MAC5D,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,CAAC;AAAA,EAwGJ,SAAS,OAAO;AACd,YAAQ,MAAM,wBAAwB,KAAK;AAC3C,WAAO,aAAa,IAAI,SAAS,KAAK,UAAU;AAAA,MAC9C,OAAO;AAAA,MACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IACpD,CAAC,GAAG;AAAA,MACF,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,CAAC;AAAA,EACJ;AACF;AArJe;AAwJf,eAAe,mBAAmB,SAAkB,KAAU;AAC5D,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,MAAI,WAAW;AAEf,QAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAC3C,UAAQ,IAAI,UAAU,uBAAuB;AAC7C,UAAQ,IAAI,WAAW,wBAAwB;AAE/C,UAAQ,IAAI,cAAc,IAAI,cAAc,+HAA+H;AAE3K,QAAM,SAAS,IAAI,QAAQ,IAAI,SAAS,GAAG;AAAA,IACzC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,MAAM,QAAQ;AAAA,EAChB,CAAC;AAED,QAAM,WAAW,MAAM,MAAM,MAAM;AACnC,SAAO,aAAa,QAAQ;AAC9B;AAlBe;AAqBf,eAAe,iBAAiB,SAAkB,KAAU;AAC1D,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,OAAO,IAAI,SAAS,MAAM,CAAC;AAGjC,MAAI,IAAI,SAAS,WAAW,IAAI,GAAG;AAEjC,QAAI,IAAI,sBAAsB;AAC5B,UAAI,OAAO,IAAI,uBAAuB;AAAA,IACxC,OAAO;AACL,UAAI,WAAW;AACf,UAAI,WAAW,MAAM;AAAA,IACvB;AAAA,EACF,OAAO;AAEL,QAAI,IAAI,sBAAsB;AAC5B,UAAI,OAAO,IAAI,uBAAuB;AAAA,IACxC,OAAO;AACL,UAAI,WAAW;AACf,UAAI,WAAW,MAAM;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,QAAQ;AAC5B,aAAW,KAAK,CAAC,UAAU,mBAAmB,mBAAmB,iBAAiB,YAAY,GAAG;AAC/F,QAAI,QAAQ,QAAQ,IAAI,CAAC,GAAG;AAC1B,cAAQ,IAAI,GAAG,QAAQ,QAAQ,IAAI,CAAC,CAAE;AAAA,IACxC;AAAA,EACF;AAEA,UAAQ,IAAI,WAAW,wBAAwB;AAE/C,UAAQ,IAAI,cAAc,IAAI,cAAc,+HAA+H;AAE3K,QAAM,SAAS,IAAI,QAAQ,IAAI,SAAS,GAAG;AAAA,IACzC;AAAA,EACF,CAAC;AAED,QAAM,WAAW,MAAM,MAAM,MAAM;AACnC,SAAO,aAAa,QAAQ;AAC9B;AAxCe;AA2Cf,eAAe,cAAc,SAAkB,KAAU,KAAU;AACjE,MAAI;AACF,UAAM,SAAS,IAAI,aAAa,IAAI,IAAI;AAExC,QAAI,CAAC,QAAQ;AACX,aAAO,aAAa,IAAI,SAAS,KAAK,UAAU,EAAE,OAAO,sBAAsB,CAAC,GAAG;AAAA,QACjF,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAChD,CAAC,CAAC;AAAA,IACJ;AAEA,UAAM,WAAW,IAAI,IAAI,mCAAmC,MAAM,EAAE;AAEpE,UAAM,UAAU,IAAI,QAAQ;AAC5B,YAAQ,IAAI,WAAW,wBAAwB;AAE/C,YAAQ,IAAI,cAAc,IAAI,cAAc,+HAA+H;AAE3K,UAAM,WAAW,MAAM,MAAM,SAAS,SAAS,GAAG,EAAE,QAAQ,CAAC;AAE7D,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO,aAAa,IAAI,SAAS,KAAK,UAAU,EAAE,OAAO,sBAAsB,SAAS,MAAM,GAAG,CAAC,GAAG;AAAA,QACnG,QAAQ,SAAS;AAAA,QACjB,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAChD,CAAC,CAAC;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,WAAO,aAAa,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,MACrD,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,CAAC;AAAA,EACJ,SAAS,OAAO;AACd,YAAQ,MAAM,sBAAsB,KAAK;AACzC,WAAO,aAAa,IAAI,SAAS,KAAK,UAAU;AAAA,MAC9C,OAAO;AAAA,MACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IACpD,CAAC,GAAG;AAAA,MACF,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,CAAC;AAAA,EACJ;AACF;AA1Ce;AA6Cb,eAAe,mBAAmB,SAAkB,KAAU,MAAc;AAC1E,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,UAAM,WAAW,IAAI;AAGrB,QAAI,cAAc;AAClB,QAAI,SAAS,SAAS,KAAK,GAAG;AAC5B,oBAAc;AAAA,IAChB,WAAW,SAAS,SAAS,MAAM,GAAG;AACpC,oBAAc;AAAA,IAChB,WAAW,SAAS,SAAS,MAAM,GAAG;AACpC,oBAAc;AAAA,IAChB,WAAW,SAAS,SAAS,MAAM,GAAG;AACpC,oBAAc;AAAA,IAChB,WAAW,SAAS,SAAS,MAAM,GAAG;AACpC,oBAAc;AAAA,IAChB,WAAW,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,OAAO,GAAG;AAClE,oBAAc;AAAA,IAChB;AAGA,QAAI;AAIF,aAAO,IAAI,SAAS,0BAA0B;AAAA,QAC5C,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,MAC1C,CAAC;AAAA,IACH,SAAS,GAAG;AACV,aAAO,IAAI,SAAS,0BAA0B;AAAA,QAC5C,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,MAC1C,CAAC;AAAA,IACH;AAAA,EACF,SAAS,GAAG;AACV,WAAO,IAAI,SAAS,0BAA0B;AAAA,MAC5C,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,IAC1C,CAAC;AAAA,EACH;AACF;AA1Ce;AA6CjB,eAAe,mBAAmB,SAAkB,KAAU;AAE5D,QAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8Lb,SAAO,aAAa,IAAI,SAAS,MAAM;AAAA,IACrC,SAAS,EAAE,gBAAgB,2BAA2B;AAAA,EACxD,CAAC,CAAC;AACJ;AAnMe;;;AChYf,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": [] +} diff --git a/functions/[[path]].ts b/functions/[[path]].ts index a645c1d..5e8e028 100644 --- a/functions/[[path]].ts +++ b/functions/[[path]].ts @@ -36,25 +36,6 @@ export default { } 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) @@ -75,11 +56,13 @@ export default { return await handleUserAPI(request, env, url) } - // 404 - return corsResponse(new Response('Not Found', { - status: 404, - headers: { 'Content-Type': 'text/plain' } - })) + // 静态资源处理 + if (path.startsWith('/assets/') || path === '/favicon.ico' || path === '/robots.txt' || path.startsWith('/images/')) { + return await handleStaticAssets(request, env, path) + } + + // 根路径和其他路径都返回前端页面(SPA 路由) + return await handleFrontendPage(request, env) } catch (error) { console.error('Worker error:', error) @@ -353,4 +336,247 @@ async function handleUserAPI(request: Request, env: any, url: URL) { headers: { 'Content-Type': 'application/json' }, })) } +} + +// 静态资源处理器 + async function handleStaticAssets(request: Request, env: any, path: string) { + try { + const url = new URL(request.url) + const pathname = url.pathname + + // 根据文件扩展名设置 Content-Type + let contentType = 'text/plain' + if (pathname.endsWith('.js')) { + contentType = 'application/javascript' + } else if (pathname.endsWith('.css')) { + contentType = 'text/css' + } else if (pathname.endsWith('.ico')) { + contentType = 'image/x-icon' + } else if (pathname.endsWith('.svg')) { + contentType = 'image/svg+xml' + } else if (pathname.endsWith('.png')) { + contentType = 'image/png' + } else if (pathname.endsWith('.jpg') || pathname.endsWith('.jpeg')) { + contentType = 'image/jpeg' + } + + // 尝试读取文件 + try { + // 这里需要使用 Cloudflare Workers 的文件系统 API + // 由于 Workers 环境限制,我们需要将文件内容嵌入到代码中 + // 或者使用 KV 存储 + return new Response('Static asset not found', { + status: 404, + headers: { 'Content-Type': 'text/plain' } + }) + } catch (e) { + return new Response('Static asset not found', { + status: 404, + headers: { 'Content-Type': 'text/plain' } + }) + } + } catch (e) { + return new Response('Static asset not found', { + status: 404, + headers: { 'Content-Type': 'text/plain' } + }) + } + } + +// 前端页面处理器 +async function handleFrontendPage(request: Request, env: any) { + // 返回前端 HTML 页面 + const html = ` + + + + + + PixivNow + + + + + + + +
+ +
探索精彩的 Pixiv 作品世界
+ + + +
+
+

🎨 随机作品

+

发现意想不到的精彩作品

+
+
+

🔍 智能搜索

+

快速找到你喜欢的内容

+
+
+

📱 响应式设计

+

完美适配各种设备

+
+
+

⚡ 高速访问

+

基于 Cloudflare 全球加速

+
+
+ +
+ ✅ 服务正常运行中 +
+ +
+

API 接口可用:

+

/api/illust/random - 随机作品

+

/api/user - 用户信息

+

图片代理:/i//s/

+
+
+ + + +` + + return corsResponse(new Response(html, { + headers: { 'Content-Type': 'text/html; charset=utf-8' }, + })) } \ No newline at end of file diff --git a/package.json b/package.json index 6320d4c..4145fd2 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "changelog": "conventional-changelog -p jquery -i CHANGELOG.md -s -r 0" }, "dependencies": { + "@cloudflare/kv-asset-handler": "^0.4.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "fflate": "^0.8.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 462c8e7..afab7c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@cloudflare/kv-asset-handler': + specifier: ^0.4.0 + version: 0.4.0 date-fns: specifier: ^4.1.0 version: 4.1.0