unplugin-docubook 1.0.1 → 1.0.2

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.
Files changed (49) hide show
  1. package/dist/astro.cjs +20 -20
  2. package/dist/astro.cjs.map +1 -1
  3. package/dist/astro.js +20 -20
  4. package/dist/astro.js.map +1 -1
  5. package/dist/bun.cjs +20 -20
  6. package/dist/bun.cjs.map +1 -1
  7. package/dist/bun.js +20 -20
  8. package/dist/bun.js.map +1 -1
  9. package/dist/esbuild.cjs +20 -20
  10. package/dist/esbuild.cjs.map +1 -1
  11. package/dist/esbuild.js +20 -20
  12. package/dist/esbuild.js.map +1 -1
  13. package/dist/farm.cjs +20 -20
  14. package/dist/farm.cjs.map +1 -1
  15. package/dist/farm.js +20 -20
  16. package/dist/farm.js.map +1 -1
  17. package/dist/index.cjs +20 -20
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.js +20 -20
  20. package/dist/index.js.map +1 -1
  21. package/dist/next.cjs +20 -20
  22. package/dist/next.cjs.map +1 -1
  23. package/dist/next.js +20 -20
  24. package/dist/next.js.map +1 -1
  25. package/dist/nuxt.cjs +20 -20
  26. package/dist/nuxt.cjs.map +1 -1
  27. package/dist/nuxt.js +20 -20
  28. package/dist/nuxt.js.map +1 -1
  29. package/dist/rolldown.cjs +20 -20
  30. package/dist/rolldown.cjs.map +1 -1
  31. package/dist/rolldown.js +20 -20
  32. package/dist/rolldown.js.map +1 -1
  33. package/dist/rollup.cjs +20 -20
  34. package/dist/rollup.cjs.map +1 -1
  35. package/dist/rollup.js +20 -20
  36. package/dist/rollup.js.map +1 -1
  37. package/dist/rspack.cjs +20 -20
  38. package/dist/rspack.cjs.map +1 -1
  39. package/dist/rspack.js +20 -20
  40. package/dist/rspack.js.map +1 -1
  41. package/dist/vite.cjs +20 -20
  42. package/dist/vite.cjs.map +1 -1
  43. package/dist/vite.js +20 -20
  44. package/dist/vite.js.map +1 -1
  45. package/dist/webpack.cjs +20 -20
  46. package/dist/webpack.cjs.map +1 -1
  47. package/dist/webpack.js +20 -20
  48. package/dist/webpack.js.map +1 -1
  49. package/package.json +1 -1
package/dist/astro.cjs CHANGED
@@ -36,26 +36,26 @@ var FRAMEWORK_PATHS = {
36
36
  function createRegistry(framework) {
37
37
  const basePath = FRAMEWORK_PATHS[framework];
38
38
  return {
39
- Note: { exports: ["Note"], path: `${basePath}/Note` },
40
- Card: { exports: ["Card"], path: `${basePath}/Card` },
41
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
42
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
43
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
44
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
45
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
46
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
47
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
48
- Button: { exports: ["Button"], path: `${basePath}/Button` },
49
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
50
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
51
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
52
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
53
- File: { exports: ["File"], path: `${basePath}/FileTree` },
54
- Release: { exports: ["Release"], path: `${basePath}/Release` },
55
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
56
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
57
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
58
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
39
+ Note: { exports: ["Note"], path: basePath },
40
+ Card: { exports: ["Card"], path: basePath },
41
+ CardGroup: { exports: ["CardGroup"], path: basePath },
42
+ Accordion: { exports: ["Accordion"], path: basePath },
43
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
44
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
45
+ Kbd: { exports: ["Kbd"], path: basePath },
46
+ Tooltip: { exports: ["Tooltip"], path: basePath },
47
+ Youtube: { exports: ["Youtube"], path: basePath },
48
+ Button: { exports: ["Button"], path: basePath },
49
+ DocuLink: { exports: ["DocuLink"], path: basePath },
50
+ DocuImage: { exports: ["DocuImage"], path: basePath },
51
+ Files: { exports: ["Files"], path: basePath },
52
+ Folder: { exports: ["Folder"], path: basePath },
53
+ File: { exports: ["File"], path: basePath },
54
+ Release: { exports: ["Release"], path: basePath },
55
+ Changes: { exports: ["Changes"], path: basePath },
56
+ Pre: { exports: ["Pre"], path: basePath },
57
+ Copy: { exports: ["Copy"], path: basePath },
58
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
59
59
  };
60
60
  }
61
61
  function getComponentRegistry(framework = "react") {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/astro.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import type { Options } from './types'\nimport unplugin from '.'\n\ninterface AstroConfig {\n config: {\n vite: {\n plugins: unknown[]\n }\n }\n}\n\nexport default function (options: Options) {\n return {\n name: 'unplugin-docubook',\n hooks: {\n 'astro:config:setup': async (astro: AstroConfig) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(unplugin.vite(options))\n },\n },\n }\n}\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":["exports"]}
1
+ {"version":3,"sources":["../src/astro.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import type { Options } from './types'\nimport unplugin from '.'\n\ninterface AstroConfig {\n config: {\n vite: {\n plugins: unknown[]\n }\n }\n}\n\nexport default function (options: Options) {\n return {\n name: 'unplugin-docubook',\n hooks: {\n 'astro:config:setup': async (astro: AstroConfig) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(unplugin.vite(options))\n },\n },\n }\n}\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":["exports"]}
package/dist/astro.js CHANGED
@@ -10,26 +10,26 @@ var FRAMEWORK_PATHS = {
10
10
  function createRegistry(framework) {
11
11
  const basePath = FRAMEWORK_PATHS[framework];
12
12
  return {
13
- Note: { exports: ["Note"], path: `${basePath}/Note` },
14
- Card: { exports: ["Card"], path: `${basePath}/Card` },
15
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
16
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
17
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
18
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
19
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
20
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
21
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
22
- Button: { exports: ["Button"], path: `${basePath}/Button` },
23
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
24
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
25
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
26
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
27
- File: { exports: ["File"], path: `${basePath}/FileTree` },
28
- Release: { exports: ["Release"], path: `${basePath}/Release` },
29
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
30
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
31
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
32
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
13
+ Note: { exports: ["Note"], path: basePath },
14
+ Card: { exports: ["Card"], path: basePath },
15
+ CardGroup: { exports: ["CardGroup"], path: basePath },
16
+ Accordion: { exports: ["Accordion"], path: basePath },
17
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
18
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
19
+ Kbd: { exports: ["Kbd"], path: basePath },
20
+ Tooltip: { exports: ["Tooltip"], path: basePath },
21
+ Youtube: { exports: ["Youtube"], path: basePath },
22
+ Button: { exports: ["Button"], path: basePath },
23
+ DocuLink: { exports: ["DocuLink"], path: basePath },
24
+ DocuImage: { exports: ["DocuImage"], path: basePath },
25
+ Files: { exports: ["Files"], path: basePath },
26
+ Folder: { exports: ["Folder"], path: basePath },
27
+ File: { exports: ["File"], path: basePath },
28
+ Release: { exports: ["Release"], path: basePath },
29
+ Changes: { exports: ["Changes"], path: basePath },
30
+ Pre: { exports: ["Pre"], path: basePath },
31
+ Copy: { exports: ["Copy"], path: basePath },
32
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
33
33
  };
34
34
  }
35
35
  function getComponentRegistry(framework = "react") {
package/dist/astro.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/core/registry.ts","../src/core/transform.ts","../src/astro.ts"],"sourcesContent":["import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n","import type { Options } from './types'\nimport unplugin from '.'\n\ninterface AstroConfig {\n config: {\n vite: {\n plugins: unknown[]\n }\n }\n}\n\nexport default function (options: Options) {\n return {\n name: 'unplugin-docubook',\n hooks: {\n 'astro:config:setup': async (astro: AstroConfig) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(unplugin.vite(options))\n },\n },\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/core/registry.ts","../src/core/transform.ts","../src/astro.ts"],"sourcesContent":["import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n","import type { Options } from './types'\nimport unplugin from '.'\n\ninterface AstroConfig {\n config: {\n vite: {\n plugins: unknown[]\n }\n }\n}\n\nexport default function (options: Options) {\n return {\n name: 'unplugin-docubook',\n hooks: {\n 'astro:config:setup': async (astro: AstroConfig) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(unplugin.vite(options))\n },\n },\n }\n}\n"],"mappings":";AAEA,SAAS,sBAAsB;;;ACK/B,IAAM,kBAA6C;AAAA,EAC/C,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACZ;AAEA,SAAS,eAAe,WAAqD;AACzE,QAAM,WAAW,gBAAgB,SAAS;AAE1C,SAAO;AAAA,IACH,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,GAAG,MAAM,SAAS;AAAA,IAC9D,SAAS,EAAE,SAAS,CAAC,WAAW,aAAa,GAAG,MAAM,SAAS;AAAA,IAC/D,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,SAAS;AAAA,IAC9C,UAAU,EAAE,SAAS,CAAC,UAAU,GAAG,MAAM,SAAS;AAAA,IAClD,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM,SAAS;AAAA,IAC5C,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,SAAS;AAAA,IAC9C,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,GAAG,MAAM,SAAS;AAAA,EACtE;AACJ;AAEO,SAAS,qBAAqB,YAAuB,SAAwC;AAChG,SAAO,eAAe,SAAS;AACnC;AAEO,SAAS,6BAA6B,YAAuB,SAAiB;AACjF,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,OAAO,KAAK,QAAQ;AAClC,SAAO,IAAI,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC,gBAAgB,GAAG;AAC7D;;;AC7CA,IAAM,wBAAwB;AAC9B,IAAM,oBAA+B;AAE9B,SAAS,iBAAiB,MAAc,YAAuB,mBAA6B;AAC/F,QAAM,QAAQ,6BAA6B,SAAS;AACpD,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,oBAAI,IAAY;AAC9B,MAAI;AAEJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AACxC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,QAAQ,SAAS,IAAI,GAAG;AACxB,YAAM,IAAI,IAAI;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO,MAAM,KAAK,KAAK;AAC3B;AAEO,SAAS,gBACZ,gBACA,cACA,YAAuB,mBACjB;AACN,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,gBAAgB,oBAAI,IAAyB;AAEnD,aAAW,QAAQ,gBAAgB;AAC/B,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,CAAC,KAAM;AAEX,UAAM,WAAW,GAAG,YAAY,GAAG,KAAK,IAAI;AAC5C,QAAI,CAAC,cAAc,IAAI,QAAQ,GAAG;AAC9B,oBAAc,IAAI,UAAU,oBAAI,IAAI,CAAC;AAAA,IACzC;AACA,eAAW,OAAO,KAAK,SAAS;AAC5B,oBAAc,IAAI,QAAQ,EAAG,IAAI,GAAG;AAAA,IACxC;AAAA,EACJ;AAEA,QAAM,QAAkB,CAAC;AACzB,aAAW,CAAC,MAAM,OAAO,KAAK,eAAe;AACzC,UAAM,QAAQ,MAAM,KAAK,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI;AAClD,UAAM,KAAK,YAAY,KAAK,YAAY,IAAI,GAAG;AAAA,EACnD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEO,SAAS,aACZ,MACA,UAAmB,CAAC,GACqB;AAvD7C;AAwDI,QAAM,aAAY,aAAQ,cAAR,YAAqB;AACvC,QAAM,iBAAiB,iBAAiB,MAAM,SAAS;AAEvD,MAAI,eAAe,WAAW,GAAG;AAC7B,WAAO,EAAE,MAAM,gBAAgB,MAAM;AAAA,EACzC;AAEA,QAAM,gBAAe,aAAQ,iBAAR,YAAwB;AAC7C,QAAM,mBAAmB,gBAAgB,gBAAgB,cAAc,SAAS;AAEhF,SAAO;AAAA,IACH,MAAM,GAAG,gBAAgB;AAAA;AAAA,EAAO,IAAI;AAAA,IACpC,gBAAgB;AAAA,EACpB;AACJ;;;AFjEO,IAAM,kBAAwD,CACjE,aACE;AAAA,EACF,MAAM;AAAA,EAEN,iBAAiB,IAAI;AAEjB,WAAO,UAAU,KAAK,EAAE;AAAA,EAC5B;AAAA,EAEA,UAAU,MAAM,KAAK;AACjB,UAAM,SAAS,aAAa,MAAM,OAAO;AACzC,QAAI,CAAC,OAAO,eAAgB;AAC5B,WAAO,OAAO;AAAA,EAClB;AACJ;AAEO,IAAM,WAA2B,+BAAe,eAAe;AAEtE,IAAO,gBAAQ;;;AGbA,SAAR,cAAkB,SAAkB;AACvC,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAO;AAAA,MACH,sBAAsB,OAAO,UAAuB;AAfhE;AAgBgB,oBAAM,OAAO,MAAK,YAAlB,GAAkB,UAAY,CAAC;AAC/B,cAAM,OAAO,KAAK,QAAQ,KAAK,cAAS,KAAK,OAAO,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
package/dist/bun.cjs CHANGED
@@ -37,26 +37,26 @@ var FRAMEWORK_PATHS = {
37
37
  function createRegistry(framework) {
38
38
  const basePath = FRAMEWORK_PATHS[framework];
39
39
  return {
40
- Note: { exports: ["Note"], path: `${basePath}/Note` },
41
- Card: { exports: ["Card"], path: `${basePath}/Card` },
42
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
43
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
44
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
45
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
46
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
47
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
48
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
49
- Button: { exports: ["Button"], path: `${basePath}/Button` },
50
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
51
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
52
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
53
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
54
- File: { exports: ["File"], path: `${basePath}/FileTree` },
55
- Release: { exports: ["Release"], path: `${basePath}/Release` },
56
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
57
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
58
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
59
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
40
+ Note: { exports: ["Note"], path: basePath },
41
+ Card: { exports: ["Card"], path: basePath },
42
+ CardGroup: { exports: ["CardGroup"], path: basePath },
43
+ Accordion: { exports: ["Accordion"], path: basePath },
44
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
45
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
46
+ Kbd: { exports: ["Kbd"], path: basePath },
47
+ Tooltip: { exports: ["Tooltip"], path: basePath },
48
+ Youtube: { exports: ["Youtube"], path: basePath },
49
+ Button: { exports: ["Button"], path: basePath },
50
+ DocuLink: { exports: ["DocuLink"], path: basePath },
51
+ DocuImage: { exports: ["DocuImage"], path: basePath },
52
+ Files: { exports: ["Files"], path: basePath },
53
+ Folder: { exports: ["Folder"], path: basePath },
54
+ File: { exports: ["File"], path: basePath },
55
+ Release: { exports: ["Release"], path: basePath },
56
+ Changes: { exports: ["Changes"], path: basePath },
57
+ Pre: { exports: ["Pre"], path: basePath },
58
+ Copy: { exports: ["Copy"], path: basePath },
59
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
60
60
  };
61
61
  }
62
62
  function getComponentRegistry(framework = "react") {
package/dist/bun.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bun.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createBunPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createBunPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":["import_unplugin","exports"]}
1
+ {"version":3,"sources":["../src/bun.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createBunPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createBunPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":["import_unplugin","exports"]}
package/dist/bun.js CHANGED
@@ -13,26 +13,26 @@ var FRAMEWORK_PATHS = {
13
13
  function createRegistry(framework) {
14
14
  const basePath = FRAMEWORK_PATHS[framework];
15
15
  return {
16
- Note: { exports: ["Note"], path: `${basePath}/Note` },
17
- Card: { exports: ["Card"], path: `${basePath}/Card` },
18
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
19
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
20
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
21
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
22
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
23
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
24
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
25
- Button: { exports: ["Button"], path: `${basePath}/Button` },
26
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
27
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
28
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
29
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
30
- File: { exports: ["File"], path: `${basePath}/FileTree` },
31
- Release: { exports: ["Release"], path: `${basePath}/Release` },
32
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
33
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
34
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
35
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
16
+ Note: { exports: ["Note"], path: basePath },
17
+ Card: { exports: ["Card"], path: basePath },
18
+ CardGroup: { exports: ["CardGroup"], path: basePath },
19
+ Accordion: { exports: ["Accordion"], path: basePath },
20
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
21
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
22
+ Kbd: { exports: ["Kbd"], path: basePath },
23
+ Tooltip: { exports: ["Tooltip"], path: basePath },
24
+ Youtube: { exports: ["Youtube"], path: basePath },
25
+ Button: { exports: ["Button"], path: basePath },
26
+ DocuLink: { exports: ["DocuLink"], path: basePath },
27
+ DocuImage: { exports: ["DocuImage"], path: basePath },
28
+ Files: { exports: ["Files"], path: basePath },
29
+ Folder: { exports: ["Folder"], path: basePath },
30
+ File: { exports: ["File"], path: basePath },
31
+ Release: { exports: ["Release"], path: basePath },
32
+ Changes: { exports: ["Changes"], path: basePath },
33
+ Pre: { exports: ["Pre"], path: basePath },
34
+ Copy: { exports: ["Copy"], path: basePath },
35
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
36
36
  };
37
37
  }
38
38
  function getComponentRegistry(framework = "react") {
package/dist/bun.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bun.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createBunPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createBunPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/bun.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createBunPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createBunPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":";AAAA,SAAS,uBAAuB;;;ACEhC,SAAS,sBAAsB;;;ACK/B,IAAM,kBAA6C;AAAA,EAC/C,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACZ;AAEA,SAAS,eAAe,WAAqD;AACzE,QAAM,WAAW,gBAAgB,SAAS;AAE1C,SAAO;AAAA,IACH,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,GAAG,MAAM,SAAS;AAAA,IAC9D,SAAS,EAAE,SAAS,CAAC,WAAW,aAAa,GAAG,MAAM,SAAS;AAAA,IAC/D,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,SAAS;AAAA,IAC9C,UAAU,EAAE,SAAS,CAAC,UAAU,GAAG,MAAM,SAAS;AAAA,IAClD,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,SAAS;AAAA,IACpD,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM,SAAS;AAAA,IAC5C,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,SAAS;AAAA,IAC9C,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,SAAS;AAAA,IAChD,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,SAAS;AAAA,IAC1C,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,GAAG,MAAM,SAAS;AAAA,EACtE;AACJ;AAEO,SAAS,qBAAqB,YAAuB,SAAwC;AAChG,SAAO,eAAe,SAAS;AACnC;AAEO,SAAS,6BAA6B,YAAuB,SAAiB;AACjF,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,OAAO,KAAK,QAAQ;AAClC,SAAO,IAAI,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC,gBAAgB,GAAG;AAC7D;;;AC7CA,IAAM,wBAAwB;AAC9B,IAAM,oBAA+B;AAE9B,SAAS,iBAAiB,MAAc,YAAuB,mBAA6B;AAC/F,QAAM,QAAQ,6BAA6B,SAAS;AACpD,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,oBAAI,IAAY;AAC9B,MAAI;AAEJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AACxC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,QAAQ,SAAS,IAAI,GAAG;AACxB,YAAM,IAAI,IAAI;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO,MAAM,KAAK,KAAK;AAC3B;AAEO,SAAS,gBACZ,gBACA,cACA,YAAuB,mBACjB;AACN,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,gBAAgB,oBAAI,IAAyB;AAEnD,aAAW,QAAQ,gBAAgB;AAC/B,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,CAAC,KAAM;AAEX,UAAM,WAAW,GAAG,YAAY,GAAG,KAAK,IAAI;AAC5C,QAAI,CAAC,cAAc,IAAI,QAAQ,GAAG;AAC9B,oBAAc,IAAI,UAAU,oBAAI,IAAI,CAAC;AAAA,IACzC;AACA,eAAW,OAAO,KAAK,SAAS;AAC5B,oBAAc,IAAI,QAAQ,EAAG,IAAI,GAAG;AAAA,IACxC;AAAA,EACJ;AAEA,QAAM,QAAkB,CAAC;AACzB,aAAW,CAAC,MAAM,OAAO,KAAK,eAAe;AACzC,UAAM,QAAQ,MAAM,KAAK,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI;AAClD,UAAM,KAAK,YAAY,KAAK,YAAY,IAAI,GAAG;AAAA,EACnD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEO,SAAS,aACZ,MACA,UAAmB,CAAC,GACqB;AAvD7C;AAwDI,QAAM,aAAY,aAAQ,cAAR,YAAqB;AACvC,QAAM,iBAAiB,iBAAiB,MAAM,SAAS;AAEvD,MAAI,eAAe,WAAW,GAAG;AAC7B,WAAO,EAAE,MAAM,gBAAgB,MAAM;AAAA,EACzC;AAEA,QAAM,gBAAe,aAAQ,iBAAR,YAAwB;AAC7C,QAAM,mBAAmB,gBAAgB,gBAAgB,cAAc,SAAS;AAEhF,SAAO;AAAA,IACH,MAAM,GAAG,gBAAgB;AAAA;AAAA,EAAO,IAAI;AAAA,IACpC,gBAAgB;AAAA,EACpB;AACJ;;;AFjEO,IAAM,kBAAwD,CACjE,aACE;AAAA,EACF,MAAM;AAAA,EAEN,iBAAiB,IAAI;AAEjB,WAAO,UAAU,KAAK,EAAE;AAAA,EAC5B;AAAA,EAEA,UAAU,MAAM,KAAK;AACjB,UAAM,SAAS,aAAa,MAAM,OAAO;AACzC,QAAI,CAAC,OAAO,eAAgB;AAC5B,WAAO,OAAO;AAAA,EAClB;AACJ;;;ADjBA,IAAO,cAAQ,gBAAgB,eAAe;","names":[]}
package/dist/esbuild.cjs CHANGED
@@ -37,26 +37,26 @@ var FRAMEWORK_PATHS = {
37
37
  function createRegistry(framework) {
38
38
  const basePath = FRAMEWORK_PATHS[framework];
39
39
  return {
40
- Note: { exports: ["Note"], path: `${basePath}/Note` },
41
- Card: { exports: ["Card"], path: `${basePath}/Card` },
42
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
43
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
44
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
45
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
46
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
47
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
48
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
49
- Button: { exports: ["Button"], path: `${basePath}/Button` },
50
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
51
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
52
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
53
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
54
- File: { exports: ["File"], path: `${basePath}/FileTree` },
55
- Release: { exports: ["Release"], path: `${basePath}/Release` },
56
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
57
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
58
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
59
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
40
+ Note: { exports: ["Note"], path: basePath },
41
+ Card: { exports: ["Card"], path: basePath },
42
+ CardGroup: { exports: ["CardGroup"], path: basePath },
43
+ Accordion: { exports: ["Accordion"], path: basePath },
44
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
45
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
46
+ Kbd: { exports: ["Kbd"], path: basePath },
47
+ Tooltip: { exports: ["Tooltip"], path: basePath },
48
+ Youtube: { exports: ["Youtube"], path: basePath },
49
+ Button: { exports: ["Button"], path: basePath },
50
+ DocuLink: { exports: ["DocuLink"], path: basePath },
51
+ DocuImage: { exports: ["DocuImage"], path: basePath },
52
+ Files: { exports: ["Files"], path: basePath },
53
+ Folder: { exports: ["Folder"], path: basePath },
54
+ File: { exports: ["File"], path: basePath },
55
+ Release: { exports: ["Release"], path: basePath },
56
+ Changes: { exports: ["Changes"], path: basePath },
57
+ Pre: { exports: ["Pre"], path: basePath },
58
+ Copy: { exports: ["Copy"], path: basePath },
59
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
60
60
  };
61
61
  }
62
62
  function getComponentRegistry(framework = "react") {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/esbuild.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createEsbuildPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,mBAAoC;;;ACEpC,sBAA+B;;;ACK/B,IAAM,kBAA6C;AAAA,EAC/C,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACZ;AAEA,SAAS,eAAe,WAAqD;AACzE,QAAM,WAAW,gBAAgB,SAAS;AAE1C,SAAO;AAAA,IACH,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ;AAAA,IACpD,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ;AAAA,IACpD,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,QAAQ,aAAa;AAAA,IACnE,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,QAAQ,aAAa;AAAA,IACnE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,GAAG,MAAM,GAAG,QAAQ,kBAAkB;AAAA,IAClF,SAAS,EAAE,SAAS,CAAC,WAAW,aAAa,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC5E,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,OAAO;AAAA,IACjD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC7D,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC7D,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ,UAAU;AAAA,IAC1D,UAAU,EAAE,SAAS,CAAC,UAAU,GAAG,MAAM,GAAG,QAAQ,QAAQ;AAAA,IAC5D,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,QAAQ,SAAS;AAAA,IAC/D,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM,GAAG,QAAQ,YAAY;AAAA,IAC1D,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ,YAAY;AAAA,IAC5D,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,YAAY;AAAA,IACxD,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC7D,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,IAC7D,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,OAAO;AAAA,IACjD,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ;AAAA,IACpD,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,GAAG,MAAM,GAAG,QAAQ,WAAW;AAAA,EACnF;AACJ;AAEO,SAAS,qBAAqB,YAAuB,SAAwC;AAChG,SAAO,eAAe,SAAS;AACnC;AAEO,SAAS,6BAA6B,YAAuB,SAAiB;AACjF,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,OAAO,KAAK,QAAQ;AAClC,SAAO,IAAI,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC,gBAAgB,GAAG;AAC7D;;;AC7CA,IAAM,wBAAwB;AAC9B,IAAM,oBAA+B;AAE9B,SAAS,iBAAiB,MAAc,YAAuB,mBAA6B;AAC/F,QAAM,QAAQ,6BAA6B,SAAS;AACpD,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,QAAQ,oBAAI,IAAY;AAC9B,MAAI;AAEJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AACxC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,QAAQ,SAAS,IAAI,GAAG;AACxB,YAAM,IAAI,IAAI;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO,MAAM,KAAK,KAAK;AAC3B;AAEO,SAAS,gBACZ,gBACA,cACA,YAAuB,mBACjB;AACN,QAAM,WAAW,qBAAqB,SAAS;AAC/C,QAAM,gBAAgB,oBAAI,IAAyB;AAEnD,aAAW,QAAQ,gBAAgB;AAC/B,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,CAAC,KAAM;AAEX,UAAM,WAAW,GAAG,YAAY,GAAG,KAAK,IAAI;AAC5C,QAAI,CAAC,cAAc,IAAI,QAAQ,GAAG;AAC9B,oBAAc,IAAI,UAAU,oBAAI,IAAI,CAAC;AAAA,IACzC;AACA,eAAW,OAAO,KAAK,SAAS;AAC5B,oBAAc,IAAI,QAAQ,EAAG,IAAI,GAAG;AAAA,IACxC;AAAA,EACJ;AAEA,QAAM,QAAkB,CAAC;AACzB,aAAW,CAAC,MAAMC,QAAO,KAAK,eAAe;AACzC,UAAM,QAAQ,MAAM,KAAKA,QAAO,EAAE,KAAK,EAAE,KAAK,IAAI;AAClD,UAAM,KAAK,YAAY,KAAK,YAAY,IAAI,GAAG;AAAA,EACnD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEO,SAAS,aACZ,MACA,UAAmB,CAAC,GACqB;AAvD7C;AAwDI,QAAM,aAAY,aAAQ,cAAR,YAAqB;AACvC,QAAM,iBAAiB,iBAAiB,MAAM,SAAS;AAEvD,MAAI,eAAe,WAAW,GAAG;AAC7B,WAAO,EAAE,MAAM,gBAAgB,MAAM;AAAA,EACzC;AAEA,QAAM,gBAAe,aAAQ,iBAAR,YAAwB;AAC7C,QAAM,mBAAmB,gBAAgB,gBAAgB,cAAc,SAAS;AAEhF,SAAO;AAAA,IACH,MAAM,GAAG,gBAAgB;AAAA;AAAA,EAAO,IAAI;AAAA,IACpC,gBAAgB;AAAA,EACpB;AACJ;;;AFjEO,IAAM,kBAAwD,CACjE,aACE;AAAA,EACF,MAAM;AAAA,EAEN,iBAAiB,IAAI;AAEjB,WAAO,UAAU,KAAK,EAAE;AAAA,EAC5B;AAAA,EAEA,UAAU,MAAM,KAAK;AACjB,UAAM,SAAS,aAAa,MAAM,OAAO;AACzC,QAAI,CAAC,OAAO,eAAgB;AAC5B,WAAO,OAAO;AAAA,EAClB;AACJ;;;ADjBA,IAAO,sBAAQ,sCAAoB,eAAe;","names":["import_unplugin","exports"]}
1
+ {"version":3,"sources":["../src/esbuild.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createEsbuildPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":["import_unplugin","exports"]}
package/dist/esbuild.js CHANGED
@@ -13,26 +13,26 @@ var FRAMEWORK_PATHS = {
13
13
  function createRegistry(framework) {
14
14
  const basePath = FRAMEWORK_PATHS[framework];
15
15
  return {
16
- Note: { exports: ["Note"], path: `${basePath}/Note` },
17
- Card: { exports: ["Card"], path: `${basePath}/Card` },
18
- CardGroup: { exports: ["CardGroup"], path: `${basePath}/CardGroup` },
19
- Accordion: { exports: ["Accordion"], path: `${basePath}/Accordion` },
20
- AccordionGroup: { exports: ["AccordionGroup"], path: `${basePath}/AccordionGroup` },
21
- Stepper: { exports: ["Stepper", "StepperItem"], path: `${basePath}/Stepper` },
22
- Kbd: { exports: ["Kbd"], path: `${basePath}/Kbd` },
23
- Tooltip: { exports: ["Tooltip"], path: `${basePath}/Tooltip` },
24
- Youtube: { exports: ["Youtube"], path: `${basePath}/Youtube` },
25
- Button: { exports: ["Button"], path: `${basePath}/Button` },
26
- DocuLink: { exports: ["DocuLink"], path: `${basePath}/Link` },
27
- DocuImage: { exports: ["DocuImage"], path: `${basePath}/Image` },
28
- Files: { exports: ["Files"], path: `${basePath}/FileTree` },
29
- Folder: { exports: ["Folder"], path: `${basePath}/FileTree` },
30
- File: { exports: ["File"], path: `${basePath}/FileTree` },
31
- Release: { exports: ["Release"], path: `${basePath}/Release` },
32
- Changes: { exports: ["Changes"], path: `${basePath}/Release` },
33
- Pre: { exports: ["Pre"], path: `${basePath}/Pre` },
34
- Copy: { exports: ["Copy"], path: `${basePath}/Copy` },
35
- DocuBookProvider: { exports: ["DocuBookProvider"], path: `${basePath}/context` }
16
+ Note: { exports: ["Note"], path: basePath },
17
+ Card: { exports: ["Card"], path: basePath },
18
+ CardGroup: { exports: ["CardGroup"], path: basePath },
19
+ Accordion: { exports: ["Accordion"], path: basePath },
20
+ AccordionGroup: { exports: ["AccordionGroup"], path: basePath },
21
+ Stepper: { exports: ["Stepper", "StepperItem"], path: basePath },
22
+ Kbd: { exports: ["Kbd"], path: basePath },
23
+ Tooltip: { exports: ["Tooltip"], path: basePath },
24
+ Youtube: { exports: ["Youtube"], path: basePath },
25
+ Button: { exports: ["Button"], path: basePath },
26
+ DocuLink: { exports: ["DocuLink"], path: basePath },
27
+ DocuImage: { exports: ["DocuImage"], path: basePath },
28
+ Files: { exports: ["Files"], path: basePath },
29
+ Folder: { exports: ["Folder"], path: basePath },
30
+ File: { exports: ["File"], path: basePath },
31
+ Release: { exports: ["Release"], path: basePath },
32
+ Changes: { exports: ["Changes"], path: basePath },
33
+ Pre: { exports: ["Pre"], path: basePath },
34
+ Copy: { exports: ["Copy"], path: basePath },
35
+ DocuBookProvider: { exports: ["DocuBookProvider"], path: basePath }
36
36
  };
37
37
  }
38
38
  function getComponentRegistry(framework = "react") {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/esbuild.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createEsbuildPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: `${basePath}/Note` },\n Card: { exports: ['Card'], path: `${basePath}/Card` },\n CardGroup: { exports: ['CardGroup'], path: `${basePath}/CardGroup` },\n Accordion: { exports: ['Accordion'], path: `${basePath}/Accordion` },\n AccordionGroup: { exports: ['AccordionGroup'], path: `${basePath}/AccordionGroup` },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: `${basePath}/Stepper` },\n Kbd: { exports: ['Kbd'], path: `${basePath}/Kbd` },\n Tooltip: { exports: ['Tooltip'], path: `${basePath}/Tooltip` },\n Youtube: { exports: ['Youtube'], path: `${basePath}/Youtube` },\n Button: { exports: ['Button'], path: `${basePath}/Button` },\n DocuLink: { exports: ['DocuLink'], path: `${basePath}/Link` },\n DocuImage: { exports: ['DocuImage'], path: `${basePath}/Image` },\n Files: { exports: ['Files'], path: `${basePath}/FileTree` },\n Folder: { exports: ['Folder'], path: `${basePath}/FileTree` },\n File: { exports: ['File'], path: `${basePath}/FileTree` },\n Release: { exports: ['Release'], path: `${basePath}/Release` },\n Changes: { exports: ['Changes'], path: `${basePath}/Release` },\n Pre: { exports: ['Pre'], path: `${basePath}/Pre` },\n Copy: { exports: ['Copy'], path: `${basePath}/Copy` },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: `${basePath}/context` },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/esbuild.ts","../src/index.ts","../src/core/registry.ts","../src/core/transform.ts"],"sourcesContent":["import { createEsbuildPlugin } from 'unplugin'\nimport { unpluginFactory } from '.'\n\nexport default createEsbuildPlugin(unpluginFactory)\n","import type { UnpluginFactory } from 'unplugin'\nimport type { Options } from './types'\nimport { createUnplugin } from 'unplugin'\nimport { transformMdx } from './core/transform'\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (\n options,\n) => ({\n name: 'unplugin-docubook',\n\n transformInclude(id) {\n // Only process .mdx and .md files\n return /\\.mdx?$/.test(id)\n },\n\n transform(code, _id) {\n const result = transformMdx(code, options)\n if (!result.hasTransformed) return\n return result.code\n },\n})\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory)\n\nexport default unplugin\n","import type { Framework } from '../types'\n\nexport interface ComponentMeta {\n exports: string[]\n path: string\n}\n\nconst FRAMEWORK_PATHS: Record<Framework, string> = {\n react: '/react',\n vue: '/vue',\n svelte: '/svelte',\n}\n\nfunction createRegistry(framework: Framework): Record<string, ComponentMeta> {\n const basePath = FRAMEWORK_PATHS[framework]\n\n return {\n Note: { exports: ['Note'], path: basePath },\n Card: { exports: ['Card'], path: basePath },\n CardGroup: { exports: ['CardGroup'], path: basePath },\n Accordion: { exports: ['Accordion'], path: basePath },\n AccordionGroup: { exports: ['AccordionGroup'], path: basePath },\n Stepper: { exports: ['Stepper', 'StepperItem'], path: basePath },\n Kbd: { exports: ['Kbd'], path: basePath },\n Tooltip: { exports: ['Tooltip'], path: basePath },\n Youtube: { exports: ['Youtube'], path: basePath },\n Button: { exports: ['Button'], path: basePath },\n DocuLink: { exports: ['DocuLink'], path: basePath },\n DocuImage: { exports: ['DocuImage'], path: basePath },\n Files: { exports: ['Files'], path: basePath },\n Folder: { exports: ['Folder'], path: basePath },\n File: { exports: ['File'], path: basePath },\n Release: { exports: ['Release'], path: basePath },\n Changes: { exports: ['Changes'], path: basePath },\n Pre: { exports: ['Pre'], path: basePath },\n Copy: { exports: ['Copy'], path: basePath },\n DocuBookProvider: { exports: ['DocuBookProvider'], path: basePath },\n }\n}\n\nexport function getComponentRegistry(framework: Framework = 'react'): Record<string, ComponentMeta> {\n return createRegistry(framework)\n}\n\nexport function buildComponentDetectionRegex(framework: Framework = 'react'): RegExp {\n const registry = getComponentRegistry(framework)\n const names = Object.keys(registry)\n return new RegExp(`<(${names.join('|')})(?=[\\\\s/>])`, 'g')\n}\n","import type { Options, Framework } from '../types'\nimport { getComponentRegistry, buildComponentDetectionRegex } from './registry'\n\nconst DEFAULT_IMPORT_SOURCE = 'unplugin-docubook/components'\nconst DEFAULT_FRAMEWORK: Framework = 'react'\n\nexport function detectComponents(code: string, framework: Framework = DEFAULT_FRAMEWORK): string[] {\n const regex = buildComponentDetectionRegex(framework)\n const registry = getComponentRegistry(framework)\n const found = new Set<string>()\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(code)) !== null) {\n const name = match[1]\n if (name && registry[name]) {\n found.add(name)\n }\n }\n\n return Array.from(found)\n}\n\nexport function generateImports(\n componentNames: string[],\n importSource: string,\n framework: Framework = DEFAULT_FRAMEWORK,\n): string {\n const registry = getComponentRegistry(framework)\n const pathToExports = new Map<string, Set<string>>()\n\n for (const name of componentNames) {\n const meta = registry[name]\n if (!meta) continue\n\n const fullPath = `${importSource}${meta.path}`\n if (!pathToExports.has(fullPath)) {\n pathToExports.set(fullPath, new Set())\n }\n for (const exp of meta.exports) {\n pathToExports.get(fullPath)!.add(exp)\n }\n }\n\n const lines: string[] = []\n for (const [path, exports] of pathToExports) {\n const names = Array.from(exports).sort().join(', ')\n lines.push(`import { ${names} } from '${path}'`)\n }\n\n return lines.join('\\n')\n}\n\nexport function transformMdx(\n code: string,\n options: Options = {},\n): { code: string; hasTransformed: boolean } {\n const framework = options.framework ?? DEFAULT_FRAMEWORK\n const usedComponents = detectComponents(code, framework)\n\n if (usedComponents.length === 0) {\n return { code, hasTransformed: false }\n }\n\n const importSource = options.importSource ?? DEFAULT_IMPORT_SOURCE\n const importStatements = generateImports(usedComponents, importSource, framework)\n\n return {\n code: `${importStatements}\\n\\n${code}`,\n hasTransformed: true,\n }\n}\n"],"mappings":"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","names":[]}