@delta-comic/plugin 3.0.0-next.14 → 3.0.0-next.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { PluginManifest } from "@delta-comic/model";
2
2
  import { PluginOption } from "vite";
3
3
  //#region vite/index.d.ts
4
- declare const deltaComic: (meta: PluginManifest, command: "build" | "serve") => PluginOption[];
4
+ declare const deltaComic: (meta: PluginManifest) => PluginOption[];
5
5
  //#endregion
6
6
  export { deltaComic };
7
7
  //# sourceMappingURL=index.d.mts.map
@@ -176,66 +176,77 @@ const createDevPlugin = (meta) => {
176
176
  };
177
177
  //#endregion
178
178
  //#region vite/index.ts
179
- const deltaComic = (meta, command) => {
179
+ const deltaComic = (meta) => {
180
180
  const externalGlobals = extendsDepends;
181
- const isServer = command == "serve";
182
- return [
183
- {
184
- name: "delta-comic-shared-runtime-guard",
185
- enforce: "pre",
186
- resolveId(source) {
187
- if (Object.hasOwn(externalGlobals, source)) return;
188
- const externalRoot = Object.keys(externalGlobals).find((root) => source.startsWith(`${root}/`));
189
- if (!externalRoot && !source.startsWith("@vue/")) return;
190
- throw new Error(`[delta-comic] Shared runtime subpath "${source}" is not supported. Import "${externalRoot ?? "vue"}" so the plugin reuses the host instance.`);
191
- }
181
+ let mode;
182
+ const sharedRuntimeGuard = {
183
+ name: "delta-comic-shared-runtime-guard",
184
+ enforce: "pre",
185
+ configResolved(config) {
186
+ mode = config.mode;
192
187
  },
193
- exposeHostLibraries({ libraries: externalGlobals }),
194
- ...isServer ? [createDevPlugin(meta)] : [{
195
- name: "delta-comic-helper",
196
- enforce: "post",
197
- config(config) {
198
- return merge(config, { build: {
199
- assetsInlineLimit: Number.POSITIVE_INFINITY,
200
- cssCodeSplit: false,
201
- lib: {
202
- entry: meta.entry?.jsPath ?? "./src/main.ts",
203
- fileName: "index",
204
- cssFileName: "index",
205
- name: `$$lib$$.__DcPlugin__${meta.name.id.replace("-", "_")}__`,
206
- formats: ["es"]
207
- }
208
- } });
209
- },
210
- async generateBundle(_options, bundle) {
211
- const archiveName = "plugin.zip";
212
- const manifest = JSON.stringify(meta, null, 2);
213
- const zip = new JSZip();
214
- for (const item of Object.values(bundle)) {
215
- if (item.fileName == archiveName) continue;
216
- if (item.type == "chunk") {
217
- zip.file(item.fileName, item.code);
218
- continue;
219
- }
220
- zip.file(item.fileName, item.source);
188
+ resolveId(source) {
189
+ if (mode == "test") return;
190
+ if (Object.hasOwn(externalGlobals, source)) return;
191
+ const externalRoot = Object.keys(externalGlobals).find((root) => source.startsWith(`${root}/`));
192
+ if (!externalRoot && !source.startsWith("@vue/")) return;
193
+ throw new Error(`[delta-comic] Shared runtime subpath "${source}" is not supported. Import "${externalRoot ?? "vue"}" so the plugin reuses the host instance.`);
194
+ }
195
+ };
196
+ const plugin = {
197
+ name: "delta-comic-helper",
198
+ enforce: "post",
199
+ apply: "build",
200
+ config(config) {
201
+ return merge(config, { build: {
202
+ assetsInlineLimit: Number.POSITIVE_INFINITY,
203
+ cssCodeSplit: false,
204
+ lib: {
205
+ entry: meta.entry?.jsPath ?? "./src/main.ts",
206
+ fileName: "index",
207
+ cssFileName: "index",
208
+ name: `$$lib$$.__DcPlugin__${meta.name.id.replace("-", "_")}__`,
209
+ formats: ["es"]
210
+ }
211
+ } });
212
+ },
213
+ async generateBundle(_options, bundle) {
214
+ const archiveName = "plugin.zip";
215
+ const manifest = JSON.stringify(meta, null, 2);
216
+ const zip = new JSZip();
217
+ for (const item of Object.values(bundle)) {
218
+ if (item.fileName == archiveName) continue;
219
+ if (item.type == "chunk") {
220
+ zip.file(item.fileName, item.code);
221
+ continue;
221
222
  }
222
- zip.file("manifest.json", manifest);
223
- const archive = await zip.generateAsync({
224
- compression: "DEFLATE",
225
- type: "uint8array"
226
- });
227
- this.emitFile({
228
- type: "asset",
229
- fileName: archiveName,
230
- source: archive
231
- });
232
- this.emitFile({
233
- type: "asset",
234
- fileName: "manifest.json",
235
- source: manifest
236
- });
223
+ zip.file(item.fileName, item.source);
237
224
  }
238
- }]
225
+ zip.file("manifest.json", manifest);
226
+ const archive = await zip.generateAsync({
227
+ compression: "DEFLATE",
228
+ type: "uint8array"
229
+ });
230
+ this.emitFile({
231
+ type: "asset",
232
+ fileName: archiveName,
233
+ source: archive
234
+ });
235
+ this.emitFile({
236
+ type: "asset",
237
+ fileName: "manifest.json",
238
+ source: manifest
239
+ });
240
+ }
241
+ };
242
+ const externals = exposeHostLibraries({ libraries: externalGlobals });
243
+ const devPlugin = createDevPlugin(meta);
244
+ devPlugin.apply = "serve";
245
+ return [
246
+ sharedRuntimeGuard,
247
+ externals,
248
+ plugin,
249
+ devPlugin
239
250
  ];
240
251
  };
241
252
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../vite/dev.ts","../../vite/index.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http'\nimport { relative, resolve } from 'node:path'\n\nimport type { PluginManifest } from '@delta-comic/model'\nimport type { Connect, ModuleNode, Plugin, ViteDevServer } from 'vite'\nimport { isCSSRequest, normalizePath } from 'vite'\n\nimport { DEV_CSS_PATH, DEV_ENTRY_PATH, DEV_MANIFEST_PATH } from '../lib/install/dev'\n\nexport const DEV_ENTRY_ID = '\\0delta-comic:dev-entry'\nexport { DEV_CSS_PATH, DEV_ENTRY_PATH, DEV_MANIFEST_PATH }\n\nconst NO_CACHE_HEADERS = {\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n 'Pragma': 'no-cache',\n 'Expires': '0',\n} as const\n\nconst CORS_HEADERS = { 'Access-Control-Allow-Origin': '*' } as const\n\nconst VUE_STYLE_QUERY = /(?:^|[?&])vue&type=style(?:&|$)/\nconst CSS_RUNTIME_BYPASS_QUERY = /(?:^|[?&])(?:direct|inline|raw|url)(?:&|$)/\n\nexport const createWireManifest = (meta: PluginManifest) => ({\n ...meta,\n entry: { jsPath: 'index.js', cssPath: 'index.css' },\n})\n\nexport const createDevEntryCode = (meta: PluginManifest, entryUrl: string) =>\n [\n `import '/@vite/client'`,\n `const __deltaComicCssPath = ${JSON.stringify(DEV_CSS_PATH)}`,\n `const __deltaComicUpdateStyle = async () => {`,\n ` const __deltaComicDocument = globalThis.document`,\n ` if (!__deltaComicDocument) return`,\n ` try {`,\n ` const __deltaComicResponse = await fetch(new URL(__deltaComicCssPath, import.meta.url), { cache: 'no-store' })`,\n ` if (!__deltaComicResponse.ok) return`,\n ` const __deltaComicCss = await __deltaComicResponse.text()`,\n ` for (const __deltaComicStyle of __deltaComicDocument.head.querySelectorAll('style')) {`,\n ` if (__deltaComicStyle.dataset.plugin === ${JSON.stringify(meta.name.id)}) __deltaComicStyle.textContent = __deltaComicCss`,\n ` }`,\n ` } catch {}`,\n `}`,\n `const __deltaComicHot = import.meta.hot`,\n `if (__deltaComicHot) {`,\n ` __deltaComicHot.accept(${JSON.stringify(entryUrl)}, () => {})`,\n ` const __deltaComicAfterUpdate = () => { void __deltaComicUpdateStyle() }`,\n ` __deltaComicHot.on('vite:afterUpdate', __deltaComicAfterUpdate)`,\n ` __deltaComicHot.dispose(() => __deltaComicHot.off('vite:afterUpdate', __deltaComicAfterUpdate))`,\n `}`,\n `export { default } from ${JSON.stringify(entryUrl)}`,\n ].join('\\n')\n\nconst isCssModuleRequest = (id: string) => isCSSRequest(id) || VUE_STYLE_QUERY.test(id)\n\nconst isDevCssRuntimeRequest = (id: string) =>\n !CSS_RUNTIME_BYPASS_QUERY.test(id) && isCssModuleRequest(id)\n\nconst stripViteCssRuntime = (code: string) => {\n let stripped = code\n const replacements: [RegExp, string][] = [\n [\n /import\\s*\\{\\s*updateStyle\\s+as\\s+__vite__updateStyle(?:\\s*,\\s*removeStyle\\s+as\\s+__vite__removeStyle)?\\s*\\}\\s*from\\s*['\"]\\/@vite\\/client['\"]\\s*;?/g,\n '',\n ],\n [\n /const\\s*\\{\\s*updateStyle\\s*:\\s*__vite__updateStyle\\s*,\\s*removeStyle\\s*:\\s*__vite__removeStyle\\s*\\}\\s*=\\s*import\\.meta\\.hot\\._internal\\s*;?/g,\n '',\n ],\n [/const\\s+__vite__id\\s*=\\s*(['\"])(?:\\\\.|(?!\\1)[^\\\\])*\\1\\s*;?/g, ''],\n [/const\\s+__vite__css\\s*=\\s*(['\"`])(?:\\\\.|(?!\\1)[^\\\\])*\\1\\s*;?/g, ''],\n [/__vite__updateStyle\\(\\s*__vite__id\\s*,\\s*__vite__css\\s*\\)\\s*;?/g, ''],\n [\n /import\\.meta\\.hot\\.prune\\(\\s*\\(\\)\\s*=>\\s*__vite__removeStyle\\(\\s*__vite__id\\s*\\)\\s*\\)\\s*;?/g,\n 'import.meta.hot.prune(() => {})',\n ],\n ]\n for (const [pattern, replacement] of replacements)\n stripped = stripped.replace(pattern, replacement)\n return stripped === code ? undefined : stripped\n}\n\nconst collectCssModules = (\n server: ViteDevServer,\n starts: readonly (ModuleNode | undefined)[],\n): ModuleNode[] => {\n const seen = new Set<ModuleNode>()\n const queue: ModuleNode[] = starts.filter((node): node is ModuleNode => node !== undefined)\n const cssModules: ModuleNode[] = []\n while (queue.length > 0) {\n const node = queue.shift()\n if (!node || seen.has(node)) continue\n seen.add(node)\n if (isCssModuleRequest(node.url)) cssModules.push(node)\n for (const imported of node.importedModules) queue.push(imported)\n // Vue SFC style modules share the component file but are not linked through\n // importedModules, so discover them through the file-to-modules map.\n const fileModules = node.file ? (server.moduleGraph.getModulesByFile?.(node.file) ?? []) : []\n for (const fileModule of fileModules) queue.push(fileModule)\n }\n return cssModules\n}\n\nconst toOriginAbsoluteUrls = (css: string, origin: string) =>\n css.replace(/(url\\(\\s*(?:\"|')?)\\/(?!\\/)/g, `$1${origin}/`)\n\nconst collectDevCss = async (\n server: ViteDevServer,\n origin: string,\n entryUrl: string,\n): Promise<string> => {\n const entryModule = await server.moduleGraph.getModuleByUrl?.(entryUrl)\n const modules = collectCssModules(server, [\n server.moduleGraph.getModuleById(DEV_ENTRY_ID),\n entryModule,\n ])\n const parts: string[] = []\n for (const module of modules) {\n const directUrl = `${module.url}${module.url.includes('?') ? '&' : '?'}direct`\n const result = await server.transformRequest(directUrl)\n if (result?.code) parts.push(toOriginAbsoluteUrls(result.code, origin))\n }\n return parts.join('\\n')\n}\n\nconst sendJson = (res: ServerResponse, body: unknown) => {\n res.writeHead(200, {\n 'Content-Type': 'application/json; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(JSON.stringify(body))\n}\n\nconst sendError = (res: ServerResponse, status: number, message: string) => {\n res.writeHead(status, {\n 'Content-Type': 'text/plain; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(message)\n}\n\nconst requestOrigin = (req: IncomingMessage) => {\n const secure = 'encrypted' in req.socket && req.socket.encrypted === true\n return `${secure ? 'https' : 'http'}://${req.headers.host}`\n}\n\nexport const createDevPlugin = (meta: PluginManifest): Plugin => {\n let server: ViteDevServer | undefined\n let entryUrl = '/src/main.ts'\n\n return {\n name: 'delta-comic:dev-server',\n enforce: 'post',\n config() {\n return { server: { cors: true } }\n },\n configureServer(devServer) {\n server = devServer\n const entrySource = meta.entry?.jsPath ?? 'src/main.ts'\n const entryFile = resolve(devServer.config.root, entrySource)\n entryUrl = `/${normalizePath(relative(devServer.config.root, entryFile))}`\n\n const handleManifest: Connect.NextHandleFunction = (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_MANIFEST_PATH) {\n return next()\n }\n sendJson(res, createWireManifest(meta))\n }\n const handleEntry: Connect.NextHandleFunction = async (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_ENTRY_PATH) {\n return next()\n }\n if (!server) return next()\n try {\n const result = await server.transformRequest(DEV_ENTRY_ID)\n if (!result?.code) {\n sendError(res, 500, `[delta-comic] failed to transform the plugin entry ${entryUrl}`)\n return\n }\n res.writeHead(200, {\n 'Content-Type': 'application/javascript; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(result.code)\n } catch (error) {\n sendError(res, 500, error instanceof Error ? error.message : String(error))\n }\n }\n const handleCss: Connect.NextHandleFunction = async (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_CSS_PATH) {\n return next()\n }\n if (!server) return next()\n try {\n const css = await collectDevCss(server, requestOrigin(req), entryUrl)\n res.writeHead(200, {\n 'Content-Type': 'text/css; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(css)\n } catch (error) {\n sendError(res, 500, error instanceof Error ? error.message : String(error))\n }\n }\n devServer.middlewares.use(handleManifest)\n devServer.middlewares.use(handleEntry)\n devServer.middlewares.use(handleCss)\n },\n resolveId(id) {\n if (id === DEV_ENTRY_ID) return DEV_ENTRY_ID\n },\n load(id) {\n if (id !== DEV_ENTRY_ID || !server) return\n return createDevEntryCode(meta, entryUrl)\n },\n transform(code, id) {\n if (!isDevCssRuntimeRequest(id)) return\n return stripViteCssRuntime(code)\n },\n }\n}","import type { PluginManifest } from '@delta-comic/model'\nimport { exposeHostLibraries, extendsDepends } from '@delta-comic/utils/vite'\nimport { merge } from 'es-toolkit'\nimport JSZip from 'jszip'\nimport type { Plugin, PluginOption } from 'vite'\n\nimport { createDevPlugin } from './dev'\n\nexport const deltaComic = (meta: PluginManifest, command: 'build' | 'serve'): PluginOption[] => {\n const externalGlobals = extendsDepends as Record<string, string>\n const isServer = command == 'serve'\n const sharedRuntimeGuard: Plugin = {\n name: 'delta-comic-shared-runtime-guard',\n enforce: 'pre',\n resolveId(source) {\n if (Object.hasOwn(externalGlobals, source)) return\n\n const externalRoot = Object.keys(externalGlobals).find(root => source.startsWith(`${root}/`))\n if (!externalRoot && !source.startsWith('@vue/')) return\n\n const publicEntry = externalRoot ?? 'vue'\n throw new Error(\n `[delta-comic] Shared runtime subpath \"${source}\" is not supported. Import \"${publicEntry}\" so the plugin reuses the host instance.`,\n )\n },\n }\n const plugin: Plugin = {\n name: 'delta-comic-helper',\n enforce: 'post',\n config(config) {\n return merge(config, {\n build: {\n assetsInlineLimit: Number.POSITIVE_INFINITY,\n cssCodeSplit: false,\n lib: {\n entry: meta.entry?.jsPath ?? './src/main.ts',\n fileName: 'index',\n cssFileName: 'index',\n name: `$$lib$$.__DcPlugin__${meta.name.id.replace('-', '_')}__`,\n formats: ['es'],\n },\n },\n })\n },\n async generateBundle(_options, bundle) {\n const archiveName = 'plugin.zip'\n const manifest = JSON.stringify(meta, null, 2)\n const zip = new JSZip()\n\n for (const item of Object.values(bundle)) {\n if (item.fileName == archiveName) continue\n if (item.type == 'chunk') {\n zip.file(item.fileName, item.code)\n continue\n }\n zip.file(item.fileName, item.source)\n }\n\n zip.file('manifest.json', manifest)\n const archive = await zip.generateAsync({ compression: 'DEFLATE', type: 'uint8array' })\n\n this.emitFile({ type: 'asset', fileName: archiveName, source: archive })\n this.emitFile({ type: 'asset', fileName: 'manifest.json', source: manifest })\n },\n }\n const externals = exposeHostLibraries({ libraries: externalGlobals })\n\n return [sharedRuntimeGuard, externals, ...(isServer ? [createDevPlugin(meta)] : [plugin])]\n}"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../vite/dev.ts","../../vite/index.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http'\nimport { relative, resolve } from 'node:path'\n\nimport type { PluginManifest } from '@delta-comic/model'\nimport type { Connect, ModuleNode, Plugin, ViteDevServer } from 'vite'\nimport { isCSSRequest, normalizePath } from 'vite'\n\nimport { DEV_CSS_PATH, DEV_ENTRY_PATH, DEV_MANIFEST_PATH } from '../lib/install/dev'\n\nexport const DEV_ENTRY_ID = '\\0delta-comic:dev-entry'\nexport { DEV_CSS_PATH, DEV_ENTRY_PATH, DEV_MANIFEST_PATH }\n\nconst NO_CACHE_HEADERS = {\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n 'Pragma': 'no-cache',\n 'Expires': '0',\n} as const\n\nconst CORS_HEADERS = { 'Access-Control-Allow-Origin': '*' } as const\n\nconst VUE_STYLE_QUERY = /(?:^|[?&])vue&type=style(?:&|$)/\nconst CSS_RUNTIME_BYPASS_QUERY = /(?:^|[?&])(?:direct|inline|raw|url)(?:&|$)/\n\nexport const createWireManifest = (meta: PluginManifest) => ({\n ...meta,\n entry: { jsPath: 'index.js', cssPath: 'index.css' },\n})\n\nexport const createDevEntryCode = (meta: PluginManifest, entryUrl: string) =>\n [\n `import '/@vite/client'`,\n `const __deltaComicCssPath = ${JSON.stringify(DEV_CSS_PATH)}`,\n `const __deltaComicUpdateStyle = async () => {`,\n ` const __deltaComicDocument = globalThis.document`,\n ` if (!__deltaComicDocument) return`,\n ` try {`,\n ` const __deltaComicResponse = await fetch(new URL(__deltaComicCssPath, import.meta.url), { cache: 'no-store' })`,\n ` if (!__deltaComicResponse.ok) return`,\n ` const __deltaComicCss = await __deltaComicResponse.text()`,\n ` for (const __deltaComicStyle of __deltaComicDocument.head.querySelectorAll('style')) {`,\n ` if (__deltaComicStyle.dataset.plugin === ${JSON.stringify(meta.name.id)}) __deltaComicStyle.textContent = __deltaComicCss`,\n ` }`,\n ` } catch {}`,\n `}`,\n `const __deltaComicHot = import.meta.hot`,\n `if (__deltaComicHot) {`,\n ` __deltaComicHot.accept(${JSON.stringify(entryUrl)}, () => {})`,\n ` const __deltaComicAfterUpdate = () => { void __deltaComicUpdateStyle() }`,\n ` __deltaComicHot.on('vite:afterUpdate', __deltaComicAfterUpdate)`,\n ` __deltaComicHot.dispose(() => __deltaComicHot.off('vite:afterUpdate', __deltaComicAfterUpdate))`,\n `}`,\n `export { default } from ${JSON.stringify(entryUrl)}`,\n ].join('\\n')\n\nconst isCssModuleRequest = (id: string) => isCSSRequest(id) || VUE_STYLE_QUERY.test(id)\n\nconst isDevCssRuntimeRequest = (id: string) =>\n !CSS_RUNTIME_BYPASS_QUERY.test(id) && isCssModuleRequest(id)\n\nconst stripViteCssRuntime = (code: string) => {\n let stripped = code\n const replacements: [RegExp, string][] = [\n [\n /import\\s*\\{\\s*updateStyle\\s+as\\s+__vite__updateStyle(?:\\s*,\\s*removeStyle\\s+as\\s+__vite__removeStyle)?\\s*\\}\\s*from\\s*['\"]\\/@vite\\/client['\"]\\s*;?/g,\n '',\n ],\n [\n /const\\s*\\{\\s*updateStyle\\s*:\\s*__vite__updateStyle\\s*,\\s*removeStyle\\s*:\\s*__vite__removeStyle\\s*\\}\\s*=\\s*import\\.meta\\.hot\\._internal\\s*;?/g,\n '',\n ],\n [/const\\s+__vite__id\\s*=\\s*(['\"])(?:\\\\.|(?!\\1)[^\\\\])*\\1\\s*;?/g, ''],\n [/const\\s+__vite__css\\s*=\\s*(['\"`])(?:\\\\.|(?!\\1)[^\\\\])*\\1\\s*;?/g, ''],\n [/__vite__updateStyle\\(\\s*__vite__id\\s*,\\s*__vite__css\\s*\\)\\s*;?/g, ''],\n [\n /import\\.meta\\.hot\\.prune\\(\\s*\\(\\)\\s*=>\\s*__vite__removeStyle\\(\\s*__vite__id\\s*\\)\\s*\\)\\s*;?/g,\n 'import.meta.hot.prune(() => {})',\n ],\n ]\n for (const [pattern, replacement] of replacements)\n stripped = stripped.replace(pattern, replacement)\n return stripped === code ? undefined : stripped\n}\n\nconst collectCssModules = (\n server: ViteDevServer,\n starts: readonly (ModuleNode | undefined)[],\n): ModuleNode[] => {\n const seen = new Set<ModuleNode>()\n const queue: ModuleNode[] = starts.filter((node): node is ModuleNode => node !== undefined)\n const cssModules: ModuleNode[] = []\n while (queue.length > 0) {\n const node = queue.shift()\n if (!node || seen.has(node)) continue\n seen.add(node)\n if (isCssModuleRequest(node.url)) cssModules.push(node)\n for (const imported of node.importedModules) queue.push(imported)\n // Vue SFC style modules share the component file but are not linked through\n // importedModules, so discover them through the file-to-modules map.\n const fileModules = node.file ? (server.moduleGraph.getModulesByFile?.(node.file) ?? []) : []\n for (const fileModule of fileModules) queue.push(fileModule)\n }\n return cssModules\n}\n\nconst toOriginAbsoluteUrls = (css: string, origin: string) =>\n css.replace(/(url\\(\\s*(?:\"|')?)\\/(?!\\/)/g, `$1${origin}/`)\n\nconst collectDevCss = async (\n server: ViteDevServer,\n origin: string,\n entryUrl: string,\n): Promise<string> => {\n const entryModule = await server.moduleGraph.getModuleByUrl?.(entryUrl)\n const modules = collectCssModules(server, [\n server.moduleGraph.getModuleById(DEV_ENTRY_ID),\n entryModule,\n ])\n const parts: string[] = []\n for (const module of modules) {\n const directUrl = `${module.url}${module.url.includes('?') ? '&' : '?'}direct`\n const result = await server.transformRequest(directUrl)\n if (result?.code) parts.push(toOriginAbsoluteUrls(result.code, origin))\n }\n return parts.join('\\n')\n}\n\nconst sendJson = (res: ServerResponse, body: unknown) => {\n res.writeHead(200, {\n 'Content-Type': 'application/json; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(JSON.stringify(body))\n}\n\nconst sendError = (res: ServerResponse, status: number, message: string) => {\n res.writeHead(status, {\n 'Content-Type': 'text/plain; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(message)\n}\n\nconst requestOrigin = (req: IncomingMessage) => {\n const secure = 'encrypted' in req.socket && req.socket.encrypted === true\n return `${secure ? 'https' : 'http'}://${req.headers.host}`\n}\n\nexport const createDevPlugin = (meta: PluginManifest): Plugin => {\n let server: ViteDevServer | undefined\n let entryUrl = '/src/main.ts'\n\n return {\n name: 'delta-comic:dev-server',\n enforce: 'post',\n config() {\n return { server: { cors: true } }\n },\n configureServer(devServer) {\n server = devServer\n const entrySource = meta.entry?.jsPath ?? 'src/main.ts'\n const entryFile = resolve(devServer.config.root, entrySource)\n entryUrl = `/${normalizePath(relative(devServer.config.root, entryFile))}`\n\n const handleManifest: Connect.NextHandleFunction = (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_MANIFEST_PATH) {\n return next()\n }\n sendJson(res, createWireManifest(meta))\n }\n const handleEntry: Connect.NextHandleFunction = async (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_ENTRY_PATH) {\n return next()\n }\n if (!server) return next()\n try {\n const result = await server.transformRequest(DEV_ENTRY_ID)\n if (!result?.code) {\n sendError(res, 500, `[delta-comic] failed to transform the plugin entry ${entryUrl}`)\n return\n }\n res.writeHead(200, {\n 'Content-Type': 'application/javascript; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(result.code)\n } catch (error) {\n sendError(res, 500, error instanceof Error ? error.message : String(error))\n }\n }\n const handleCss: Connect.NextHandleFunction = async (req, res, next) => {\n if (new URL(req.url ?? '/', 'http://localhost').pathname !== DEV_CSS_PATH) {\n return next()\n }\n if (!server) return next()\n try {\n const css = await collectDevCss(server, requestOrigin(req), entryUrl)\n res.writeHead(200, {\n 'Content-Type': 'text/css; charset=utf-8',\n ...NO_CACHE_HEADERS,\n ...CORS_HEADERS,\n })\n res.end(css)\n } catch (error) {\n sendError(res, 500, error instanceof Error ? error.message : String(error))\n }\n }\n devServer.middlewares.use(handleManifest)\n devServer.middlewares.use(handleEntry)\n devServer.middlewares.use(handleCss)\n },\n resolveId(id) {\n if (id === DEV_ENTRY_ID) return DEV_ENTRY_ID\n },\n load(id) {\n if (id !== DEV_ENTRY_ID || !server) return\n return createDevEntryCode(meta, entryUrl)\n },\n transform(code, id) {\n if (!isDevCssRuntimeRequest(id)) return\n return stripViteCssRuntime(code)\n },\n }\n}","import type { PluginManifest } from '@delta-comic/model'\nimport { exposeHostLibraries, extendsDepends } from '@delta-comic/utils/vite'\nimport { merge } from 'es-toolkit'\nimport JSZip from 'jszip'\nimport type { Plugin, PluginOption } from 'vite'\n\nimport { createDevPlugin } from './dev'\n\nexport const deltaComic = (meta: PluginManifest): PluginOption[] => {\n const externalGlobals = extendsDepends as Record<string, string>\n let mode: string | undefined\n const sharedRuntimeGuard: Plugin = {\n name: 'delta-comic-shared-runtime-guard',\n enforce: 'pre',\n configResolved(config) {\n mode = config.mode\n },\n resolveId(source) {\n if (mode == 'test') return\n\n if (Object.hasOwn(externalGlobals, source)) return\n\n const externalRoot = Object.keys(externalGlobals).find(root => source.startsWith(`${root}/`))\n if (!externalRoot && !source.startsWith('@vue/')) return\n\n const publicEntry = externalRoot ?? 'vue'\n throw new Error(\n `[delta-comic] Shared runtime subpath \"${source}\" is not supported. Import \"${publicEntry}\" so the plugin reuses the host instance.`,\n )\n },\n }\n const plugin: Plugin = {\n name: 'delta-comic-helper',\n enforce: 'post',\n apply: 'build',\n config(config) {\n return merge(config, {\n build: {\n assetsInlineLimit: Number.POSITIVE_INFINITY,\n cssCodeSplit: false,\n lib: {\n entry: meta.entry?.jsPath ?? './src/main.ts',\n fileName: 'index',\n cssFileName: 'index',\n name: `$$lib$$.__DcPlugin__${meta.name.id.replace('-', '_')}__`,\n formats: ['es'],\n },\n },\n })\n },\n async generateBundle(_options, bundle) {\n const archiveName = 'plugin.zip'\n const manifest = JSON.stringify(meta, null, 2)\n const zip = new JSZip()\n\n for (const item of Object.values(bundle)) {\n if (item.fileName == archiveName) continue\n if (item.type == 'chunk') {\n zip.file(item.fileName, item.code)\n continue\n }\n zip.file(item.fileName, item.source)\n }\n\n zip.file('manifest.json', manifest)\n const archive = await zip.generateAsync({ compression: 'DEFLATE', type: 'uint8array' })\n\n this.emitFile({ type: 'asset', fileName: archiveName, source: archive })\n this.emitFile({ type: 'asset', fileName: 'manifest.json', source: manifest })\n },\n }\n const externals = exposeHostLibraries({ libraries: externalGlobals })\n const devPlugin = createDevPlugin(meta)\n devPlugin.apply = 'serve'\n\n return [sharedRuntimeGuard, externals, plugin, devPlugin]\n}"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delta-comic/plugin",
3
- "version": "3.0.0-next.14",
3
+ "version": "3.0.0-next.16",
4
4
  "description": "空阙虱楼",
5
5
  "homepage": "https://github.com/delta-comic/delta-comic",
6
6
  "license": "AGPL-3.0-only",
@@ -33,8 +33,8 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@delta-comic/downloader": "3.0.0-next.14",
37
- "@delta-comic/logger": "3.0.0-next.14",
36
+ "@delta-comic/downloader": "3.0.0-next.16",
37
+ "@delta-comic/logger": "3.0.0-next.16",
38
38
  "@octokit/rest": "^22.0.1",
39
39
  "@tauri-apps/api": "^2.11.1",
40
40
  "@tauri-apps/plugin-fs": "^2.5.1",
@@ -54,10 +54,10 @@
54
54
  "vue-component-type-helpers": "^3.3.9"
55
55
  },
56
56
  "peerDependencies": {
57
- "@delta-comic/db": "3.0.0-next.14",
58
- "@delta-comic/model": "3.0.0-next.14",
59
- "@delta-comic/ui": "3.0.0-next.14",
60
- "@delta-comic/utils": "3.0.0-next.14",
57
+ "@delta-comic/db": "3.0.0-next.16",
58
+ "@delta-comic/model": "3.0.0-next.16",
59
+ "@delta-comic/ui": "3.0.0-next.16",
60
+ "@delta-comic/utils": "3.0.0-next.16",
61
61
  "naive-ui": "^2.44.1",
62
62
  "vue": "^3.6.0-rc.4"
63
63
  }