fuma-content 1.2.3 → 1.3.0
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.
- package/dist/async-cache-C47yxLCv.js +0 -2
- package/dist/bin.js +0 -2
- package/dist/{build-mdx-C8u32vDa.js → build-mdx-DjMJg3TP.js} +1 -3
- package/dist/bun/index.d.ts +2 -3
- package/dist/bun/index.js +0 -2
- package/dist/{bun-NahDFkhR.js → bun-qVjHRKNw.js} +0 -2
- package/dist/code-generator-DFGEY6P5.js +0 -2
- package/dist/collections/data/runtime.d.ts +3 -4
- package/dist/collections/data/runtime.js +0 -2
- package/dist/collections/data.d.ts +4 -5
- package/dist/collections/data.js +2 -4
- package/dist/collections/fs.d.ts +1 -1
- package/dist/collections/fs.js +0 -2
- package/dist/collections/index.d.ts +1 -1
- package/dist/collections/json/loader-webpack.d.ts +2 -3
- package/dist/collections/json/loader-webpack.js +1 -5
- package/dist/collections/mdx/loader-webpack.d.ts +2 -3
- package/dist/collections/mdx/loader-webpack.js +1 -5
- package/dist/collections/mdx/react.d.ts +3 -4
- package/dist/collections/mdx/react.js +0 -2
- package/dist/collections/mdx/runtime-browser.d.ts +2 -2
- package/dist/collections/mdx/runtime-browser.js +0 -2
- package/dist/collections/mdx/runtime-dynamic.d.ts +5 -6
- package/dist/collections/mdx/runtime-dynamic.js +3 -6
- package/dist/collections/mdx/runtime.d.ts +1 -1
- package/dist/collections/mdx/runtime.js +0 -2
- package/dist/collections/mdx/vue.d.ts +7 -8
- package/dist/collections/mdx/vue.js +0 -2
- package/dist/collections/mdx.d.ts +1 -1
- package/dist/collections/mdx.js +1 -3
- package/dist/collections/obsidian.d.ts +2 -3
- package/dist/collections/obsidian.js +3 -6
- package/dist/collections/runtime/file-store.d.ts +1 -1
- package/dist/collections/runtime/file-store.js +0 -2
- package/dist/collections/runtime/store.d.ts +1 -1
- package/dist/collections/runtime/store.js +0 -2
- package/dist/collections/yaml/loader-webpack.d.ts +2 -3
- package/dist/collections/yaml/loader-webpack.js +1 -5
- package/dist/collections-Bl9hpWMS.js +0 -2
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +0 -2
- package/dist/core-CrYszxmc.js +0 -2
- package/dist/{core-BbTeLenA.d.ts → core-Dmd3yqUH.d.ts} +1 -2
- package/dist/{dynamic-CNEaikCN.d.ts → dynamic-C15fv7uG.d.ts} +2 -3
- package/dist/dynamic.d.ts +1 -1
- package/dist/dynamic.js +1 -3
- package/dist/{file-store-DutRtol_.d.ts → file-store-Bs81Afz5.d.ts} +2 -3
- package/dist/{flatten-m0wfHxLH.js → flatten-Db7WzTB7.js} +0 -2
- package/dist/{fs-KJjb32Nq.d.ts → fs-DYfoYdl-.d.ts} +2 -3
- package/dist/{git-BxnPg5Ao.d.ts → git-C0-Uazuh.d.ts} +2 -3
- package/dist/{index-DVqrqxzl.d.ts → index-Dfg2QKTT.d.ts} +3 -4
- package/dist/index.d.ts +2 -3
- package/dist/is-promise-like-C04ERo2r.js +0 -2
- package/dist/{load-from-file-C3CnD8mJ.js → load-from-file-DpW8who8.js} +0 -2
- package/dist/{loader-ol04zeoP.js → loader-B19JQedw.js} +0 -2
- package/dist/{loader-CyhM9SLt.js → loader-BTPxE-0W.js} +3 -5
- package/dist/{loader-e2SkeDfY.js → loader-CORy1xd9.js} +1 -3
- package/dist/{loader-D_sKOzDc.js → loader-DJcLC5Gg.js} +1 -3
- package/dist/{mdx-L0I8mePE.d.ts → mdx-0plToRQa.d.ts} +3 -4
- package/dist/next/index.d.ts +2 -3
- package/dist/next/index.js +1 -3
- package/dist/node/index.d.ts +1 -2
- package/dist/node/index.js +0 -2
- package/dist/node/loader.d.ts +2 -3
- package/dist/node/loader.js +0 -2
- package/dist/{node-Du4i4XDg.js → node--IKK4_8Y.js} +0 -2
- package/dist/plugins/git.d.ts +1 -1
- package/dist/plugins/git.js +0 -2
- package/dist/plugins/json-schema.d.ts +2 -3
- package/dist/plugins/json-schema.js +0 -2
- package/dist/plugins/loader/index.d.ts +1 -1
- package/dist/plugins/loader/index.js +3 -5
- package/dist/plugins/loader/webpack.d.ts +1 -1
- package/dist/plugins/loader/webpack.js +0 -2
- package/dist/plugins/remark/include.d.ts +1 -2
- package/dist/plugins/remark/include.js +4 -5
- package/dist/{runtime-TETi5Giq.d.ts → runtime-4S3BDs-G.d.ts} +5 -6
- package/dist/{runtime-browser-M4sE6SmL.d.ts → runtime-browser-CXjm3FXK.d.ts} +4 -6
- package/dist/{store-BC3n1VPY.d.ts → store-j10gHjm1.d.ts} +2 -3
- package/dist/utils/frontmatter.d.ts +15 -0
- package/dist/{fuma-matter-E30PU53R.js → utils/frontmatter.js} +3 -5
- package/dist/validation-Bf_v2L3p.js +0 -2
- package/dist/vite/index.d.ts +2 -3
- package/dist/vite/index.js +1 -3
- package/dist/{vite-DVIOnBqW.js → vite-myuLielb.js} +0 -2
- package/package.json +24 -20
- package/dist/async-cache-C47yxLCv.js.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/build-mdx-C8u32vDa.js.map +0 -1
- package/dist/bun/index.d.ts.map +0 -1
- package/dist/bun/index.js.map +0 -1
- package/dist/bun-NahDFkhR.js.map +0 -1
- package/dist/code-generator-DFGEY6P5.js.map +0 -1
- package/dist/collections/data/runtime.d.ts.map +0 -1
- package/dist/collections/data/runtime.js.map +0 -1
- package/dist/collections/data.d.ts.map +0 -1
- package/dist/collections/data.js.map +0 -1
- package/dist/collections/fs.js.map +0 -1
- package/dist/collections/json/loader-webpack.d.ts.map +0 -1
- package/dist/collections/json/loader-webpack.js.map +0 -1
- package/dist/collections/mdx/loader-webpack.d.ts.map +0 -1
- package/dist/collections/mdx/loader-webpack.js.map +0 -1
- package/dist/collections/mdx/react.d.ts.map +0 -1
- package/dist/collections/mdx/react.js.map +0 -1
- package/dist/collections/mdx/runtime-browser.js.map +0 -1
- package/dist/collections/mdx/runtime-dynamic.d.ts.map +0 -1
- package/dist/collections/mdx/runtime-dynamic.js.map +0 -1
- package/dist/collections/mdx/runtime.js.map +0 -1
- package/dist/collections/mdx/vue.d.ts.map +0 -1
- package/dist/collections/mdx/vue.js.map +0 -1
- package/dist/collections/mdx.js.map +0 -1
- package/dist/collections/obsidian.d.ts.map +0 -1
- package/dist/collections/obsidian.js.map +0 -1
- package/dist/collections/runtime/file-store.js.map +0 -1
- package/dist/collections/runtime/store.js.map +0 -1
- package/dist/collections/yaml/loader-webpack.d.ts.map +0 -1
- package/dist/collections/yaml/loader-webpack.js.map +0 -1
- package/dist/collections-Bl9hpWMS.js.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/core-BbTeLenA.d.ts.map +0 -1
- package/dist/core-CrYszxmc.js.map +0 -1
- package/dist/dynamic-CNEaikCN.d.ts.map +0 -1
- package/dist/dynamic.js.map +0 -1
- package/dist/file-store-DutRtol_.d.ts.map +0 -1
- package/dist/flatten-m0wfHxLH.js.map +0 -1
- package/dist/fs-KJjb32Nq.d.ts.map +0 -1
- package/dist/fuma-matter-E30PU53R.js.map +0 -1
- package/dist/git-BxnPg5Ao.d.ts.map +0 -1
- package/dist/index-DVqrqxzl.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/is-promise-like-C04ERo2r.js.map +0 -1
- package/dist/load-from-file-C3CnD8mJ.js.map +0 -1
- package/dist/loader-CyhM9SLt.js.map +0 -1
- package/dist/loader-D_sKOzDc.js.map +0 -1
- package/dist/loader-e2SkeDfY.js.map +0 -1
- package/dist/loader-ol04zeoP.js.map +0 -1
- package/dist/mdx-L0I8mePE.d.ts.map +0 -1
- package/dist/next/index.d.ts.map +0 -1
- package/dist/next/index.js.map +0 -1
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/index.js.map +0 -1
- package/dist/node/loader.d.ts.map +0 -1
- package/dist/node/loader.js.map +0 -1
- package/dist/node-Du4i4XDg.js.map +0 -1
- package/dist/plugins/git.js.map +0 -1
- package/dist/plugins/json-schema.d.ts.map +0 -1
- package/dist/plugins/json-schema.js.map +0 -1
- package/dist/plugins/loader/index.js.map +0 -1
- package/dist/plugins/loader/webpack.js.map +0 -1
- package/dist/plugins/remark/include.d.ts.map +0 -1
- package/dist/plugins/remark/include.js.map +0 -1
- package/dist/runtime-TETi5Giq.d.ts.map +0 -1
- package/dist/runtime-browser-M4sE6SmL.d.ts.map +0 -1
- package/dist/store-BC3n1VPY.d.ts.map +0 -1
- package/dist/validation-Bf_v2L3p.js.map +0 -1
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.map +0 -1
- package/dist/vite-DVIOnBqW.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"include.js","names":["fs","path"],"sources":["../../../src/plugins/remark/include.ts"],"sourcesContent":["import type { Processor, Transformer } from \"unified\";\nimport { visit } from \"unist-util-visit\";\nimport type { Code, Node, Root, RootContent } from \"mdast\";\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { fumaMatter } from \"@/collections/mdx/fuma-matter\";\nimport type { MdxJsxFlowElement, MdxJsxTextElement } from \"mdast-util-mdx-jsx\";\nimport { VFile } from \"vfile\";\nimport type { Directives } from \"mdast-util-directive\";\nimport { flattenNode } from \"@/utils/mdast/flatten\";\n\nexport interface Params {\n lang?: string;\n meta?: string;\n}\n\nconst ElementLikeTypes: ElementLikeContent[\"type\"][] = [\n \"mdxJsxFlowElement\",\n \"mdxJsxTextElement\",\n \"containerDirective\",\n \"textDirective\",\n \"leafDirective\",\n];\ntype ElementLikeContent = MdxJsxFlowElement | MdxJsxTextElement | Directives;\n\nfunction isElementLike(node: Node): node is ElementLikeContent {\n return ElementLikeTypes.includes(node.type as ElementLikeContent[\"type\"]);\n}\n\nfunction parseElementAttributes(\n element: ElementLikeContent,\n): Record<string, string | null | undefined> {\n if (Array.isArray(element.attributes)) {\n const attributes: Record<string, string | null> = {};\n\n for (const attr of element.attributes) {\n if (\n attr.type === \"mdxJsxAttribute\" &&\n (typeof attr.value === \"string\" || attr.value === null)\n ) {\n attributes[attr.name] = attr.value;\n }\n }\n\n return attributes;\n }\n\n return element.attributes ?? {};\n}\n\nfunction parseSpecifier(specifier: string): {\n file: string;\n section?: string;\n} {\n const idx = specifier.lastIndexOf(\"#\");\n if (idx === -1) return { file: specifier };\n\n return {\n file: specifier.slice(0, idx),\n section: specifier.slice(idx + 1),\n };\n}\n\nfunction extractSection(root: Root, section: string): Root | undefined {\n let nodes: RootContent[] | undefined;\n let capturingHeadingContent = false;\n\n visit(root, (node) => {\n if (node.type === \"heading\") {\n if (capturingHeadingContent) {\n return false;\n }\n\n if (node.data?.hProperties?.id === section) {\n capturingHeadingContent = true;\n nodes = [node];\n return \"skip\";\n }\n\n return;\n }\n\n if (capturingHeadingContent) {\n nodes?.push(node as RootContent);\n return \"skip\";\n }\n\n if (isElementLike(node) && node.name === \"section\") {\n const attributes = parseElementAttributes(node);\n\n if (attributes.id === section) {\n nodes = node.children;\n return false;\n }\n }\n });\n\n if (nodes)\n return {\n type: \"root\",\n children: nodes,\n };\n}\n\n// region marker regexes\nconst REGION_MARKERS = [\n {\n start: /^\\s*\\/\\/\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*\\/\\/\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*<!--\\s*#?region\\b\\s*(.*?)\\s*-->/,\n end: /^\\s*<!--\\s*#?endregion\\b\\s*(.*?)\\s*-->/,\n },\n {\n start: /^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\//,\n end: /^\\s*\\/\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\//,\n },\n {\n start: /^\\s*#[rR]egion\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#[eE]nd ?[rR]egion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*(?:--|::|@?REM)\\s*#region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*(?:--|::|@?REM)\\s*#endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#pragma\\s+region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#pragma\\s+endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*\\(\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\)/,\n end: /^\\s*\\(\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\)/,\n },\n];\n\nfunction dedent(lines: string[]): string {\n const minIndent = lines.reduce((min, line) => {\n const match = line.match(/^(\\s*)\\S/);\n return match ? Math.min(min, match[1].length) : min;\n }, Infinity);\n\n return minIndent === Infinity\n ? lines.join(\"\\n\")\n : lines.map((l) => l.slice(minIndent)).join(\"\\n\");\n}\n\nfunction extractCodeRegion(content: string, regionName: string): string {\n const lines = content.split(\"\\n\");\n\n for (let i = 0; i < lines.length; i++) {\n for (const re of REGION_MARKERS) {\n let match = re.start.exec(lines[i]);\n if (match?.[1] !== regionName) continue;\n\n let depth = 1;\n const extractedLines: string[] = [];\n for (let j = i + 1; j < lines.length; j++) {\n match = re.start.exec(lines[j]);\n if (match) {\n depth++;\n continue;\n }\n\n match = re.end.exec(lines[j]);\n if (match) {\n if (match[1] === regionName) depth = 0;\n else if (match[1] === \"\") depth--;\n else continue;\n\n if (depth > 0) continue;\n return dedent(extractedLines);\n } else {\n extractedLines.push(lines[j]);\n }\n }\n }\n }\n throw new Error(`Region \"${regionName}\" not found`);\n}\n\nexport interface RemarkIncludeOptions {\n tagName?: string;\n}\n\ndeclare module \"vfile\" {\n interface DataMap {\n /** [Fuma Content: remark-include] whether the content is getting parsed from a `<include />` */\n _in_include?: boolean;\n }\n}\n\nexport function remarkInclude(\n this: Processor,\n { tagName = \"include\" }: RemarkIncludeOptions = {},\n): Transformer<Root, Root> {\n const embedContent = async (\n targetPath: string,\n heading: string | undefined,\n params: Params,\n parent: VFile,\n ) => {\n const { _getProcessor = () => this, _compiler } = parent.data;\n let content: string;\n try {\n content = (await fs.readFile(targetPath)).toString();\n } catch (e) {\n throw new Error(\n `failed to read file ${targetPath}\\n${e instanceof Error ? e.message : String(e)}`,\n { cause: e },\n );\n }\n\n const ext = path.extname(targetPath);\n _compiler?.addDependency(targetPath);\n if (params.lang || (ext !== \".md\" && ext !== \".mdx\")) {\n const lang = params.lang ?? ext.slice(1);\n\n return {\n type: \"code\",\n lang,\n meta: params.meta,\n value: heading ? extractCodeRegion(content, heading) : content,\n data: {},\n } satisfies Code;\n }\n\n const processor = (await _getProcessor(ext === \".mdx\" ? \"mdx\" : \"md\")) as unknown as Processor<\n Root,\n Root,\n Root\n >;\n const parsed = fumaMatter(content);\n const targetFile = new VFile({\n path: targetPath,\n value: parsed.content,\n data: {\n ...parent.data,\n frontmatter: parsed.data as Record<string, unknown>,\n _in_include: true,\n },\n });\n\n let mdast: Root;\n try {\n mdast = await processor.run(processor.parse(targetFile), targetFile);\n } catch (e) {\n if (e instanceof Terminated) mdast = e.value;\n else throw e;\n }\n\n if (heading) {\n const extracted = extractSection(mdast, heading);\n if (!extracted)\n throw new Error(\n `Cannot find section ${heading} in ${targetPath}, make sure you have encapsulated the section in a <section id=\"${heading}\"> tag, or a :::section directive with remark-directive configured.`,\n );\n\n mdast = extracted;\n }\n\n await update(mdast, targetFile);\n return mdast;\n };\n\n async function update(tree: Root, file: VFile) {\n const queue: Promise<void>[] = [];\n\n visit(tree, ElementLikeTypes, (_node, _, parent) => {\n const node = _node as ElementLikeContent;\n if (node.name !== tagName) return;\n\n const specifier = flattenNode(node);\n if (specifier.length === 0) return \"skip\";\n\n const attributes = parseElementAttributes(node);\n const { file: relativePath, section } = parseSpecifier(specifier);\n const targetPath = path.resolve(\n \"cwd\" in attributes ? file.cwd : (file.dirname ?? \"\"),\n relativePath,\n );\n\n queue.push(\n embedContent(targetPath, section, attributes, file).then((replace) => {\n Object.assign(parent && parent.type === \"paragraph\" ? parent : node, replace);\n }),\n );\n\n return \"skip\";\n });\n\n await Promise.all(queue);\n }\n return async (tree, file) => {\n if (file.data._in_include) throw new Terminated(tree);\n\n await update(tree, file);\n };\n}\n\nclass Terminated {\n constructor(readonly value: Root) {}\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-TETi5Giq.d.ts","names":[],"sources":["../src/collections/mdx/runtime.ts"],"mappings":";;;;;;UAKiB,YAAA;EACf,EAAA;EACA,QAAA,EAAU,WAAA,CAAY,WAAA,IAAe,QAAA;AAAA;AAAA,KAGlC,cAAA,gCACH,mBAAA,CAAoB,MAAA,EAAQ,IAAA;EAAgB,iBAAA;AAAA,IACxC,mBAAA,CAAoB,MAAA,EAAQ,IAAA;AAAA,iBAGlB,QAAA,uCAAA,CACd,KAAA,EAAO,IAAA,EACP,IAAA,UACA,MAAA,EAAQ,MAAA,oBACP,mBAAA,CAAoB,YAAA,CAAa,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA;AAAA,UAcjD,gBAAA;EACf,EAAA;EACA,WAAA,EAAa,WAAA;EACb,IAAA,QAAY,OAAA,CAAQ,WAAA,CAAY,WAAA,IAAe,QAAA;AAAA;AAAA,iBAGjC,YAAA,uCAAA,CACd,KAAA,EAAO,IAAA,EACP,IAAA,UACA,MAAA;EACE,IAAA,EAAM,MAAA;EACN,IAAA,EAAM,MAAA,eAAqB,OAAA;AAAA,IAE5B,mBAAA,CAAoB,gBAAA,CAAiB,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA;AAAA,KAkB1D,OAAA,GAAU,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-browser-M4sE6SmL.d.ts","names":[],"sources":["../src/utils/async-cache.ts","../src/collections/mdx/runtime-browser.ts"],"mappings":";;;;;UAGiB,UAAA;EACf,MAAA,GAAS,GAAA,UAAa,EAAA,QAAU,SAAA,CAAU,CAAA,MAAO,CAAA,GAAI,WAAA,CAAY,CAAA;EACjE,MAAA,WAAiB,UAAA,CAAW,CAAA;EAC5B,UAAA,GAAa,GAAA;AAAA;;;UCCE,mBAAA;EACf,EAAA;EACA,OAAA,QAAe,SAAA,CAAU,WAAA,CAAY,WAAA,IAAe,QAAA;EACpD,MAAA,EAAQ,YAAA;AAAA;AAAA,UAGA,YAAA;EACR,OAAA;AAAA;AAAA,UAGQ,SAAA;EACR,SAAA,EAAW,UAAA,CAAW,WAAA;AAAA;AAAA,KAGnB,cAAA,gCACH,mBAAA,CAAoB,MAAA,EAAQ,IAAA;EAAgB,iBAAA;AAAA,IACxC,mBAAA,CAAoB,MAAA,EAAQ,IAAA;AAAA,cAGrB,cAAA,EAAc,GAAA,SAAA,SAAA;AAAA,iBAEX,eAAA,uCAAA,CACd,IAAA,EAAM,IAAA,EACN,MAAA,EAAQ,MAAA,eAAqB,OAAA,aAC5B,kBAAA,SAA2B,mBAAA,CAAoB,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-BC3n1VPY.d.ts","names":[],"sources":["../src/collections/runtime/store.ts"],"mappings":";;;UAEiB,eAAA;;AAAjB;;EAIE,QAAA,MAAc,KAAA,GAAQ,KAAA,EAAO,IAAA,KAAS,CAAA,KAAM,eAAA,CAAgB,EAAA,EAAI,CAAA;EAEhE,GAAA,GAAM,EAAA,EAAI,EAAA,KAAO,SAAA,CAAU,IAAA;EAC3B,IAAA,QAAY,SAAA,CAAU,IAAA;EAHsC;;;EAQ5D,UAAA,EAAY,IAAA;AAAA;AAAA,cAGD,kBAAA,sBAAwC,eAAA,CAAgB,EAAA,EAAI,IAAA;EAAA;cAI3D,KAAA,EAAO,GAAA,CAAI,EAAA,EAAI,IAAA;EAK3B,GAAA,CAAI,EAAA,EAAI,EAAA,GAAK,IAAA;EAIb,IAAA,CAAA,GAAQ,IAAA;EAIR,QAAA,GAAA,CAAY,KAAA,GAAQ,KAAA,EAAO,IAAA,KAAS,CAAA,GAAI,kBAAA,CAAmB,EAAA,EAAI,CAAA;EAhChC;;;EAuC/B,SAAA,QAAA,CAAkB,EAAA,GAAK,EAAA,EAAI,EAAA,EAAI,IAAA,EAAM,IAAA,MAAU,GAAA,EAAK,CAAA,IAAK,kBAAA,CAAmB,GAAA,EAAK,CAAA;EAAA,IAW7E,UAAA,CAAA,GAAc,IAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation-Bf_v2L3p.js","names":[],"sources":["../src/utils/validation.ts"],"sourcesContent":["import type { StandardJSONSchemaV1, StandardSchemaV1 } from \"@standard-schema/spec\";\n\nexport class ValidationError extends Error {\n title: string;\n issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super(`${message}:\\n${issues.map((issue) => ` ${issue.path}: ${issue.message}`).join(\"\\n\")}`);\n\n this.title = message;\n this.issues = issues;\n }\n\n async toStringFormatted() {\n // Handle ESM/CJS interop: picocolors is a CJS module that exports via\n // module.exports = createColors(). When dynamically imported in ESM context\n // (e.g., Next.js 16 Turbopack), the exports are wrapped under .default\n const picocolorsModule = await import(\"picocolors\");\n const picocolors = picocolorsModule.default ?? picocolorsModule;\n\n return [\n picocolors.bold(`[Fuma Content] ${this.title}:`),\n ...this.issues.map((issue) =>\n picocolors.redBright(\n `- ${picocolors.bold(issue.path?.join(\".\") ?? \"*\")}: ${issue.message}`,\n ),\n ),\n ].join(\"\\n\");\n }\n}\n\nexport async function validate<Schema extends StandardSchemaV1, Context>(\n schema: StandardSchemaV1 | ((context: Context) => StandardSchemaV1),\n data: unknown,\n context: Context,\n errorMessage: string,\n): Promise<StandardSchemaV1.InferOutput<Schema>> {\n if (typeof schema === \"function\" && !(\"~standard\" in schema)) {\n schema = schema(context);\n }\n\n if (\"~standard\" in schema) {\n const result = await (schema as StandardSchemaV1)[\"~standard\"].validate(data);\n\n if (result.issues) {\n throw new ValidationError(errorMessage, result.issues);\n }\n\n return result.value;\n }\n\n return data;\n}\n\n/**\n * get JSON Schema from a Standard Schema\n */\nexport function getJSONSchema(schema: StandardSchemaV1) {\n return (schema as unknown as Partial<StandardJSONSchemaV1>)[\"~standard\"]?.jsonSchema.input({\n target: \"draft-2020-12\",\n libraryOptions: {\n // for Zod\n unrepresentable: \"any\",\n },\n });\n}\n"],"mappings":";AAEA,IAAa,kBAAb,cAAqC,MAAM;CACzC;CACA;CAEA,YAAY,SAAiB,QAA2C;AACtE,QAAM,GAAG,QAAQ,KAAK,OAAO,KAAK,UAAU,KAAK,MAAM,KAAK,IAAI,MAAM,UAAU,CAAC,KAAK,KAAK,GAAG;AAE9F,OAAK,QAAQ;AACb,OAAK,SAAS;;CAGhB,MAAM,oBAAoB;EAIxB,MAAM,mBAAmB,MAAM,OAAO;EACtC,MAAM,aAAa,iBAAiB,WAAW;AAE/C,SAAO,CACL,WAAW,KAAK,kBAAkB,KAAK,MAAM,GAAG,EAChD,GAAG,KAAK,OAAO,KAAK,UAClB,WAAW,UACT,KAAK,WAAW,KAAK,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,UAC9D,CACF,CACF,CAAC,KAAK,KAAK;;;AAIhB,eAAsB,SACpB,QACA,MACA,SACA,cAC+C;AAC/C,KAAI,OAAO,WAAW,cAAc,EAAE,eAAe,QACnD,UAAS,OAAO,QAAQ;AAG1B,KAAI,eAAe,QAAQ;EACzB,MAAM,SAAS,MAAO,OAA4B,aAAa,SAAS,KAAK;AAE7E,MAAI,OAAO,OACT,OAAM,IAAI,gBAAgB,cAAc,OAAO,OAAO;AAGxD,SAAO,OAAO;;AAGhB,QAAO;;;;;AAMT,SAAgB,cAAc,QAA0B;AACtD,QAAQ,OAAoD,cAAc,WAAW,MAAM;EACzF,QAAQ;EACR,gBAAgB,EAEd,iBAAiB,OAClB;EACF,CAAC"}
|
package/dist/vite/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/vite/index.ts"],"mappings":";;;;UAKiB,aAAA,SAAsB,IAAA,CAAK,WAAA;;AAA5C;;;;EAME,KAAA;AAAA;AAAA,iBAG4B,OAAA,CAC5B,MAAA,EAAQ,MAAA,mBACR,aAAA,GAAe,aAAA,GACd,OAAA,CAAQ,YAAA;AAAA,iBAkCW,oBAAA,CAAqB,aAAA,GAAe,aAAA,GAAkB,OAAA,CAAA,IAAA"}
|
package/dist/vite/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/vite/index.ts"],"sourcesContent":["import type { PluginOption } from \"vite\";\nimport type { FSWatcher } from \"chokidar\";\nimport { Core, CoreOptions, type Plugin } from \"@/core\";\nimport { loaderPlugin } from \"@/plugins/loader\";\n\nexport interface PluginOptions extends Pick<CoreOptions, \"configPath\" | \"cwd\" | \"outDir\"> {\n /**\n * clean output directory on start\n *\n * @defaultValue true\n */\n clean?: boolean;\n}\n\nexport default async function content(\n config: Record<string, unknown>,\n pluginOpitons: PluginOptions = {},\n): Promise<PluginOption[]> {\n const { clean = true } = pluginOpitons;\n const core = createViteCore(pluginOpitons);\n await core.init({\n config,\n });\n\n const ctx = core.getPluginContext();\n return [\n ...core.getPlugins(true).map((plugin) => plugin.vite?.createPlugin?.call(ctx)),\n {\n name: \"fuma-content\",\n async buildStart() {\n if (clean) await core.clearOutputDirectory();\n await core.emit({ write: true });\n },\n async configureServer(server) {\n await core.initServer({\n watcher: server.watcher as unknown as FSWatcher,\n });\n },\n },\n ];\n}\n\nfunction createViteCore({ configPath, outDir, cwd }: PluginOptions) {\n return new Core({\n cwd,\n configPath,\n outDir,\n plugins: [loaderPlugin()],\n });\n}\n\nexport async function createStandaloneCore(pluginOptions: PluginOptions = {}) {\n const { loadConfig } = await import(\"@/config/load-from-file\");\n const core = createViteCore(pluginOptions);\n await core.init({\n config: loadConfig(core, true),\n });\n return core;\n}\n"],"mappings":";;;AAcA,eAA8B,QAC5B,QACA,gBAA+B,EAAE,EACR;CACzB,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,OAAO,eAAe,cAAc;AAC1C,OAAM,KAAK,KAAK,EACd,QACD,CAAC;CAEF,MAAM,MAAM,KAAK,kBAAkB;AACnC,QAAO,CACL,GAAG,KAAK,WAAW,KAAK,CAAC,KAAK,WAAW,OAAO,MAAM,cAAc,KAAK,IAAI,CAAC,EAC9E;EACE,MAAM;EACN,MAAM,aAAa;AACjB,OAAI,MAAO,OAAM,KAAK,sBAAsB;AAC5C,SAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;;EAElC,MAAM,gBAAgB,QAAQ;AAC5B,SAAM,KAAK,WAAW,EACpB,SAAS,OAAO,SACjB,CAAC;;EAEL,CACF;;AAGH,SAAS,eAAe,EAAE,YAAY,QAAQ,OAAsB;AAClE,QAAO,IAAI,KAAK;EACd;EACA;EACA;EACA,SAAS,CAAC,cAAc,CAAC;EAC1B,CAAC;;AAGJ,eAAsB,qBAAqB,gBAA+B,EAAE,EAAE;CAC5E,MAAM,EAAE,eAAe,MAAM,OAAO,iCAAA,MAAA,MAAA,EAAA,EAAA;CACpC,MAAM,OAAO,eAAe,cAAc;AAC1C,OAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AACF,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-DVIOnBqW.js","names":[],"sources":["../src/plugins/loader/vite.ts"],"sourcesContent":["import type { SourceMap } from \"rollup\";\nimport type { PluginOption } from \"vite\";\nimport { parse } from \"node:querystring\";\nimport type { Loader } from \"@/plugins/loader\";\n\nexport function toVite(name: string, test: RegExp | undefined, loader: Loader): PluginOption {\n return {\n name: `fuma-content:${name}`,\n async transform(value, id) {\n if (test && !test.test(id)) return;\n\n const [file, query = \"\"] = id.split(\"?\", 2);\n const result = await loader.load({\n filePath: file,\n query: parse(query),\n getSource() {\n return value;\n },\n development: this.environment.mode === \"dev\",\n addDependency: (file) => {\n this.addWatchFile(file);\n },\n });\n\n if (result === null) return null;\n return {\n code: result.code,\n map: result.map as SourceMap,\n moduleType: result.moduleType,\n };\n },\n };\n}\n"],"mappings":";;AAKA,SAAgB,OAAO,MAAc,MAA0B,QAA8B;AAC3F,QAAO;EACL,MAAM,gBAAgB;EACtB,MAAM,UAAU,OAAO,IAAI;AACzB,OAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAE;GAE5B,MAAM,CAAC,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK,EAAE;GAC3C,MAAM,SAAS,MAAM,OAAO,KAAK;IAC/B,UAAU;IACV,OAAO,MAAM,MAAM;IACnB,YAAY;AACV,YAAO;;IAET,aAAa,KAAK,YAAY,SAAS;IACvC,gBAAgB,SAAS;AACvB,UAAK,aAAa,KAAK;;IAE1B,CAAC;AAEF,OAAI,WAAW,KAAM,QAAO;AAC5B,UAAO;IACL,MAAM,OAAO;IACb,KAAK,OAAO;IACZ,YAAY,OAAO;IACpB;;EAEJ"}
|