@fluenti/vite-plugin 0.3.3 → 0.4.0-rc.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.
@@ -1 +1 @@
1
- {"version":3,"file":"sfc-transform.js","names":[],"sources":["../src/sfc-transform.ts"],"sourcesContent":["// ─── SFC pre-transform fallback for v-t ──────────────────────────────────────\n// Used when the nodeTransform can't be injected into @vitejs/plugin-vue\n// Uses @vue/compiler-sfc AST instead of regex for robust template parsing.\n\nimport { hashMessage } from '@fluenti/core/internal'\nimport { parse as parseSFC } from '@vue/compiler-sfc'\n\n// Vue compiler AST node types\nconst NT_ELEMENT = 1\nconst NT_TEXT = 2\nconst NT_INTERPOLATION = 5\nconst NT_ATTRIBUTE = 6\nconst NT_DIRECTIVE = 7\n\ninterface ASTNode {\n type: number\n tag?: string\n props?: ASTNode[]\n children?: ASTNode[]\n content?: string | ASTNode\n name?: string\n arg?: ASTNode\n exp?: ASTNode\n modifiers?: Array<string | ASTNode>\n value?: ASTNode\n isSelfClosing?: boolean\n loc: {\n source: string\n start: { offset: number; line: number; column: number }\n end: { offset: number; line: number; column: number }\n }\n}\n\n// ─── Preserved utility functions ──────────────────────────────────────────────\n\nfunction escapeSingleQuotedString(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\")\n}\n\nexport function escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ninterface RichChild {\n tag: string\n rawAttrs: string\n selfClosing: boolean\n innerContent: string\n}\n\ninterface ExtractedRich {\n message: string\n elements: RichChild[]\n hasElements: boolean\n}\n\ninterface StaticSfcAttrValue {\n kind: 'missing' | 'static' | 'dynamic'\n value?: string\n}\n\ninterface ReplaceOp {\n start: number\n end: number\n replacement: string\n}\n\n// ─── Output helpers (no parsing, kept as-is) ──────────────────────────────────\n\nfunction serializeElements(elements: readonly RichChild[]): string {\n const entries = elements.map(el => {\n // Escape for JS string + HTML attribute context (v-html=\"...\"):\n // &quot; is decoded by HTML parser before JS evaluates the expression\n const rawAttrsStr = escapeSingleQuotedString(el.rawAttrs).replace(/\"/g, '&quot;')\n return `{ tag: '${escapeSingleQuotedString(el.tag)}', rawAttrs: '${rawAttrsStr}' }`\n })\n return `[${entries.join(', ')}]`\n}\n\nfunction buildDescriptorExpression(\n message: string,\n options?: {\n id?: string | undefined\n context?: string | undefined\n },\n): string {\n const id = options?.id ?? hashMessage(message, options?.context)\n return `{ id: '${escapeSingleQuotedString(id)}', message: '${escapeSingleQuotedString(message)}' }`\n}\n\n// ─── AST helper functions ─────────────────────────────────────────────────────\n\nfunction getModifierContent(mod: string | ASTNode): string {\n return typeof mod === 'string' ? mod : (mod.content as string) ?? ''\n}\n\nfunction readAttr(props: ASTNode[], name: string): StaticSfcAttrValue {\n for (const prop of props) {\n if (prop.type === NT_DIRECTIVE && prop.name === 'bind') {\n const argContent = typeof prop.arg?.content === 'string' ? prop.arg.content : undefined\n if (argContent === name) {\n return { kind: 'dynamic' }\n }\n }\n if (prop.type === NT_ATTRIBUTE && prop.name === name) {\n const value = typeof prop.value?.content === 'string' ? prop.value.content : ''\n return { kind: 'static', value }\n }\n }\n return { kind: 'missing' }\n}\n\nfunction getBindingExpr(props: ASTNode[], name: string): string | undefined {\n for (const prop of props) {\n if (prop.type === NT_DIRECTIVE && prop.name === 'bind') {\n const argContent = typeof prop.arg?.content === 'string' ? prop.arg.content : undefined\n if (argContent === name) {\n return typeof prop.exp?.content === 'string' ? prop.exp.content : undefined\n }\n }\n }\n return undefined\n}\n\n/**\n * Extract rich children from AST child nodes.\n * Converts ElementNodes to indexed placeholders, TextNodes to literal text,\n * and InterpolationNodes to their raw source ({{ expr }}).\n */\nfunction extractRichFromAST(children: ASTNode[]): ExtractedRich {\n const elements: RichChild[] = []\n let message = ''\n\n for (const child of children) {\n if (child.type === NT_TEXT) {\n message += typeof child.content === 'string' ? child.content : ''\n } else if (child.type === NT_INTERPOLATION) {\n message += child.loc.source\n } else if (child.type === NT_ELEMENT && child.tag) {\n const idx = elements.length\n const rawAttrs = (child.props ?? [])\n .map(p => p.loc.source)\n .join(' ')\n const isSelfClosing = child.isSelfClosing ?? false\n\n if (isSelfClosing || !child.children?.length) {\n elements.push({ tag: child.tag, rawAttrs, selfClosing: true, innerContent: '' })\n message += `<${idx}/>`\n } else {\n // Collect inner content from the original source between children range\n const firstChild = child.children[0]!\n const lastChild = child.children[child.children.length - 1]!\n const innerContent = child.loc.source.slice(\n firstChild.loc.start.offset - child.loc.start.offset,\n lastChild.loc.end.offset - child.loc.start.offset,\n )\n elements.push({ tag: child.tag, rawAttrs, selfClosing: false, innerContent })\n message += `<${idx}>${innerContent}</${idx}>`\n }\n }\n }\n\n return { message, elements, hasElements: elements.length > 0 }\n}\n\n/**\n * Extract {{ expr }} interpolations from AST children for v-t content.\n * Returns message with ICU {var} placeholders and variable entries.\n */\nfunction extractVarsFromAST(children: ASTNode[]): { message: string; vars: string[] } {\n const vars: string[] = []\n let message = ''\n\n for (const child of children) {\n if (child.type === NT_TEXT) {\n message += typeof child.content === 'string' ? child.content : ''\n } else if (child.type === NT_INTERPOLATION) {\n const expr = typeof child.content === 'object' && child.content\n ? typeof child.content.content === 'string' ? child.content.content : ''\n : ''\n const trimmed = expr.trim()\n\n let varName: string\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(trimmed)) {\n varName = trimmed\n } else if (/^[a-zA-Z_$][a-zA-Z0-9_$.]*$/.test(trimmed) && !trimmed.endsWith('.')) {\n const parts = trimmed.split('.')\n varName = parts[parts.length - 1]!\n } else {\n varName = String(vars.length)\n }\n vars.push(`${varName}: ${trimmed}`)\n message += `{${varName}}`\n }\n }\n\n return { message, vars }\n}\n\n/**\n * Build the list of remaining props for an element, excluding specific prop nodes.\n * Returns their raw source strings joined with spaces.\n */\nfunction buildCleanAttrs(props: ASTNode[], exclude: Set<ASTNode>): string {\n return props\n .filter(p => !exclude.has(p))\n .map(p => p.loc.source)\n .join(' ')\n}\n\n// ─── Transform collectors ─────────────────────────────────────────────────────\n\nconst TRANS_ONLY_PROPS = new Set(['tag', 'id', 'context', 'comment'])\n\nfunction collectVtAttrOps(node: ASTNode, ops: ReplaceOp[]): void {\n const props = node.props ?? []\n const vtDir = props.find(\n p => p.type === NT_DIRECTIVE && p.name === 't' && (p.modifiers ?? []).length > 0,\n )\n if (!vtDir) return\n\n const modifiers = (vtDir.modifiers ?? []).map(getModifierContent)\n // Skip v-t.plural — handled by collectVtContentOps\n if (modifiers.length === 1 && modifiers[0] === 'plural') return\n\n const attrName = modifiers.find(m => m !== 'plural')\n if (!attrName) return\n\n // Find the corresponding static attribute\n const staticAttr = props.find(\n p => p.type === NT_ATTRIBUTE && p.name === attrName,\n )\n if (!staticAttr) return\n const attrValue = typeof staticAttr.value?.content === 'string' ? staticAttr.value.content : ''\n\n const descriptor = buildDescriptorExpression(attrValue)\n\n // Build new opening tag: keep all props except v-t.X and the static attr, add :attrName=\"$t(...)\"\n const exclude = new Set([vtDir, staticAttr])\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const newAttrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n // Replace the opening tag portion of the element\n const tag = node.tag!\n if (node.isSelfClosing) {\n const replacement = `<${tag}${newAttrsPart} :${attrName}=\"$t(${descriptor})\" />`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n } else {\n // Find the end of the opening tag: start of first child or the inner content\n const children = node.children ?? []\n const openTagEnd = children.length > 0\n ? children[0]!.loc.start.offset\n : node.loc.source.indexOf('>') + node.loc.start.offset + 1\n const newOpenTag = `<${tag}${newAttrsPart} :${attrName}=\"$t(${descriptor})\">`\n ops.push({ start: node.loc.start.offset, end: openTagEnd, replacement: newOpenTag })\n }\n}\n\nfunction collectVtContentOps(node: ASTNode, ops: ReplaceOp[]): void {\n const props = node.props ?? []\n const vtDir = props.find(p => p.type === NT_DIRECTIVE && p.name === 't')\n if (!vtDir) return\n\n // Skip if this is a pure attribute binding (handled by collectVtAttrOps)\n const modifiers = (vtDir.modifiers ?? []).map(getModifierContent)\n const nonPluralMods = modifiers.filter(m => m !== 'plural')\n // If there's a non-plural modifier that corresponds to an attribute name, skip (attribute binding)\n if (nonPluralMods.length > 0) {\n const attrName = nonPluralMods[0]!\n const hasStaticAttr = props.some(p => p.type === NT_ATTRIBUTE && p.name === attrName)\n if (hasStaticAttr) return\n }\n\n const isPlural = modifiers.includes('plural')\n const bindExpr = typeof vtDir.exp?.content === 'string' ? vtDir.exp.content : undefined\n\n // Build explicit ID from arg + non-reserved modifiers\n const RESERVED_MODIFIERS = new Set(['plural'])\n const idSegments = modifiers.filter(m => !RESERVED_MODIFIERS.has(m))\n const argContent = typeof vtDir.arg?.content === 'string' ? vtDir.arg.content : undefined\n const explicitId = argContent ? [argContent, ...idSegments].join('.') : undefined\n\n const tag = node.tag!\n const children = node.children ?? []\n\n // Build clean attrs: remove v-t directive\n const exclude = new Set([vtDir])\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n if (isPlural && bindExpr) {\n // Collect text content from children\n const textContent = children\n .filter(c => c.type === NT_TEXT)\n .map(c => (typeof c.content === 'string' ? c.content : '').trim())\n .join('')\n const forms = textContent.split('|').map(s => s.trim())\n const categories = forms.length === 2\n ? ['one', 'other']\n : ['one', 'other', 'zero', 'few', 'many'].slice(0, forms.length)\n const icuParts = categories.map((cat, i) => `${cat} {${forms[i] ?? ''}}`)\n const icuMessage = `{${bindExpr}, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, { id: explicitId })\n const replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}, { ${bindExpr} }) }}</${tag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Check for rich text (child elements)\n const extracted = extractRichFromAST(children)\n if (extracted.hasElements) {\n const message = extracted.message.trim()\n const descriptor = buildDescriptorExpression(message, { id: explicitId })\n const elementsLiteral = serializeElements(extracted.elements)\n const replacement = `<${tag}${attrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral})\"></${tag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Plain text, possibly with interpolation\n const { message, vars } = extractVarsFromAST(children)\n const trimmedMessage = message.trim()\n const descriptor = buildDescriptorExpression(trimmedMessage, { id: explicitId })\n\n let replacement: string\n if (vars.length > 0) {\n replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}, { ${vars.join(', ')} }) }}</${tag}>`\n } else {\n replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}) }}</${tag}>`\n }\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\nfunction collectTransOps(node: ASTNode, ops: ReplaceOp[]): void {\n if (node.tag !== 'Trans') return\n const props = node.props ?? []\n const children = node.children ?? []\n\n // Skip if empty content\n if (children.length === 0) return\n // Skip all-whitespace content\n const hasContent = children.some(c => {\n if (c.type === NT_TEXT) return (typeof c.content === 'string' ? c.content : '').trim().length > 0\n return true\n })\n if (!hasContent) return\n\n // Skip old API: <Trans message=\"...\">\n if (props.some(p => p.type === NT_ATTRIBUTE && p.name === 'message')) return\n\n const explicitId = readAttr(props, 'id')\n if (explicitId.kind === 'dynamic') return\n\n const context = readAttr(props, 'context')\n if (!explicitId.value && context.kind === 'dynamic') return\n\n // Extract tag prop (default: 'span')\n const tagAttr = readAttr(props, 'tag')\n const wrapperTag = tagAttr.value ?? 'span'\n\n // Build clean attrs: remove Trans-specific props\n const exclude = new Set<ASTNode>()\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && TRANS_ONLY_PROPS.has(p.name as string)) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName && TRANS_ONLY_PROPS.has(argName)) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const cleanAttrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n // Check for rich text\n const extracted = extractRichFromAST(children)\n if (extracted.hasElements) {\n const message = extracted.message.trim()\n const descriptor = buildDescriptorExpression(message, {\n id: explicitId.value,\n context: context.value,\n })\n const elementsLiteral = serializeElements(extracted.elements)\n const replacement = `<${wrapperTag}${cleanAttrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral})\"></${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Plain text\n const rawContent = children\n .map(c => (c.type === NT_TEXT && typeof c.content === 'string') ? c.content : '')\n .join('')\n .trim()\n const descriptor = buildDescriptorExpression(rawContent, {\n id: explicitId.value,\n context: context.value,\n })\n const replacement = `<${wrapperTag}${cleanAttrsPart}>{{ $t(${descriptor}) }}</${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\nconst PLURAL_CATS = ['zero', 'one', 'two', 'few', 'many', 'other'] as const\n\nfunction collectPluralOps(node: ASTNode, ops: ReplaceOp[]): void {\n if (node.tag !== 'Plural') return\n const props = node.props ?? []\n\n const explicitId = readAttr(props, 'id')\n const context = readAttr(props, 'context')\n if (explicitId.kind === 'dynamic') return\n if (!explicitId.value && context.kind === 'dynamic') return\n\n const valueExpr = getBindingExpr(props, 'value')\n if (!valueExpr) return\n\n const tagAttr = readAttr(props, 'tag')\n const wrapperTag = tagAttr.value ?? 'span'\n\n // Check for template slot children\n const children = node.children ?? []\n const slots: Array<{ cat: string; children: ASTNode[] }> = []\n for (const child of children) {\n if (child.type === NT_ELEMENT && child.tag === 'template') {\n const slotDir = (child.props ?? []).find(\n p => p.type === NT_DIRECTIVE && p.name === 'slot',\n )\n if (slotDir) {\n const slotName = typeof slotDir.arg?.content === 'string' ? slotDir.arg.content : undefined\n if (slotName) {\n slots.push({ cat: slotName, children: child.children ?? [] })\n }\n }\n }\n }\n\n if (slots.length > 0) {\n // Slot mode\n const allElements: RichChild[] = []\n const icuParts: string[] = []\n\n for (const cat of PLURAL_CATS) {\n const slot = slots.find(s => s.cat === cat)\n if (!slot) continue\n\n const extracted = extractRichFromAST(slot.children)\n let branchMessage: string\n\n if (extracted.hasElements) {\n const baseIndex = allElements.length\n branchMessage = extracted.message.replace(/<(\\d+)(\\/?)>/g, (_m, idxStr: string, slash: string) => {\n return `<${baseIndex + Number(idxStr)}${slash}>`\n }).replace(/<\\/(\\d+)>/g, (_m, idxStr: string) => {\n return `</${baseIndex + Number(idxStr)}>`\n })\n allElements.push(...extracted.elements)\n } else {\n // Plain text from slot children\n branchMessage = slot.children\n .map(c => (c.type === NT_TEXT && typeof c.content === 'string') ? c.content : '')\n .join('')\n .trim()\n }\n\n const icuKey = cat === 'zero' ? '=0' : cat\n icuParts.push(`${icuKey} {${branchMessage}}`)\n }\n\n if (icuParts.length === 0) return\n\n const icuMessage = `{count, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, {\n id: explicitId.value,\n context: context.value,\n })\n\n // Build clean attrs\n const pluralOnlyProps = new Set([...TRANS_ONLY_PROPS, 'tag'])\n const exclude = new Set<ASTNode>()\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && pluralOnlyProps.has(p.name as string)) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName === 'value' || (argName && pluralOnlyProps.has(argName))) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n let replacement: string\n if (allElements.length > 0) {\n const elementsLiteral = serializeElements(allElements)\n replacement = `<${wrapperTag}${attrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral}, { count: ${valueExpr} })\"></${wrapperTag}>`\n } else {\n replacement = `<${wrapperTag}${attrsPart} v-text=\"$t(${descriptor}, { count: ${valueExpr} })\"></${wrapperTag}>`\n }\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Prop mode: read zero/one/two/few/many/other static props\n const icuParts: string[] = []\n const catPropsToExclude = new Set<ASTNode>()\n\n for (const cat of PLURAL_CATS) {\n const catProp = props.find(p => p.type === NT_ATTRIBUTE && p.name === cat)\n if (catProp) {\n const value = typeof catProp.value?.content === 'string' ? catProp.value.content : ''\n const icuKey = cat === 'zero' ? '=0' : cat\n icuParts.push(`${icuKey} {${value}}`)\n catPropsToExclude.add(catProp)\n }\n }\n\n if (icuParts.length === 0) return\n\n const icuMessage = `{count, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, {\n id: explicitId.value,\n context: context.value,\n })\n\n // Build clean attrs: remove :value, tag, id, context, comment, category props\n const exclude = new Set<ASTNode>(catPropsToExclude)\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && (p.name === 'tag' || TRANS_ONLY_PROPS.has(p.name as string))) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName === 'value' || (argName && TRANS_ONLY_PROPS.has(argName))) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n const replacement = `<${wrapperTag}${attrsPart} v-text=\"$t(${descriptor}, { count: ${valueExpr} })\"></${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\n// ─── AST traversal ────────────────────────────────────────────────────────────\n\nfunction collectOps(root: ASTNode): ReplaceOp[] {\n const ops: ReplaceOp[] = []\n\n function walk(node: ASTNode): void {\n if (node.type === NT_ELEMENT) {\n if (node.tag === 'Trans') {\n collectTransOps(node, ops)\n return // Don't recurse into transformed nodes\n }\n if (node.tag === 'Plural') {\n collectPluralOps(node, ops)\n return\n }\n\n // v-t directive handling\n const hasVt = (node.props ?? []).some(p => p.type === NT_DIRECTIVE && p.name === 't')\n if (hasVt) {\n collectVtAttrOps(node, ops)\n collectVtContentOps(node, ops)\n return\n }\n }\n\n // Recurse into children\n for (const child of node.children ?? []) {\n walk(child)\n }\n }\n\n walk(root)\n return ops\n}\n\n// ─── Entry point ──────────────────────────────────────────────────────────────\n\nexport function transformVtDirectives(sfc: string): string {\n // Quick bail: check if there's anything to transform\n if (!/<template[\\s>]/.test(sfc)) return sfc\n if (sfc.lastIndexOf('</template>') < 0) return sfc\n\n const hasVt = /\\bv-t\\b/.test(sfc)\n const hasTrans = /<Trans[\\s>]/.test(sfc)\n const hasPlural = /<Plural[\\s/>]/.test(sfc)\n if (!hasVt && !hasTrans && !hasPlural) return sfc\n\n const { descriptor } = parseSFC(sfc, { pad: false })\n if (!descriptor.template?.ast) return sfc\n\n const ops = collectOps(descriptor.template.ast as unknown as ASTNode)\n if (ops.length === 0) return sfc\n\n // Apply replacements from end to start to avoid offset drift\n ops.sort((a, b) => b.start - a.start)\n let result = sfc\n for (const op of ops) {\n result = result.slice(0, op.start) + op.replacement + result.slice(op.end)\n }\n return result\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sfc-transform.js","names":[],"sources":["../src/sfc-transform.ts"],"sourcesContent":["// ─── SFC pre-transform fallback for v-t ──────────────────────────────────────\n// Used when the nodeTransform can't be injected into @vitejs/plugin-vue\n// Uses @vue/compiler-sfc AST instead of regex for robust template parsing.\n\nimport { hashMessage } from '@fluenti/core/internal'\nimport { parse as parseSFC } from '@vue/compiler-sfc'\n\n// Vue compiler AST node types\nconst NT_ELEMENT = 1\nconst NT_TEXT = 2\nconst NT_INTERPOLATION = 5\nconst NT_ATTRIBUTE = 6\nconst NT_DIRECTIVE = 7\n\ninterface ASTNode {\n type: number\n tag?: string\n props?: ASTNode[]\n children?: ASTNode[]\n content?: string | ASTNode\n name?: string\n arg?: ASTNode\n exp?: ASTNode\n modifiers?: Array<string | ASTNode>\n value?: ASTNode\n isSelfClosing?: boolean\n loc: {\n source: string\n start: { offset: number; line: number; column: number }\n end: { offset: number; line: number; column: number }\n }\n}\n\n// ─── Preserved utility functions ──────────────────────────────────────────────\n\nfunction escapeSingleQuotedString(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\")\n}\n\nexport function escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ninterface RichChild {\n tag: string\n rawAttrs: string\n selfClosing: boolean\n innerContent: string\n}\n\ninterface ExtractedRich {\n message: string\n elements: RichChild[]\n hasElements: boolean\n}\n\ninterface StaticSfcAttrValue {\n kind: 'missing' | 'static' | 'dynamic'\n value?: string\n}\n\ninterface ReplaceOp {\n start: number\n end: number\n replacement: string\n}\n\n// ─── Output helpers (no parsing, kept as-is) ──────────────────────────────────\n\nfunction serializeElements(elements: readonly RichChild[]): string {\n const entries = elements.map(el => {\n // Escape for JS string + HTML attribute context (v-html=\"...\"):\n // &quot; is decoded by HTML parser before JS evaluates the expression\n const rawAttrsStr = escapeSingleQuotedString(el.rawAttrs).replace(/\"/g, '&quot;')\n return `{ tag: '${escapeSingleQuotedString(el.tag)}', rawAttrs: '${rawAttrsStr}' }`\n })\n return `[${entries.join(', ')}]`\n}\n\nfunction buildDescriptorExpression(\n message: string,\n options?: {\n id?: string | undefined\n context?: string | undefined\n },\n): string {\n const id = options?.id ?? hashMessage(message, options?.context)\n return `{ id: '${escapeSingleQuotedString(id)}', message: '${escapeSingleQuotedString(message)}' }`\n}\n\n// ─── AST helper functions ─────────────────────────────────────────────────────\n\nfunction getModifierContent(mod: string | ASTNode): string {\n return typeof mod === 'string' ? mod : (mod.content as string) ?? ''\n}\n\nfunction readAttr(props: ASTNode[], name: string): StaticSfcAttrValue {\n for (const prop of props) {\n if (prop.type === NT_DIRECTIVE && prop.name === 'bind') {\n const argContent = typeof prop.arg?.content === 'string' ? prop.arg.content : undefined\n if (argContent === name) {\n return { kind: 'dynamic' }\n }\n }\n if (prop.type === NT_ATTRIBUTE && prop.name === name) {\n const value = typeof prop.value?.content === 'string' ? prop.value.content : ''\n return { kind: 'static', value }\n }\n }\n return { kind: 'missing' }\n}\n\nfunction getBindingExpr(props: ASTNode[], name: string): string | undefined {\n for (const prop of props) {\n if (prop.type === NT_DIRECTIVE && prop.name === 'bind') {\n const argContent = typeof prop.arg?.content === 'string' ? prop.arg.content : undefined\n if (argContent === name) {\n return typeof prop.exp?.content === 'string' ? prop.exp.content : undefined\n }\n }\n }\n return undefined\n}\n\n/**\n * Extract rich children from AST child nodes.\n * Converts ElementNodes to indexed placeholders, TextNodes to literal text,\n * and InterpolationNodes to their raw source ({{ expr }}).\n */\nfunction extractRichFromAST(children: ASTNode[]): ExtractedRich {\n const elements: RichChild[] = []\n let message = ''\n\n for (const child of children) {\n if (child.type === NT_TEXT) {\n message += typeof child.content === 'string' ? child.content : ''\n } else if (child.type === NT_INTERPOLATION) {\n message += child.loc.source\n } else if (child.type === NT_ELEMENT && child.tag) {\n const idx = elements.length\n const rawAttrs = (child.props ?? [])\n .map(p => p.loc.source)\n .join(' ')\n const isSelfClosing = child.isSelfClosing ?? false\n\n if (isSelfClosing || !child.children?.length) {\n elements.push({ tag: child.tag, rawAttrs, selfClosing: true, innerContent: '' })\n message += `<${idx}/>`\n } else {\n // Collect inner content from the original source between children range\n const firstChild = child.children[0]!\n const lastChild = child.children[child.children.length - 1]!\n const innerContent = child.loc.source.slice(\n firstChild.loc.start.offset - child.loc.start.offset,\n lastChild.loc.end.offset - child.loc.start.offset,\n )\n elements.push({ tag: child.tag, rawAttrs, selfClosing: false, innerContent })\n message += `<${idx}>${innerContent}</${idx}>`\n }\n }\n }\n\n return { message, elements, hasElements: elements.length > 0 }\n}\n\n/**\n * Extract {{ expr }} interpolations from AST children for v-t content.\n * Returns message with ICU {var} placeholders and variable entries.\n */\nfunction extractVarsFromAST(children: ASTNode[]): { message: string; vars: string[] } {\n const vars: string[] = []\n let message = ''\n\n for (const child of children) {\n if (child.type === NT_TEXT) {\n message += typeof child.content === 'string' ? child.content : ''\n } else if (child.type === NT_INTERPOLATION) {\n const expr = typeof child.content === 'object' && child.content\n ? typeof child.content.content === 'string' ? child.content.content : ''\n : ''\n const trimmed = expr.trim()\n\n let varName: string\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(trimmed)) {\n varName = trimmed\n } else if (/^[a-zA-Z_$][a-zA-Z0-9_$.]*$/.test(trimmed) && !trimmed.endsWith('.')) {\n const parts = trimmed.split('.')\n varName = parts[parts.length - 1]!\n } else {\n varName = String(vars.length)\n }\n vars.push(`${varName}: ${trimmed}`)\n message += `{${varName}}`\n }\n }\n\n return { message, vars }\n}\n\n/**\n * Build the list of remaining props for an element, excluding specific prop nodes.\n * Returns their raw source strings joined with spaces.\n */\nfunction buildCleanAttrs(props: ASTNode[], exclude: Set<ASTNode>): string {\n return props\n .filter(p => !exclude.has(p))\n .map(p => p.loc.source)\n .join(' ')\n}\n\n// ─── Transform collectors ─────────────────────────────────────────────────────\n\nconst TRANS_ONLY_PROPS = new Set(['tag', 'id', 'context', 'comment'])\n\nfunction collectVtAttrOps(node: ASTNode, ops: ReplaceOp[]): void {\n const props = node.props ?? []\n const vtDir = props.find(\n p => p.type === NT_DIRECTIVE && p.name === 't' && (p.modifiers ?? []).length > 0,\n )\n if (!vtDir) return\n\n const modifiers = (vtDir.modifiers ?? []).map(getModifierContent)\n // Skip v-t.plural — handled by collectVtContentOps\n if (modifiers.length === 1 && modifiers[0] === 'plural') return\n\n const attrName = modifiers.find(m => m !== 'plural')\n if (!attrName) return\n\n // Find the corresponding static attribute\n const staticAttr = props.find(\n p => p.type === NT_ATTRIBUTE && p.name === attrName,\n )\n if (!staticAttr) return\n const attrValue = typeof staticAttr.value?.content === 'string' ? staticAttr.value.content : ''\n\n const descriptor = buildDescriptorExpression(attrValue)\n\n // Build new opening tag: keep all props except v-t.X and the static attr, add :attrName=\"$t(...)\"\n const exclude = new Set([vtDir, staticAttr])\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const newAttrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n // Replace the opening tag portion of the element\n const tag = node.tag!\n if (node.isSelfClosing) {\n const replacement = `<${tag}${newAttrsPart} :${attrName}=\"$t(${descriptor})\" />`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n } else {\n // Find the end of the opening tag: start of first child or the inner content\n const children = node.children ?? []\n const openTagEnd = children.length > 0\n ? children[0]!.loc.start.offset\n : node.loc.source.indexOf('>') + node.loc.start.offset + 1\n const newOpenTag = `<${tag}${newAttrsPart} :${attrName}=\"$t(${descriptor})\">`\n ops.push({ start: node.loc.start.offset, end: openTagEnd, replacement: newOpenTag })\n }\n}\n\nfunction collectVtContentOps(node: ASTNode, ops: ReplaceOp[]): void {\n const props = node.props ?? []\n const vtDir = props.find(p => p.type === NT_DIRECTIVE && p.name === 't')\n if (!vtDir) return\n\n // Skip if this is a pure attribute binding (handled by collectVtAttrOps)\n const modifiers = (vtDir.modifiers ?? []).map(getModifierContent)\n const nonPluralMods = modifiers.filter(m => m !== 'plural')\n // If there's a non-plural modifier that corresponds to an attribute name, skip (attribute binding)\n if (nonPluralMods.length > 0) {\n const attrName = nonPluralMods[0]!\n const hasStaticAttr = props.some(p => p.type === NT_ATTRIBUTE && p.name === attrName)\n if (hasStaticAttr) return\n }\n\n const isPlural = modifiers.includes('plural')\n const bindExpr = typeof vtDir.exp?.content === 'string' ? vtDir.exp.content : undefined\n\n // Build explicit ID from arg + non-reserved modifiers\n const RESERVED_MODIFIERS = new Set(['plural'])\n const idSegments = modifiers.filter(m => !RESERVED_MODIFIERS.has(m))\n const argContent = typeof vtDir.arg?.content === 'string' ? vtDir.arg.content : undefined\n const explicitId = argContent ? [argContent, ...idSegments].join('.') : undefined\n\n const tag = node.tag!\n const children = node.children ?? []\n\n // Build clean attrs: remove v-t directive\n const exclude = new Set([vtDir])\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n if (isPlural && bindExpr) {\n // Collect text content from children\n const textContent = children\n .filter(c => c.type === NT_TEXT)\n .map(c => (typeof c.content === 'string' ? c.content : '').trim())\n .join('')\n const forms = textContent.split('|').map(s => s.trim())\n const categories = forms.length === 2\n ? ['one', 'other']\n : ['one', 'other', 'zero', 'few', 'many'].slice(0, forms.length)\n const icuParts = categories.map((cat, i) => `${cat} {${forms[i] ?? ''}}`)\n const icuMessage = `{${bindExpr}, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, { id: explicitId })\n const replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}, { ${bindExpr} }) }}</${tag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Check for rich text (child elements)\n const extracted = extractRichFromAST(children)\n if (extracted.hasElements) {\n const message = extracted.message.trim()\n const descriptor = buildDescriptorExpression(message, { id: explicitId })\n const elementsLiteral = serializeElements(extracted.elements)\n const replacement = `<${tag}${attrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral})\"></${tag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Plain text, possibly with interpolation\n const { message, vars } = extractVarsFromAST(children)\n const trimmedMessage = message.trim()\n\n // Skip if there's no message content and no explicit ID — matches guard in collectTransOps\n if (!trimmedMessage && !explicitId) return\n\n const descriptor = buildDescriptorExpression(trimmedMessage, { id: explicitId })\n\n let replacement: string\n if (vars.length > 0) {\n replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}, { ${vars.join(', ')} }) }}</${tag}>`\n } else {\n replacement = `<${tag}${attrsPart}>{{ $t(${descriptor}) }}</${tag}>`\n }\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\nfunction collectTransOps(node: ASTNode, ops: ReplaceOp[]): void {\n if (node.tag !== 'Trans') return\n const props = node.props ?? []\n const children = node.children ?? []\n\n // Skip if empty content\n if (children.length === 0) return\n // Skip all-whitespace content\n const hasContent = children.some(c => {\n if (c.type === NT_TEXT) return (typeof c.content === 'string' ? c.content : '').trim().length > 0\n return true\n })\n if (!hasContent) return\n\n // Skip old API: <Trans message=\"...\">\n if (props.some(p => p.type === NT_ATTRIBUTE && p.name === 'message')) return\n\n const explicitId = readAttr(props, 'id')\n if (explicitId.kind === 'dynamic') return\n\n const context = readAttr(props, 'context')\n if (!explicitId.value && context.kind === 'dynamic') return\n\n // Extract tag prop (default: 'span')\n const tagAttr = readAttr(props, 'tag')\n const wrapperTag = tagAttr.value ?? 'span'\n\n // Build clean attrs: remove Trans-specific props\n const exclude = new Set<ASTNode>()\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && TRANS_ONLY_PROPS.has(p.name as string)) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName && TRANS_ONLY_PROPS.has(argName)) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const cleanAttrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n // Check for rich text\n const extracted = extractRichFromAST(children)\n if (extracted.hasElements) {\n const message = extracted.message.trim()\n const descriptor = buildDescriptorExpression(message, {\n id: explicitId.value,\n context: context.value,\n })\n const elementsLiteral = serializeElements(extracted.elements)\n const replacement = `<${wrapperTag}${cleanAttrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral})\"></${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Plain text\n const rawContent = children\n .map(c => (c.type === NT_TEXT && typeof c.content === 'string') ? c.content : '')\n .join('')\n .trim()\n const descriptor = buildDescriptorExpression(rawContent, {\n id: explicitId.value,\n context: context.value,\n })\n const replacement = `<${wrapperTag}${cleanAttrsPart}>{{ $t(${descriptor}) }}</${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\nconst PLURAL_CATS = ['zero', 'one', 'two', 'few', 'many', 'other'] as const\n\nfunction collectPluralOps(node: ASTNode, ops: ReplaceOp[]): void {\n if (node.tag !== 'Plural') return\n const props = node.props ?? []\n\n const explicitId = readAttr(props, 'id')\n const context = readAttr(props, 'context')\n if (explicitId.kind === 'dynamic') return\n if (!explicitId.value && context.kind === 'dynamic') return\n\n const valueExpr = getBindingExpr(props, 'value')\n if (!valueExpr) return\n\n const tagAttr = readAttr(props, 'tag')\n const wrapperTag = tagAttr.value ?? 'span'\n\n // Check for template slot children\n const children = node.children ?? []\n const slots: Array<{ cat: string; children: ASTNode[] }> = []\n for (const child of children) {\n if (child.type === NT_ELEMENT && child.tag === 'template') {\n const slotDir = (child.props ?? []).find(\n p => p.type === NT_DIRECTIVE && p.name === 'slot',\n )\n if (slotDir) {\n const slotName = typeof slotDir.arg?.content === 'string' ? slotDir.arg.content : undefined\n if (slotName) {\n slots.push({ cat: slotName, children: child.children ?? [] })\n }\n }\n }\n }\n\n if (slots.length > 0) {\n // Slot mode\n const allElements: RichChild[] = []\n const icuParts: string[] = []\n\n for (const cat of PLURAL_CATS) {\n const slot = slots.find(s => s.cat === cat)\n if (!slot) continue\n\n const extracted = extractRichFromAST(slot.children)\n let branchMessage: string\n\n if (extracted.hasElements) {\n const baseIndex = allElements.length\n branchMessage = extracted.message.replace(/<(\\d+)(\\/?)>/g, (_m, idxStr: string, slash: string) => {\n return `<${baseIndex + Number(idxStr)}${slash}>`\n }).replace(/<\\/(\\d+)>/g, (_m, idxStr: string) => {\n return `</${baseIndex + Number(idxStr)}>`\n })\n allElements.push(...extracted.elements)\n } else {\n // Plain text from slot children\n branchMessage = slot.children\n .map(c => (c.type === NT_TEXT && typeof c.content === 'string') ? c.content : '')\n .join('')\n .trim()\n }\n\n const icuKey = cat === 'zero' ? '=0' : cat\n icuParts.push(`${icuKey} {${branchMessage}}`)\n }\n\n if (icuParts.length === 0) return\n\n const icuMessage = `{count, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, {\n id: explicitId.value,\n context: context.value,\n })\n\n // Build clean attrs\n const pluralOnlyProps = new Set([...TRANS_ONLY_PROPS, 'tag'])\n const exclude = new Set<ASTNode>()\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && pluralOnlyProps.has(p.name as string)) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName === 'value' || (argName && pluralOnlyProps.has(argName))) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n let replacement: string\n if (allElements.length > 0) {\n const elementsLiteral = serializeElements(allElements)\n replacement = `<${wrapperTag}${attrsPart} v-html=\"$vtRich(${descriptor}, ${elementsLiteral}, { count: ${valueExpr} })\"></${wrapperTag}>`\n } else {\n replacement = `<${wrapperTag}${attrsPart} v-text=\"$t(${descriptor}, { count: ${valueExpr} })\"></${wrapperTag}>`\n }\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n return\n }\n\n // Prop mode: read zero/one/two/few/many/other static props\n const icuParts: string[] = []\n const catPropsToExclude = new Set<ASTNode>()\n\n for (const cat of PLURAL_CATS) {\n const catProp = props.find(p => p.type === NT_ATTRIBUTE && p.name === cat)\n if (catProp) {\n const value = typeof catProp.value?.content === 'string' ? catProp.value.content : ''\n const icuKey = cat === 'zero' ? '=0' : cat\n icuParts.push(`${icuKey} {${value}}`)\n catPropsToExclude.add(catProp)\n }\n }\n\n if (icuParts.length === 0) return\n\n const icuMessage = `{count, plural, ${icuParts.join(' ')}}`\n const descriptor = buildDescriptorExpression(icuMessage, {\n id: explicitId.value,\n context: context.value,\n })\n\n // Build clean attrs: remove :value, tag, id, context, comment, category props\n const exclude = new Set<ASTNode>(catPropsToExclude)\n for (const p of props) {\n if (p.type === NT_ATTRIBUTE && (p.name === 'tag' || TRANS_ONLY_PROPS.has(p.name as string))) {\n exclude.add(p)\n }\n if (p.type === NT_DIRECTIVE && p.name === 'bind') {\n const argName = typeof p.arg?.content === 'string' ? p.arg.content : undefined\n if (argName === 'value' || (argName && TRANS_ONLY_PROPS.has(argName))) {\n exclude.add(p)\n }\n }\n }\n const remainingAttrs = buildCleanAttrs(props, exclude)\n const attrsPart = remainingAttrs ? ` ${remainingAttrs}` : ''\n\n const replacement = `<${wrapperTag}${attrsPart} v-text=\"$t(${descriptor}, { count: ${valueExpr} })\"></${wrapperTag}>`\n ops.push({ start: node.loc.start.offset, end: node.loc.end.offset, replacement })\n}\n\n// ─── AST traversal ────────────────────────────────────────────────────────────\n\nfunction collectOps(root: ASTNode): ReplaceOp[] {\n const ops: ReplaceOp[] = []\n\n function walk(node: ASTNode): void {\n if (node.type === NT_ELEMENT) {\n if (node.tag === 'Trans') {\n collectTransOps(node, ops)\n return // Don't recurse into transformed nodes\n }\n if (node.tag === 'Plural') {\n collectPluralOps(node, ops)\n return\n }\n\n // v-t directive handling\n const hasVt = (node.props ?? []).some(p => p.type === NT_DIRECTIVE && p.name === 't')\n if (hasVt) {\n collectVtAttrOps(node, ops)\n collectVtContentOps(node, ops)\n return\n }\n }\n\n // Recurse into children\n for (const child of node.children ?? []) {\n walk(child)\n }\n }\n\n walk(root)\n return ops\n}\n\n// ─── Entry point ──────────────────────────────────────────────────────────────\n\nexport function transformVtDirectives(sfc: string): string {\n // Quick bail: check if there's anything to transform\n if (!/<template[\\s>]/.test(sfc)) return sfc\n if (sfc.lastIndexOf('</template>') < 0) return sfc\n\n const hasVt = /\\bv-t\\b/.test(sfc)\n const hasTrans = /<Trans[\\s>]/.test(sfc)\n const hasPlural = /<Plural[\\s/>]/.test(sfc)\n if (!hasVt && !hasTrans && !hasPlural) return sfc\n\n const { descriptor } = parseSFC(sfc, { pad: false })\n if (!descriptor.template?.ast) return sfc\n\n const ops = collectOps(descriptor.template.ast as unknown as ASTNode)\n if (ops.length === 0) return sfc\n\n // Apply replacements from end to start to avoid offset drift\n ops.sort((a, b) => b.start - a.start)\n let result = sfc\n for (const op of ops) {\n result = result.slice(0, op.start) + op.replacement + result.slice(op.end)\n }\n return result\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vt-transform.d.ts","sourceRoot":"","sources":["../src/vt-transform.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,UAAU,IAAI,CAAA;AAC3B,eAAO,MAAM,OAAO,IAAI,CAAA;AACxB,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAQD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;AAE7F,wBAAgB,qBAAqB,IAAI,aAAa,CAsIrD;AA6ND,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrF;AAWD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;IAC/D,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAoC/E"}
1
+ {"version":3,"file":"vt-transform.d.ts","sourceRoot":"","sources":["../src/vt-transform.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,UAAU,IAAI,CAAA;AAC3B,eAAO,MAAM,OAAO,IAAI,CAAA;AACxB,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAQD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;AAE7F,wBAAgB,qBAAqB,IAAI,aAAa,CA2IrD;AA6ND,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrF;AAWD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;IAC/D,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAoC/E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluenti/vite-plugin",
3
- "version": "0.3.3",
3
+ "version": "0.4.0-rc.0",
4
4
  "type": "module",
5
5
  "description": "Vite plugin for Fluenti — build-time transforms, virtual modules, code splitting",
6
6
  "homepage": "https://fluenti.dev",
@@ -61,7 +61,7 @@
61
61
  "llms*.txt"
62
62
  ],
63
63
  "dependencies": {
64
- "@fluenti/core": "0.3.3"
64
+ "@fluenti/core": "0.4.0-rc.0"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "vite": "^5 || ^6 || ^8"