@lytjs/compat 4.2.0 → 5.0.1

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/README.md CHANGED
@@ -51,7 +51,7 @@ createApp(App).mount('#app');
51
51
 
52
52
  ```javascript
53
53
  import {
54
- ref, shallowRef, toRef, toRefs, unref, proxyRefs,
54
+ ref, shallowRef, toRef, toRefs, unref,
55
55
  reactive, readonly, shallowReactive,
56
56
  computed,
57
57
  watch, watchEffect, watchPostEffect, watchSyncEffect,
@@ -1,17 +1,23 @@
1
1
  #!/usr/bin/env node
2
- var $=Object.create;var f=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var k=(s,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of R(t))!x.call(s,n)&&n!==e&&f(s,n,{get:()=>t[n],enumerable:!(r=b(t,n))||r.enumerable});return s};var v=(s,t,e)=>(e=s!=null?$(j(s)):{},k(t||!s||!s.__esModule?f(e,"default",{value:s,enumerable:!0}):e,s));var c=v(require("fs")),i=v(require("path"));var u=class{constructor(t){this.content=t}parse(){let t={template:null,script:null,scriptSetup:null,styles:[]},e=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);e&&(t.template=e[1].trim());let r=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(r&&(t.scriptSetup=r[1].trim()),!t.scriptSetup){let o=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);o&&(t.script=o[1].trim())}let n=/<style([^>]*)>([\s\S]*?)<\/style>/g,l;for(;(l=n.exec(this.content))!==null;){let o={},p=l[1].match(/(\w+)(?:="([^"]*)")?/g);if(p)for(let d of p){let[S,a]=d.split("=");o[S.trim()]=a?a.replace(/"/g,""):""}t.styles.push({content:l[2].trim(),attrs:o})}return t}convertTemplate(t){let e=t;return e=e.replace(/v-for="([^"]*)"/g,'v-each="$1"'),e=e.replace(/:key=/g,"key="),e=e.replace(/v-model=/g,"v-model="),e}convertScript(t,e=!1){let r=t;return r=r.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),r}convertStyles(t){let e=[];for(let r of t){let n=Object.entries(r.attrs).map(([l,o])=>o?`${l}="${o}"`:l).join(" ");e.push(`<style${n?" "+n:""}>
3
- ${r.content}
4
- </style>`)}return e.join(`
2
+ "use strict";var k=Object.create;var S=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var T=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of L(e))!E.call(n,r)&&r!==t&&S(n,r,{get:()=>e[r],enumerable:!(s=R(e,r))||s.enumerable});return n};var w=(n,e,t)=>(t=n!=null?k(M(n)):{},T(e||!n||!n.__esModule?S(t,"default",{value:n,enumerable:!0}):t,n));var a=w(require("fs")),p=w(require("path"));var m=class{constructor(e){this.warnings=[];this.content=e}getWarnings(){return[...this.warnings]}addWarning(e,t,s){this.warnings.push({type:e,message:t,suggestion:s})}parse(){let e={template:null,script:null,scriptSetup:null,styles:[],customBlocks:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let s=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(s&&(e.scriptSetup=s[1].trim()),!e.scriptSetup){let c=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);c&&(e.script=c[1].trim())}let r=/<style([^>]*)>([\s\S]*?)<\/style>/g,i;for(;(i=r.exec(this.content))!==null;){let c={},u=i[1].match(/(\w+)(?:="([^"]*)")?/g);if(u)for(let l of u){let[g,f]=l.split("=");c[g.trim()]=f?f.replace(/"/g,""):""}e.styles.push({content:i[2].trim(),attrs:c})}let o=/<(template|script|style)([^>]*)>([\s\S]*?)<\/\1>/g,v=this.content.match(/<(\w+)([^>]*)>([\s\S]*?)<\/\1>/g)||[];for(let c of v){let u=c.match(/^<(\w+)/);if(!u)continue;let l=u[1];if(["template","script","style"].includes(l))continue;let g=c.match(new RegExp(`^<${l}[^>]*>([\\s\\S]*?)</${l}>$`));if(!g)continue;let f={},d=c.match(new RegExp(`^<${l}([^>]*)>`));if(d){let h=d[1].match(/(\w+)(?:="([^"]*)")?/g);if(h)for(let W of h){let[x,y]=W.split("=");f[x.trim()]=y?y.replace(/"/g,""):""}}e.customBlocks.push({tag:l,content:g[1].trim(),attrs:f})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-if=/g,"if="),t=t.replace(/v-else-if=/g,"else-if="),t=t.replace(/v-else/g,"else"),t=t.replace(/v-show=/g,"show="),t=t.replace(/v-html=/g,"html="),t=t.replace(/v-text=/g,"text="),t=t.replace(/\bv-once\b/g,"once"),t=t.replace(/\bv-pre\b/g,"pre"),t=t.replace(/\bv-cloak\b/g,"cloak"),t=t.replace(/v-slot:/g,"slot:"),t=t.replace(/v-on:/g,"on:"),t=t.replace(/v-model\.(\w+)="/g,'model.$1="'),t=t.replace(/v-model="/g,'model="'),t=t.replace(/v-bind:/g,":"),/v-memo/.test(t)&&(this.addWarning("directive","v-memo \u6307\u4EE4\u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58"),t=t.replace(/\s*v-memo="[^"]*"/g,"")),/v-is/.test(t)&&(this.addWarning("directive","v-is \u52A8\u6001\u7EC4\u4EF6\u8BED\u6CD5\u5728 Lyt.js \u4E2D\u53EF\u80FD\u9700\u8981\u8C03\u6574","\u4F7F\u7528 :is \u5C5E\u6027\u66FF\u4EE3 v-is"),t=t.replace(/v-is=/g,":is=")),t}convertScript(e,t=!1){let s=e;return s=s.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),s=s.replace(/from\s+['"]vue-router['"]/g,"from '@lytjs/router'"),s=s.replace(/from\s+['"]pinia['"]/g,"from '@lytjs/store'"),s=s.replace(/from\s+['"]vuex['"]/g,"from '@lytjs/store'"),t&&(/defineProps/.test(s)&&this.addWarning("api","defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ props: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 props \u9009\u9879"),/defineEmits/.test(s)&&this.addWarning("api","defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ emits: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 emits \u9009\u9879"),/defineExpose/.test(s)&&this.addWarning("api","defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981","\u5728 Lyt.js \u4E2D setup \u8FD4\u56DE\u7684\u5BF9\u8C61\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027"),/withDefaults/.test(s)&&this.addWarning("api","withDefaults \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362","\u5728 defineComponent \u7684 props \u9009\u9879\u4E2D\u4F7F\u7528 default \u5B57\u6BB5"),/useSlots/.test(s)&&this.addWarning("api","useSlots \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { slots }) \u8BBF\u95EE\u63D2\u69FD"),/useAttrs/.test(s)&&this.addWarning("api","useAttrs \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { attrs }) \u8BBF\u95EE attrs"),s=this.convertScriptSetupToSetup(s)),s}convertScriptSetupToSetup(e){let t=e;return t=t.replace(/const\s+\w+\s*=\s*defineProps\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineProps \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49
3
+ `),t=t.replace(/const\s+\w+\s*=\s*defineEmits\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineEmits \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49
4
+ `),t=t.replace(/defineExpose\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineExpose \u5DF2\u79FB\u9664\uFF0Csetup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732
5
+ `),t=t.replace(/const\s+\w+\s*=\s*withDefaults\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] withDefaults \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 props \u9009\u9879\u4E2D\u4F7F\u7528 default
6
+ `),t}convertStyles(e){let t=[];for(let s of e){let r=Object.entries(s.attrs).map(([i,o])=>o?`${i}="${o}"`:i).join(" ");s.attrs.module!==void 0&&this.addWarning("feature","CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3"),t.push(`<style${r?" "+r:""}>
7
+ ${s.content}
8
+ </style>`)}return t.join(`
5
9
 
6
- `)}convert(){let t=this.parse(),e=[];if(t.template){let r=this.convertTemplate(t.template);e.push(`<template>
7
- ${r}
8
- </template>`)}if(t.scriptSetup){let r=this.convertScript(t.scriptSetup,!0);e.push(`<script setup>
9
- ${r}
10
- </script>`)}else if(t.script){let r=this.convertScript(t.script,!1);e.push(`<script>
11
- ${r}
12
- </script>`)}return t.styles.length>0&&e.push(this.convertStyles(t.styles)),e.join(`
10
+ `)}convert(){let e=this.parse(),t=[];if(e.template){let s=this.convertTemplate(e.template);t.push(`<template>
11
+ ${s}
12
+ </template>`)}if(e.scriptSetup){let s=this.convertScript(e.scriptSetup,!0);t.push(`<script setup>
13
+ ${s}
14
+ </script>`)}else if(e.script){let s=this.convertScript(e.script,!1);t.push(`<script>
15
+ ${s}
16
+ </script>`)}e.styles.length>0&&t.push(this.convertStyles(e.styles));for(let s of e.customBlocks){let r=Object.entries(s.attrs).map(([i,o])=>o?`${i}="${o}"`:i).join(" ");t.push(`<${s.tag}${r?" "+r:""}>
17
+ ${s.content}
18
+ </${s.tag}>`)}return t.join(`
13
19
 
14
- `)}};function g(s){return new u(s).convert()}function C(){let s=process.argv.slice(2),t={input:"",recursive:!1,dryRun:!1,help:!1};for(let e=0;e<s.length;e++){let r=s[e];switch(r){case"-h":case"--help":t.help=!0;break;case"-r":case"--recursive":t.recursive=!0;break;case"-d":case"--dry-run":t.dryRun=!0;break;case"-o":case"--output":t.output=s[++e];break;default:t.input||(t.input=r);break}}return t}function h(){console.log(`
20
+ `)}convertWithWarnings(){return this.warnings=[],{code:this.convert(),warnings:this.warnings}}};function C(n){return new m(n).convert()}function P(){let n=process.argv.slice(2),e={input:"",recursive:!1,dryRun:!1,help:!1};for(let t=0;t<n.length;t++){let s=n[t];switch(s){case"-h":case"--help":e.help=!0;break;case"-r":case"--recursive":e.recursive=!0;break;case"-d":case"--dry-run":e.dryRun=!0;break;case"-o":case"--output":e.output=n[++t];break;default:e.input||(e.input=s);break}}return e}function b(){console.log(`
15
21
  vue-to-lyt - \u5C06 Vue \u9879\u76EE\u8F6C\u6362\u4E3A Lyt.js \u9879\u76EE
16
22
 
17
23
  \u7528\u6CD5:
@@ -32,5 +38,5 @@ vue-to-lyt - \u5C06 Vue \u9879\u76EE\u8F6C\u6362\u4E3A Lyt.js \u9879\u76EE
32
38
 
33
39
  # \u8F6C\u6362\u5230\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
34
40
  vue-to-lyt ./src --recursive --output ./lyt-src
35
- `)}function y(s,t){try{let e=c.readFileSync(s,"utf-8"),r=g(e),n=t||s.replace(/\.vue$/,".lyt");return console.log(`[\u8F6C\u6362] ${s} -> ${n}`),console.log(e!==r?"[\u53D8\u66F4] \u6587\u4EF6\u5185\u5BB9\u5DF2\u8F6C\u6362":"[\u8DF3\u8FC7] \u6587\u4EF6\u5185\u5BB9\u65E0\u9700\u8F6C\u6362"),!0}catch(e){return console.error(`[\u9519\u8BEF] \u5904\u7406\u6587\u4EF6 ${s} \u65F6\u51FA\u9519:`,e),!1}}function m(s,t){let e=c.readdirSync(s);for(let r of e){let n=i.join(s,r);if(c.statSync(n).isDirectory()){if(r==="node_modules"||r===".git")continue;let o=t?i.join(t,r):void 0;m(n,o)}else if(r.endsWith(".vue")){let o;if(t){let p=i.relative(s,n);o=i.join(t,p.replace(/\.vue$/,".lyt"))}y(n,o)}}}function F(){let s=C();s.help&&(h(),process.exit(0)),s.input||(console.error("\u9519\u8BEF: \u8BF7\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u6216\u76EE\u5F55"),h(),process.exit(1));let t=i.resolve(s.input);c.existsSync(t)||(console.error(`\u9519\u8BEF: \u8DEF\u5F84\u4E0D\u5B58\u5728: ${t}`),process.exit(1));let e=c.statSync(t);e.isDirectory()?(s.recursive||(console.error("\u9519\u8BEF: \u8F93\u5165\u662F\u76EE\u5F55\uFF0C\u8BF7\u4F7F\u7528 --recursive \u9009\u9879"),process.exit(1)),m(t,s.output)):e.isFile()&&y(t,s.output),console.log(`
36
- \u8F6C\u6362\u5B8C\u6210!`)}F();
41
+ `)}function $(n,e){try{let t=a.readFileSync(n,"utf-8"),s=C(t),r=e||n.replace(/\.vue$/,".lyt");return console.log(`[\u8F6C\u6362] ${n} -> ${r}`),console.log(t!==s?"[\u53D8\u66F4] \u6587\u4EF6\u5185\u5BB9\u5DF2\u8F6C\u6362":"[\u8DF3\u8FC7] \u6587\u4EF6\u5185\u5BB9\u65E0\u9700\u8F6C\u6362"),!0}catch(t){return console.error(`[\u9519\u8BEF] \u5904\u7406\u6587\u4EF6 ${n} \u65F6\u51FA\u9519:`,t),!1}}function j(n,e){let t=a.readdirSync(n);for(let s of t){let r=p.join(n,s);if(a.statSync(r).isDirectory()){if(s==="node_modules"||s===".git")continue;let o=e?p.join(e,s):void 0;j(r,o)}else if(s.endsWith(".vue")){let o;if(e){let v=p.relative(n,r);o=p.join(e,v.replace(/\.vue$/,".lyt"))}$(r,o)}}}function B(){let n=P();n.help&&(b(),process.exit(0)),n.input||(console.error("\u9519\u8BEF: \u8BF7\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u6216\u76EE\u5F55"),b(),process.exit(1));let e=p.resolve(n.input);a.existsSync(e)||(console.error(`\u9519\u8BEF: \u8DEF\u5F84\u4E0D\u5B58\u5728: ${e}`),process.exit(1));let t=a.statSync(e);t.isDirectory()?(n.recursive||(console.error("\u9519\u8BEF: \u8F93\u5165\u662F\u76EE\u5F55\uFF0C\u8BF7\u4F7F\u7528 --recursive \u9009\u9879"),process.exit(1)),j(e,n.output)):t.isFile()&&$(e,n.output),console.log(`
42
+ \u8F6C\u6362\u5B8C\u6210!`)}B();
@@ -1,17 +1,23 @@
1
1
  #!/usr/bin/env node
2
- import*as c from"fs";import*as i from"path";var u=class{constructor(t){this.content=t}parse(){let t={template:null,script:null,scriptSetup:null,styles:[]},e=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);e&&(t.template=e[1].trim());let s=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(s&&(t.scriptSetup=s[1].trim()),!t.scriptSetup){let n=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);n&&(t.script=n[1].trim())}let o=/<style([^>]*)>([\s\S]*?)<\/style>/g,l;for(;(l=o.exec(this.content))!==null;){let n={},p=l[1].match(/(\w+)(?:="([^"]*)")?/g);if(p)for(let y of p){let[m,a]=y.split("=");n[m.trim()]=a?a.replace(/"/g,""):""}t.styles.push({content:l[2].trim(),attrs:n})}return t}convertTemplate(t){let e=t;return e=e.replace(/v-for="([^"]*)"/g,'v-each="$1"'),e=e.replace(/:key=/g,"key="),e=e.replace(/v-model=/g,"v-model="),e}convertScript(t,e=!1){let s=t;return s=s.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),s}convertStyles(t){let e=[];for(let s of t){let o=Object.entries(s.attrs).map(([l,n])=>n?`${l}="${n}"`:l).join(" ");e.push(`<style${o?" "+o:""}>
2
+ import*as a from"fs";import*as p from"path";var m=class{constructor(e){this.warnings=[];this.content=e}getWarnings(){return[...this.warnings]}addWarning(e,t,s){this.warnings.push({type:e,message:t,suggestion:s})}parse(){let e={template:null,script:null,scriptSetup:null,styles:[],customBlocks:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let s=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(s&&(e.scriptSetup=s[1].trim()),!e.scriptSetup){let c=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);c&&(e.script=c[1].trim())}let r=/<style([^>]*)>([\s\S]*?)<\/style>/g,i;for(;(i=r.exec(this.content))!==null;){let c={},u=i[1].match(/(\w+)(?:="([^"]*)")?/g);if(u)for(let l of u){let[g,f]=l.split("=");c[g.trim()]=f?f.replace(/"/g,""):""}e.styles.push({content:i[2].trim(),attrs:c})}let o=/<(template|script|style)([^>]*)>([\s\S]*?)<\/\1>/g,v=this.content.match(/<(\w+)([^>]*)>([\s\S]*?)<\/\1>/g)||[];for(let c of v){let u=c.match(/^<(\w+)/);if(!u)continue;let l=u[1];if(["template","script","style"].includes(l))continue;let g=c.match(new RegExp(`^<${l}[^>]*>([\\s\\S]*?)</${l}>$`));if(!g)continue;let f={},d=c.match(new RegExp(`^<${l}([^>]*)>`));if(d){let h=d[1].match(/(\w+)(?:="([^"]*)")?/g);if(h)for(let $ of h){let[j,y]=$.split("=");f[j.trim()]=y?y.replace(/"/g,""):""}}e.customBlocks.push({tag:l,content:g[1].trim(),attrs:f})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-if=/g,"if="),t=t.replace(/v-else-if=/g,"else-if="),t=t.replace(/v-else/g,"else"),t=t.replace(/v-show=/g,"show="),t=t.replace(/v-html=/g,"html="),t=t.replace(/v-text=/g,"text="),t=t.replace(/\bv-once\b/g,"once"),t=t.replace(/\bv-pre\b/g,"pre"),t=t.replace(/\bv-cloak\b/g,"cloak"),t=t.replace(/v-slot:/g,"slot:"),t=t.replace(/v-on:/g,"on:"),t=t.replace(/v-model\.(\w+)="/g,'model.$1="'),t=t.replace(/v-model="/g,'model="'),t=t.replace(/v-bind:/g,":"),/v-memo/.test(t)&&(this.addWarning("directive","v-memo \u6307\u4EE4\u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58"),t=t.replace(/\s*v-memo="[^"]*"/g,"")),/v-is/.test(t)&&(this.addWarning("directive","v-is \u52A8\u6001\u7EC4\u4EF6\u8BED\u6CD5\u5728 Lyt.js \u4E2D\u53EF\u80FD\u9700\u8981\u8C03\u6574","\u4F7F\u7528 :is \u5C5E\u6027\u66FF\u4EE3 v-is"),t=t.replace(/v-is=/g,":is=")),t}convertScript(e,t=!1){let s=e;return s=s.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),s=s.replace(/from\s+['"]vue-router['"]/g,"from '@lytjs/router'"),s=s.replace(/from\s+['"]pinia['"]/g,"from '@lytjs/store'"),s=s.replace(/from\s+['"]vuex['"]/g,"from '@lytjs/store'"),t&&(/defineProps/.test(s)&&this.addWarning("api","defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ props: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 props \u9009\u9879"),/defineEmits/.test(s)&&this.addWarning("api","defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ emits: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 emits \u9009\u9879"),/defineExpose/.test(s)&&this.addWarning("api","defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981","\u5728 Lyt.js \u4E2D setup \u8FD4\u56DE\u7684\u5BF9\u8C61\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027"),/withDefaults/.test(s)&&this.addWarning("api","withDefaults \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362","\u5728 defineComponent \u7684 props \u9009\u9879\u4E2D\u4F7F\u7528 default \u5B57\u6BB5"),/useSlots/.test(s)&&this.addWarning("api","useSlots \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { slots }) \u8BBF\u95EE\u63D2\u69FD"),/useAttrs/.test(s)&&this.addWarning("api","useAttrs \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { attrs }) \u8BBF\u95EE attrs"),s=this.convertScriptSetupToSetup(s)),s}convertScriptSetupToSetup(e){let t=e;return t=t.replace(/const\s+\w+\s*=\s*defineProps\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineProps \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49
3
+ `),t=t.replace(/const\s+\w+\s*=\s*defineEmits\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineEmits \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49
4
+ `),t=t.replace(/defineExpose\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineExpose \u5DF2\u79FB\u9664\uFF0Csetup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732
5
+ `),t=t.replace(/const\s+\w+\s*=\s*withDefaults\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] withDefaults \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 props \u9009\u9879\u4E2D\u4F7F\u7528 default
6
+ `),t}convertStyles(e){let t=[];for(let s of e){let r=Object.entries(s.attrs).map(([i,o])=>o?`${i}="${o}"`:i).join(" ");s.attrs.module!==void 0&&this.addWarning("feature","CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3"),t.push(`<style${r?" "+r:""}>
3
7
  ${s.content}
4
- </style>`)}return e.join(`
8
+ </style>`)}return t.join(`
5
9
 
6
- `)}convert(){let t=this.parse(),e=[];if(t.template){let s=this.convertTemplate(t.template);e.push(`<template>
10
+ `)}convert(){let e=this.parse(),t=[];if(e.template){let s=this.convertTemplate(e.template);t.push(`<template>
7
11
  ${s}
8
- </template>`)}if(t.scriptSetup){let s=this.convertScript(t.scriptSetup,!0);e.push(`<script setup>
12
+ </template>`)}if(e.scriptSetup){let s=this.convertScript(e.scriptSetup,!0);t.push(`<script setup>
9
13
  ${s}
10
- </script>`)}else if(t.script){let s=this.convertScript(t.script,!1);e.push(`<script>
14
+ </script>`)}else if(e.script){let s=this.convertScript(e.script,!1);t.push(`<script>
11
15
  ${s}
12
- </script>`)}return t.styles.length>0&&e.push(this.convertStyles(t.styles)),e.join(`
16
+ </script>`)}e.styles.length>0&&t.push(this.convertStyles(e.styles));for(let s of e.customBlocks){let r=Object.entries(s.attrs).map(([i,o])=>o?`${i}="${o}"`:i).join(" ");t.push(`<${s.tag}${r?" "+r:""}>
17
+ ${s.content}
18
+ </${s.tag}>`)}return t.join(`
13
19
 
14
- `)}};function f(r){return new u(r).convert()}function d(){let r=process.argv.slice(2),t={input:"",recursive:!1,dryRun:!1,help:!1};for(let e=0;e<r.length;e++){let s=r[e];switch(s){case"-h":case"--help":t.help=!0;break;case"-r":case"--recursive":t.recursive=!0;break;case"-d":case"--dry-run":t.dryRun=!0;break;case"-o":case"--output":t.output=r[++e];break;default:t.input||(t.input=s);break}}return t}function v(){console.log(`
20
+ `)}convertWithWarnings(){return this.warnings=[],{code:this.convert(),warnings:this.warnings}}};function S(n){return new m(n).convert()}function W(){let n=process.argv.slice(2),e={input:"",recursive:!1,dryRun:!1,help:!1};for(let t=0;t<n.length;t++){let s=n[t];switch(s){case"-h":case"--help":e.help=!0;break;case"-r":case"--recursive":e.recursive=!0;break;case"-d":case"--dry-run":e.dryRun=!0;break;case"-o":case"--output":e.output=n[++t];break;default:e.input||(e.input=s);break}}return e}function w(){console.log(`
15
21
  vue-to-lyt - \u5C06 Vue \u9879\u76EE\u8F6C\u6362\u4E3A Lyt.js \u9879\u76EE
16
22
 
17
23
  \u7528\u6CD5:
@@ -32,5 +38,5 @@ vue-to-lyt - \u5C06 Vue \u9879\u76EE\u8F6C\u6362\u4E3A Lyt.js \u9879\u76EE
32
38
 
33
39
  # \u8F6C\u6362\u5230\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
34
40
  vue-to-lyt ./src --recursive --output ./lyt-src
35
- `)}function g(r,t){try{let e=c.readFileSync(r,"utf-8"),s=f(e),o=t||r.replace(/\.vue$/,".lyt");return console.log(`[\u8F6C\u6362] ${r} -> ${o}`),console.log(e!==s?"[\u53D8\u66F4] \u6587\u4EF6\u5185\u5BB9\u5DF2\u8F6C\u6362":"[\u8DF3\u8FC7] \u6587\u4EF6\u5185\u5BB9\u65E0\u9700\u8F6C\u6362"),!0}catch(e){return console.error(`[\u9519\u8BEF] \u5904\u7406\u6587\u4EF6 ${r} \u65F6\u51FA\u9519:`,e),!1}}function h(r,t){let e=c.readdirSync(r);for(let s of e){let o=i.join(r,s);if(c.statSync(o).isDirectory()){if(s==="node_modules"||s===".git")continue;let n=t?i.join(t,s):void 0;h(o,n)}else if(s.endsWith(".vue")){let n;if(t){let p=i.relative(r,o);n=i.join(t,p.replace(/\.vue$/,".lyt"))}g(o,n)}}}function S(){let r=d();r.help&&(v(),process.exit(0)),r.input||(console.error("\u9519\u8BEF: \u8BF7\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u6216\u76EE\u5F55"),v(),process.exit(1));let t=i.resolve(r.input);c.existsSync(t)||(console.error(`\u9519\u8BEF: \u8DEF\u5F84\u4E0D\u5B58\u5728: ${t}`),process.exit(1));let e=c.statSync(t);e.isDirectory()?(r.recursive||(console.error("\u9519\u8BEF: \u8F93\u5165\u662F\u76EE\u5F55\uFF0C\u8BF7\u4F7F\u7528 --recursive \u9009\u9879"),process.exit(1)),h(t,r.output)):e.isFile()&&g(t,r.output),console.log(`
36
- \u8F6C\u6362\u5B8C\u6210!`)}S();
41
+ `)}function C(n,e){try{let t=a.readFileSync(n,"utf-8"),s=S(t),r=e||n.replace(/\.vue$/,".lyt");return console.log(`[\u8F6C\u6362] ${n} -> ${r}`),console.log(t!==s?"[\u53D8\u66F4] \u6587\u4EF6\u5185\u5BB9\u5DF2\u8F6C\u6362":"[\u8DF3\u8FC7] \u6587\u4EF6\u5185\u5BB9\u65E0\u9700\u8F6C\u6362"),!0}catch(t){return console.error(`[\u9519\u8BEF] \u5904\u7406\u6587\u4EF6 ${n} \u65F6\u51FA\u9519:`,t),!1}}function b(n,e){let t=a.readdirSync(n);for(let s of t){let r=p.join(n,s);if(a.statSync(r).isDirectory()){if(s==="node_modules"||s===".git")continue;let o=e?p.join(e,s):void 0;b(r,o)}else if(s.endsWith(".vue")){let o;if(e){let v=p.relative(n,r);o=p.join(e,v.replace(/\.vue$/,".lyt"))}C(r,o)}}}function x(){let n=W();n.help&&(w(),process.exit(0)),n.input||(console.error("\u9519\u8BEF: \u8BF7\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u6216\u76EE\u5F55"),w(),process.exit(1));let e=p.resolve(n.input);a.existsSync(e)||(console.error(`\u9519\u8BEF: \u8DEF\u5F84\u4E0D\u5B58\u5728: ${e}`),process.exit(1));let t=a.statSync(e);t.isDirectory()?(n.recursive||(console.error("\u9519\u8BEF: \u8F93\u5165\u662F\u76EE\u5F55\uFF0C\u8BF7\u4F7F\u7528 --recursive \u9009\u9879"),process.exit(1)),b(e,n.output)):t.isFile()&&C(e,n.output),console.log(`
42
+ \u8F6C\u6362\u5B8C\u6210!`)}x();
package/dist/index.cjs CHANGED
@@ -1,13 +1,21 @@
1
- var u=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var ee=(n,e)=>{for(var t in e)u(n,t,{get:e[t],enumerable:!0})},ge=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of xe(e))!he.call(n,s)&&s!==t&&u(n,s,{get:()=>e[s],enumerable:!(r=ve(e,s))||r.enumerable});return n};var Re=n=>ge(u({},"__esModule",{value:!0}),n);var Te={};ee(Te,{KeepAlive:()=>ie,Suspense:()=>fe,Teleport:()=>pe,Transition:()=>ce,TransitionGroup:()=>le,VueSfcConverter:()=>l,computed:()=>U,convertVueSfcToLyt:()=>ne,createApp:()=>re,createCompatVue:()=>de,defineComponent:()=>se,effect:()=>k,getCurrentInstance:()=>H,getCurrentScope:()=>J,inject:()=>j,isReactive:()=>T,isReadonly:()=>M,isRef:()=>y,markRaw:()=>P,nextTick:()=>D,onActivated:()=>q,onBeforeMount:()=>V,onBeforeUnmount:()=>K,onBeforeUpdate:()=>G,onDeactivated:()=>N,onErrorCaptured:()=>W,onMounted:()=>I,onRenderTracked:()=>_,onRenderTriggered:()=>L,onScopeDispose:()=>Q,onServerPrefetch:()=>z,onUnmounted:()=>F,onUpdated:()=>$,provide:()=>b,reactive:()=>R,readonly:()=>C,ref:()=>d,shallowReactive:()=>S,shallowRef:()=>m,toRaw:()=>w,toRef:()=>x,toRefs:()=>h,triggerRef:()=>g,unref:()=>v,useCompatMode:()=>ue,watch:()=>A,watchEffect:()=>E,watchPostEffect:()=>B,watchSyncEffect:()=>O});module.exports=Re(Te);var X={};ee(X,{computed:()=>U,effect:()=>k,getCurrentInstance:()=>H,getCurrentScope:()=>J,inject:()=>j,isReactive:()=>T,isReadonly:()=>M,isRef:()=>y,markRaw:()=>P,nextTick:()=>D,onActivated:()=>q,onBeforeMount:()=>V,onBeforeUnmount:()=>K,onBeforeUpdate:()=>G,onDeactivated:()=>N,onErrorCaptured:()=>W,onMounted:()=>I,onRenderTracked:()=>_,onRenderTriggered:()=>L,onScopeDispose:()=>Q,onServerPrefetch:()=>z,onUnmounted:()=>F,onUpdated:()=>$,provide:()=>b,reactive:()=>R,readonly:()=>C,ref:()=>d,setCurrentInstance:()=>Se,shallowReactive:()=>S,shallowRef:()=>m,toRaw:()=>w,toRef:()=>x,toRefs:()=>h,triggerRef:()=>g,unref:()=>v,watch:()=>A,watchEffect:()=>E,watchPostEffect:()=>B,watchSyncEffect:()=>O});var o=require("@lytjs/reactivity"),a=require("@lytjs/component"),d=o.ref,m=o.shallowRef,y=o.isRef,v=o.unref,x=o.toRef,h=o.toRefs,g=o.triggerRef,R=o.reactive,C=o.readonly,S=o.shallowReactive,w=o.toRaw,T=o.isReactive,M=o.isReadonly;function P(n){return n.__v_skip=!0,n}var U=o.computed,A=o.watch,E=o.watchEffect;function B(n){return(0,o.watchEffect)(n,{flush:"post"})}function O(n){return(0,o.watchEffect)(n,{flush:"sync"})}var k=o.effect,D=o.nextTick,b=a.provide,j=a.inject,I=a.onMounted,$=a.onUpdated,F=a.onUnmounted,V=a.compositionOnBeforeMount,G=a.onBeforeUpdate,K=a.onBeforeUnmount;function W(n){}function _(n){}function L(n){}function q(n){}function N(n){}function z(n){}var te=null,Ce=null;function H(){return te}function Se(n){te=n}function J(){return Ce}function Q(n){}var l=class{constructor(e){this.content=e}parse(){let e={template:null,script:null,scriptSetup:null,styles:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let r=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(r&&(e.scriptSetup=r[1].trim()),!e.scriptSetup){let i=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);i&&(e.script=i[1].trim())}let s=/<style([^>]*)>([\s\S]*?)<\/style>/g,p;for(;(p=s.exec(this.content))!==null;){let i={},Y=p[1].match(/(\w+)(?:="([^"]*)")?/g);if(Y)for(let me of Y){let[ye,Z]=me.split("=");i[ye.trim()]=Z?Z.replace(/"/g,""):""}e.styles.push({content:p[2].trim(),attrs:i})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-model=/g,"v-model="),t}convertScript(e,t=!1){let r=e;return r=r.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),r}convertStyles(e){let t=[];for(let r of e){let s=Object.entries(r.attrs).map(([p,i])=>i?`${p}="${i}"`:p).join(" ");t.push(`<style${s?" "+s:""}>
2
- ${r.content}
1
+ "use strict";var R=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var we=(i,e)=>{for(var t in e)R(i,t,{get:e[t],enumerable:!0})},_e=(i,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ge(e))!Ne.call(i,n)&&n!==t&&R(i,n,{get:()=>e[n],enumerable:!(o=ze(e,n))||o.enumerable});return i};var qe=i=>_e(R({},"__esModule",{value:!0}),i);var Ze={};we(Ze,{Fragment:()=>se,KeepAlive:()=>ke,Suspense:()=>De,Teleport:()=>Ee,Transition:()=>Pe,TransitionGroup:()=>Ie,VueSfcConverter:()=>u,analyzeVueFile:()=>Fe,computed:()=>W,convertVueSfcToLyt:()=>Te,convertVueSfcToLytWithWarnings:()=>x,createApp:()=>Me,createCompatVue:()=>Le,defineAsyncComponent:()=>pe,defineComponent:()=>be,defineEmits:()=>ce,defineExpose:()=>ue,defineProps:()=>ae,effect:()=>O,formatMigrationReport:()=>Oe,getCurrentInstance:()=>ne,getCurrentScope:()=>ie,h:()=>re,inject:()=>z,isProxy:()=>de,isReactive:()=>v,isReadonly:()=>h,isRef:()=>j,markRaw:()=>D,migrateVueFile:()=>Be,nextTick:()=>V,onActivated:()=>Z,onBeforeMount:()=>q,onBeforeUnmount:()=>J,onBeforeUpdate:()=>H,onDeactivated:()=>ee,onErrorCaptured:()=>Q,onMounted:()=>G,onRenderTracked:()=>X,onRenderTriggered:()=>Y,onScopeDispose:()=>oe,onServerPrefetch:()=>te,onUnmounted:()=>_,onUpdated:()=>N,provide:()=>K,proxyRefs:()=>ye,reactive:()=>k,readonly:()=>E,ref:()=>S,shallowReactive:()=>P,shallowRef:()=>T,toRaw:()=>I,toRef:()=>b,toRefs:()=>$,triggerRef:()=>A,unref:()=>M,useAttrs:()=>me,useCompatMode:()=>We,useSlots:()=>fe,useTemplateRef:()=>ge,watch:()=>L,watchEffect:()=>U,watchPostEffect:()=>B,watchSyncEffect:()=>F,withDefaults:()=>le});module.exports=qe(Ze);var ve={};we(ve,{Fragment:()=>se,computed:()=>W,defineAsyncComponent:()=>pe,defineEmits:()=>ce,defineExpose:()=>ue,defineProps:()=>ae,effect:()=>O,getCurrentInstance:()=>ne,getCurrentScope:()=>ie,h:()=>re,inject:()=>z,isProxy:()=>de,isReactive:()=>v,isReadonly:()=>h,isRef:()=>j,markRaw:()=>D,nextTick:()=>V,onActivated:()=>Z,onBeforeMount:()=>q,onBeforeUnmount:()=>J,onBeforeUpdate:()=>H,onDeactivated:()=>ee,onErrorCaptured:()=>Q,onMounted:()=>G,onRenderTracked:()=>X,onRenderTriggered:()=>Y,onScopeDispose:()=>oe,onServerPrefetch:()=>te,onUnmounted:()=>_,onUpdated:()=>N,provide:()=>K,proxyRefs:()=>ye,reactive:()=>k,readonly:()=>E,ref:()=>S,setCurrentInstance:()=>Je,shallowReactive:()=>P,shallowRef:()=>T,toRaw:()=>I,toRef:()=>b,toRefs:()=>$,triggerRef:()=>A,unref:()=>M,useAttrs:()=>me,useSlots:()=>fe,useTemplateRef:()=>ge,watch:()=>L,watchEffect:()=>U,watchPostEffect:()=>B,watchSyncEffect:()=>F,withDefaults:()=>le});var s=require("@lytjs/reactivity"),a=require("@lytjs/component"),y=require("@lytjs/core"),Re=require("@lytjs/component/builtins/async-component"),S=s.ref,T=s.shallowRef,j=s.isRef,M=s.unref,b=s.toRef,$=s.toRefs,A=s.triggerRef,k=s.reactive,E=s.readonly,P=s.shallowReactive,I=s.toRaw,v=s.isReactive,h=s.isReadonly;function D(i){return i.__v_skip=!0,i}var W=s.computed,L=s.watch,U=s.watchEffect;function B(i){return(0,s.watchEffect)(i,{flush:"post"})}function F(i){return(0,s.watchEffect)(i,{flush:"sync"})}var O=s.effect,V=s.nextTick,K=a.provide,z=a.inject,G=a.onMounted,N=a.onUpdated,_=a.onUnmounted,q=a.compositionOnBeforeMount,H=a.onBeforeUpdate,J=a.onBeforeUnmount;function Q(i){}function X(i){}function Y(i){}function Z(i){}function ee(i){}function te(i){}var Se=null,He=null;function ne(){return Se}function Je(i){Se=i}function ie(){return He}function oe(i){}var re=y.h,se=y.Fragment,pe=Re.defineAsyncComponent;function ae(){return{}}var ce=a.defineEmits;function le(i,e){return{...i,...e}}function ue(i){}function fe(){return{}}function me(){return{}}function ge(i){return{value:null}}function de(i){return v(i)||h(i)}function ye(i){return i}var u=class{constructor(e){this.warnings=[];this.content=e}getWarnings(){return[...this.warnings]}addWarning(e,t,o){this.warnings.push({type:e,message:t,suggestion:o})}parse(){let e={template:null,script:null,scriptSetup:null,styles:[],customBlocks:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let o=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(o&&(e.scriptSetup=o[1].trim()),!e.scriptSetup){let c=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);c&&(e.script=c[1].trim())}let n=/<style([^>]*)>([\s\S]*?)<\/style>/g,r;for(;(r=n.exec(this.content))!==null;){let c={},f=r[1].match(/(\w+)(?:="([^"]*)")?/g);if(f)for(let l of f){let[d,m]=l.split("=");c[d.trim()]=m?m.replace(/"/g,""):""}e.styles.push({content:r[2].trim(),attrs:c})}let p=/<(template|script|style)([^>]*)>([\s\S]*?)<\/\1>/g,w=this.content.match(/<(\w+)([^>]*)>([\s\S]*?)<\/\1>/g)||[];for(let c of w){let f=c.match(/^<(\w+)/);if(!f)continue;let l=f[1];if(["template","script","style"].includes(l))continue;let d=c.match(new RegExp(`^<${l}[^>]*>([\\s\\S]*?)</${l}>$`));if(!d)continue;let m={},he=c.match(new RegExp(`^<${l}([^>]*)>`));if(he){let xe=he[1].match(/(\w+)(?:="([^"]*)")?/g);if(xe)for(let Ve of xe){let[Ke,Ce]=Ve.split("=");m[Ke.trim()]=Ce?Ce.replace(/"/g,""):""}}e.customBlocks.push({tag:l,content:d[1].trim(),attrs:m})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-if=/g,"if="),t=t.replace(/v-else-if=/g,"else-if="),t=t.replace(/v-else/g,"else"),t=t.replace(/v-show=/g,"show="),t=t.replace(/v-html=/g,"html="),t=t.replace(/v-text=/g,"text="),t=t.replace(/\bv-once\b/g,"once"),t=t.replace(/\bv-pre\b/g,"pre"),t=t.replace(/\bv-cloak\b/g,"cloak"),t=t.replace(/v-slot:/g,"slot:"),t=t.replace(/v-on:/g,"on:"),t=t.replace(/v-model\.(\w+)="/g,'model.$1="'),t=t.replace(/v-model="/g,'model="'),t=t.replace(/v-bind:/g,":"),/v-memo/.test(t)&&(this.addWarning("directive","v-memo \u6307\u4EE4\u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58"),t=t.replace(/\s*v-memo="[^"]*"/g,"")),/v-is/.test(t)&&(this.addWarning("directive","v-is \u52A8\u6001\u7EC4\u4EF6\u8BED\u6CD5\u5728 Lyt.js \u4E2D\u53EF\u80FD\u9700\u8981\u8C03\u6574","\u4F7F\u7528 :is \u5C5E\u6027\u66FF\u4EE3 v-is"),t=t.replace(/v-is=/g,":is=")),t}convertScript(e,t=!1){let o=e;return o=o.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),o=o.replace(/from\s+['"]vue-router['"]/g,"from '@lytjs/router'"),o=o.replace(/from\s+['"]pinia['"]/g,"from '@lytjs/store'"),o=o.replace(/from\s+['"]vuex['"]/g,"from '@lytjs/store'"),t&&(/defineProps/.test(o)&&this.addWarning("api","defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ props: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 props \u9009\u9879"),/defineEmits/.test(o)&&this.addWarning("api","defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ emits: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 emits \u9009\u9879"),/defineExpose/.test(o)&&this.addWarning("api","defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981","\u5728 Lyt.js \u4E2D setup \u8FD4\u56DE\u7684\u5BF9\u8C61\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027"),/withDefaults/.test(o)&&this.addWarning("api","withDefaults \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362","\u5728 defineComponent \u7684 props \u9009\u9879\u4E2D\u4F7F\u7528 default \u5B57\u6BB5"),/useSlots/.test(o)&&this.addWarning("api","useSlots \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { slots }) \u8BBF\u95EE\u63D2\u69FD"),/useAttrs/.test(o)&&this.addWarning("api","useAttrs \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { attrs }) \u8BBF\u95EE attrs"),o=this.convertScriptSetupToSetup(o)),o}convertScriptSetupToSetup(e){let t=e;return t=t.replace(/const\s+\w+\s*=\s*defineProps\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineProps \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49
2
+ `),t=t.replace(/const\s+\w+\s*=\s*defineEmits\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineEmits \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49
3
+ `),t=t.replace(/defineExpose\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineExpose \u5DF2\u79FB\u9664\uFF0Csetup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732
4
+ `),t=t.replace(/const\s+\w+\s*=\s*withDefaults\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] withDefaults \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 props \u9009\u9879\u4E2D\u4F7F\u7528 default
5
+ `),t}convertStyles(e){let t=[];for(let o of e){let n=Object.entries(o.attrs).map(([r,p])=>p?`${r}="${p}"`:r).join(" ");o.attrs.module!==void 0&&this.addWarning("feature","CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3"),t.push(`<style${n?" "+n:""}>
6
+ ${o.content}
3
7
  </style>`)}return t.join(`
4
8
 
5
- `)}convert(){let e=this.parse(),t=[];if(e.template){let r=this.convertTemplate(e.template);t.push(`<template>
6
- ${r}
7
- </template>`)}if(e.scriptSetup){let r=this.convertScript(e.scriptSetup,!0);t.push(`<script setup>
8
- ${r}
9
- </script>`)}else if(e.script){let r=this.convertScript(e.script,!1);t.push(`<script>
10
- ${r}
11
- </script>`)}return e.styles.length>0&&t.push(this.convertStyles(e.styles)),t.join(`
9
+ `)}convert(){let e=this.parse(),t=[];if(e.template){let o=this.convertTemplate(e.template);t.push(`<template>
10
+ ${o}
11
+ </template>`)}if(e.scriptSetup){let o=this.convertScript(e.scriptSetup,!0);t.push(`<script setup>
12
+ ${o}
13
+ </script>`)}else if(e.script){let o=this.convertScript(e.script,!1);t.push(`<script>
14
+ ${o}
15
+ </script>`)}e.styles.length>0&&t.push(this.convertStyles(e.styles));for(let o of e.customBlocks){let n=Object.entries(o.attrs).map(([r,p])=>p?`${r}="${p}"`:r).join(" ");t.push(`<${o.tag}${n?" "+n:""}>
16
+ ${o.content}
17
+ </${o.tag}>`)}return t.join(`
12
18
 
13
- `)}};function ne(n){return new l(n).convert()}var oe=require("@lytjs/core");function re(n,e){let t=(0,oe.createApp)(n,e);return{...t,use(r,...s){return typeof r=="function"?r(this,...s):r&&typeof r.install=="function"&&r.install(this,...s),this},mixin(r){return this},component(r,s){return s?(t.component(r,s),this):t.component(r)},directive(r,s){return s?this:null},provide(r,s){return t.provide(r,s),this}}}var f=require("@lytjs/component");function se(n){return n&&typeof n=="object"?(0,f.defineComponent)(n):typeof n=="function"?(0,f.defineComponent)({setup:n}):(0,f.defineComponent)(n)}var c=require("@lytjs/component"),ae=require("@lytjs/core"),ie=(0,c.defineComponent)({name:"KeepAlive",setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),pe=(0,c.defineComponent)({name:"Teleport",props:{to:{type:[String,Object],required:!0},disabled:Boolean},setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),ce=(0,c.defineComponent)({name:"Transition",props:{name:{type:String,default:"v"}},setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),le=(0,c.defineComponent)({name:"TransitionGroup",props:{tag:{type:String,default:"span"},name:{type:String,default:"v"}},setup(n,{slots:e}){return()=>{var t;return(0,ae.h)(n.tag,null,(t=e.default)==null?void 0:t.call(e))}}}),fe=(0,c.defineComponent)({name:"Suspense",setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}});var we=!1;function ue(n=!0){we=n}function de(){return{...X,version:"3.x (Compat)"}}0&&(module.exports={KeepAlive,Suspense,Teleport,Transition,TransitionGroup,VueSfcConverter,computed,convertVueSfcToLyt,createApp,createCompatVue,defineComponent,effect,getCurrentInstance,getCurrentScope,inject,isReactive,isReadonly,isRef,markRaw,nextTick,onActivated,onBeforeMount,onBeforeUnmount,onBeforeUpdate,onDeactivated,onErrorCaptured,onMounted,onRenderTracked,onRenderTriggered,onScopeDispose,onServerPrefetch,onUnmounted,onUpdated,provide,reactive,readonly,ref,shallowReactive,shallowRef,toRaw,toRef,toRefs,triggerRef,unref,useCompatMode,watch,watchEffect,watchPostEffect,watchSyncEffect});
19
+ `)}convertWithWarnings(){return this.warnings=[],{code:this.convert(),warnings:this.warnings}}};function Te(i){return new u(i).convert()}function x(i){return new u(i).convertWithWarnings()}var je=require("@lytjs/core");function Me(i,e){let t=(0,je.createApp)(i,e);return{...t,use(o,...n){return typeof o=="function"?o(this,...n):o&&typeof o.install=="function"&&o.install(this,...n),this},mixin(o){return this},component(o,n){return n?(t.component(o,n),this):t.component(o)},directive(o,n){return n?this:null},provide(o,n){return t.provide(o,n),this}}}var C=require("@lytjs/component");function be(i){return i&&typeof i=="object"?(0,C.defineComponent)(i):typeof i=="function"?(0,C.defineComponent)({setup:i}):(0,C.defineComponent)(i)}var $e=require("@lytjs/component"),Ae=require("@lytjs/core"),g=$e.defineComponent,ke=g({name:"KeepAlive",setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),Ee=g({name:"Teleport",props:{to:{type:[String,Object],required:!0},disabled:Boolean},setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),Pe=g({name:"Transition",props:{name:{type:String,default:"v"}},setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),Ie=g({name:"TransitionGroup",props:{tag:{type:String,default:"span"},name:{type:String,default:"v"}},setup(i,{slots:e}){return()=>{var t;return(0,Ae.h)(i.tag,null,(t=e.default)==null?void 0:t.call(e))}}}),De=g({name:"Suspense",setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}});var Qe=!1;function We(i=!0){Qe=i}function Le(){return{...ve,version:"3.x (Compat)"}}function Ue(i){let e=[],t=i.split(`
20
+ `);for(let o=0;o<t.length;o++){let n=t[o],r=o+1;/from\s+['"]vue['"]/.test(n)&&e.push({type:"import",severity:"warning",description:'\u4ECE "vue" \u5BFC\u5165\u9700\u8981\u66FF\u6362\u4E3A "@lytjs/compat"',suggestion:'\u5C06 from "vue" \u66FF\u6362\u4E3A from "@lytjs/compat"',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vue['"]/,"from '@lytjs/compat'")}),/from\s+['"]vue-router['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"vue-router \u9700\u8981\u66FF\u6362\u4E3A @lytjs/router",suggestion:'\u5C06 from "vue-router" \u66FF\u6362\u4E3A from "@lytjs/router"',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vue-router['"]/,"from '@lytjs/router'")}),/from\s+['"]pinia['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"Pinia \u9700\u8981\u66FF\u6362\u4E3A @lytjs/store",suggestion:'\u5C06 from "pinia" \u66FF\u6362\u4E3A from "@lytjs/store"\uFF0C\u5E76\u8C03\u6574 API \u8C03\u7528',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]pinia['"]/,"from '@lytjs/store'")}),/from\s+['"]vuex['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"Vuex \u9700\u8981\u66FF\u6362\u4E3A @lytjs/store",suggestion:'\u5C06 from "vuex" \u66FF\u6362\u4E3A from "@lytjs/store"\uFF0C\u5E76\u8C03\u6574 API \u8C03\u7528',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vuex['"]/,"from '@lytjs/store'")}),/v-for=/.test(n)&&e.push({type:"directive",severity:"warning",description:"v-for \u9700\u8981\u8F6C\u6362\u4E3A v-each",suggestion:'\u5C06 v-for="..." \u66FF\u6362\u4E3A v-each="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-for=/,"v-each=")}),/v-if=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-if \u9700\u8981\u8F6C\u6362\u4E3A if",suggestion:'\u5C06 v-if="..." \u66FF\u6362\u4E3A if="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-if=/,"if=")}),/v-else-if=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-else-if \u9700\u8981\u8F6C\u6362\u4E3A else-if",suggestion:'\u5C06 v-else-if="..." \u66FF\u6362\u4E3A else-if="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-else-if=/,"else-if=")}),/\bv-else\b/.test(n)&&e.push({type:"directive",severity:"info",description:"v-else \u9700\u8981\u8F6C\u6362\u4E3A else",suggestion:"\u5C06 v-else \u66FF\u6362\u4E3A else",line:r,original:n.trim(),replacement:n.trim().replace(/\bv-else\b/,"else")}),/v-show=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-show \u9700\u8981\u8F6C\u6362\u4E3A show",suggestion:'\u5C06 v-show="..." \u66FF\u6362\u4E3A show="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-show=/,"show=")}),/v-model/.test(n)&&e.push({type:"directive",severity:"info",description:"v-model \u9700\u8981\u8F6C\u6362\u4E3A model",suggestion:'\u5C06 v-model="..." \u66FF\u6362\u4E3A model="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-model/,"model")}),/v-on:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-on: \u9700\u8981\u8F6C\u6362\u4E3A on:",suggestion:'\u5C06 v-on:click="..." \u66FF\u6362\u4E3A on:click="..." \u6216 @click="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-on:/,"on:")}),/v-bind:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-bind: \u53EF\u4EE5\u7B80\u5199\u4E3A :",suggestion:'\u5C06 v-bind:attr="..." \u66FF\u6362\u4E3A :attr="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-bind:/,":")}),/v-slot:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-slot: \u9700\u8981\u8F6C\u6362\u4E3A slot:",suggestion:"\u5C06 v-slot:name \u66FF\u6362\u4E3A slot:name \u6216 #name",line:r,original:n.trim(),replacement:n.trim().replace(/v-slot:/,"slot:")}),/v-html=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-html \u9700\u8981\u8F6C\u6362\u4E3A html",suggestion:'\u5C06 v-html="..." \u66FF\u6362\u4E3A html="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-html=/,"html=")}),/v-text=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-text \u9700\u8981\u8F6C\u6362\u4E3A text",suggestion:'\u5C06 v-text="..." \u66FF\u6362\u4E3A text="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-text=/,"text=")}),/v-memo/.test(n)&&e.push({type:"feature",severity:"error",description:"v-memo \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58\u903B\u8F91",line:r,original:n.trim()}),/\$refs/.test(n)&&e.push({type:"api",severity:"warning",description:"$refs \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 ref() \u548C\u6A21\u677F ref \u5C5E\u6027\u66FF\u4EE3",line:r,original:n.trim()}),/\$emit/.test(n)&&e.push({type:"api",severity:"warning",description:"$emit \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 setup \u4E0A\u4E0B\u6587\u4E2D\u7684 emit \u51FD\u6570\u66FF\u4EE3",line:r,original:n.trim()}),/\$el/.test(n)&&e.push({type:"api",severity:"warning",description:"$el \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 template ref \u66FF\u4EE3",line:r,original:n.trim()}),/\$parent/.test(n)&&e.push({type:"api",severity:"warning",description:"$parent \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 provide/inject \u66FF\u4EE3",line:r,original:n.trim()}),/\$children/.test(n)&&e.push({type:"api",severity:"error",description:"$children \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 provide/inject \u6216\u4E8B\u4EF6\u603B\u7EBF\u66FF\u4EE3",line:r,original:n.trim()}),/\$forceUpdate/.test(n)&&e.push({type:"api",severity:"warning",description:"$forceUpdate \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981",suggestion:"Lyt.js \u7684\u54CD\u5E94\u5F0F\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u89E6\u53D1\u66F4\u65B0",line:r,original:n.trim()}),/\$nextTick/.test(n)&&e.push({type:"api",severity:"info",description:"$nextTick \u9700\u8981\u66FF\u6362\u4E3A\u72EC\u7ACB\u7684 nextTick \u51FD\u6570",suggestion:'import { nextTick } from "@lytjs/compat"',line:r,original:n.trim()}),/defineProps/.test(n)&&e.push({type:"api",severity:"warning",description:"defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362",suggestion:"\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49 props",line:r,original:n.trim()}),/defineEmits/.test(n)&&e.push({type:"api",severity:"warning",description:"defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362",suggestion:"\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49 emits",line:r,original:n.trim()}),/defineExpose/.test(n)&&e.push({type:"api",severity:"info",description:"defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981",suggestion:"setup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027",line:r,original:n.trim()}),/<style[^>]*module/.test(n)&&e.push({type:"style",severity:"error",description:"CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3",line:r,original:n.trim()}),/<Teleport/.test(n)&&e.push({type:"component",severity:"info",description:"Teleport \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 Teleport",line:r}),/<Suspense/.test(n)&&e.push({type:"component",severity:"info",description:"Suspense \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 Suspense",line:r}),/<KeepAlive/.test(n)&&e.push({type:"component",severity:"info",description:"KeepAlive \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 KeepAlive",line:r})}return e}function Xe(i){if(i.length===0)return 100;let e=100;for(let t of i)switch(t.severity){case"error":e-=15;break;case"warning":e-=5;break;case"info":e-=1;break}return Math.max(0,Math.min(100,e))}function Ye(i){let e=[],t=new Set;for(let o of i)if(o.severity==="error"||o.severity==="warning"){let n=`${o.type}:${o.description}`;t.has(n)||(t.add(n),e.push(`- [${o.severity.toUpperCase()}] ${o.description}: ${o.suggestion}`))}return e}function Be(i){let e=x(i),t=Ue(i);for(let p of e.warnings)t.push({type:p.type,severity:"warning",description:p.message,suggestion:p.suggestion||""});let o=t.filter(p=>p.severity==="error").length,n=t.filter(p=>p.severity==="warning").length,r=t.filter(p=>p.severity==="info").length;return{code:e.code,issues:t,errorCount:o,warningCount:n,infoCount:r,compatibilityScore:Xe(t),manualFixes:Ye(t)}}function Fe(i){return Ue(i)}function Oe(i){let e=[];if(e.push("========================================"),e.push(" Vue 3 -> Lyt.js \u8FC1\u79FB\u62A5\u544A"),e.push("========================================"),e.push(""),e.push(`\u517C\u5BB9\u6027\u8BC4\u5206: ${i.compatibilityScore}/100`),i.compatibilityScore>=80?e.push("\u8FC1\u79FB\u96BE\u5EA6: \u4F4E - \u5927\u90E8\u5206\u4EE3\u7801\u53EF\u4EE5\u81EA\u52A8\u8F6C\u6362"):i.compatibilityScore>=50?e.push("\u8FC1\u79FB\u96BE\u5EA6: \u4E2D - \u9700\u8981\u4E00\u4E9B\u624B\u52A8\u8C03\u6574"):e.push("\u8FC1\u79FB\u96BE\u5EA6: \u9AD8 - \u9700\u8981\u5927\u91CF\u624B\u52A8\u4FEE\u6539"),e.push(""),e.push("\u95EE\u9898\u7EDF\u8BA1:"),e.push(` \u9519\u8BEF: ${i.errorCount}`),e.push(` \u8B66\u544A: ${i.warningCount}`),e.push(` \u4FE1\u606F: ${i.infoCount}`),e.push(""),i.manualFixes.length>0){e.push("\u9700\u8981\u624B\u52A8\u4FEE\u6539\u7684\u90E8\u5206:");for(let t of i.manualFixes)e.push(` ${t}`);e.push("")}if(i.issues.length>0){e.push("\u8BE6\u7EC6\u95EE\u9898\u5217\u8868:"),e.push("");let t=new Map;for(let n of i.issues){let r=t.get(n.type)||[];r.push(n),t.set(n.type,r)}let o={import:"\u5BFC\u5165\u8BED\u53E5",directive:"\u6307\u4EE4\u8BED\u6CD5",lifecycle:"\u751F\u547D\u5468\u671F",api:"API \u5DEE\u5F02",component:"\u7EC4\u4EF6",style:"\u6837\u5F0F",feature:"\u4E0D\u652F\u6301\u7684\u529F\u80FD",ecosystem:"\u751F\u6001\u7CFB\u7EDF"};for(let[n,r]of t){e.push(` [${o[n]}]`);for(let p of r){let w=p.line?` (\u884C ${p.line})`:"";e.push(` ${p.severity.toUpperCase()}: ${p.description}${w}`),e.push(` \u5EFA\u8BAE: ${p.suggestion}`)}e.push("")}}return e.push("========================================"),e.join(`
21
+ `)}0&&(module.exports={Fragment,KeepAlive,Suspense,Teleport,Transition,TransitionGroup,VueSfcConverter,analyzeVueFile,computed,convertVueSfcToLyt,convertVueSfcToLytWithWarnings,createApp,createCompatVue,defineAsyncComponent,defineComponent,defineEmits,defineExpose,defineProps,effect,formatMigrationReport,getCurrentInstance,getCurrentScope,h,inject,isProxy,isReactive,isReadonly,isRef,markRaw,migrateVueFile,nextTick,onActivated,onBeforeMount,onBeforeUnmount,onBeforeUpdate,onDeactivated,onErrorCaptured,onMounted,onRenderTracked,onRenderTriggered,onScopeDispose,onServerPrefetch,onUnmounted,onUpdated,provide,proxyRefs,reactive,readonly,ref,shallowReactive,shallowRef,toRaw,toRef,toRefs,triggerRef,unref,useAttrs,useCompatMode,useSlots,useTemplateRef,watch,watchEffect,watchPostEffect,watchSyncEffect,withDefaults});
package/dist/index.mjs CHANGED
@@ -1,4 +1,8 @@
1
- var te=Object.defineProperty;var ne=(n,e)=>{for(var t in e)te(n,t,{get:e[t],enumerable:!0})};var l={};ne(l,{computed:()=>A,effect:()=>D,getCurrentInstance:()=>Q,getCurrentScope:()=>X,inject:()=>I,isReactive:()=>M,isReadonly:()=>P,isRef:()=>v,markRaw:()=>U,nextTick:()=>b,onActivated:()=>N,onBeforeMount:()=>G,onBeforeUnmount:()=>W,onBeforeUpdate:()=>K,onDeactivated:()=>z,onErrorCaptured:()=>_,onMounted:()=>$,onRenderTracked:()=>L,onRenderTriggered:()=>q,onScopeDispose:()=>Y,onServerPrefetch:()=>H,onUnmounted:()=>V,onUpdated:()=>F,provide:()=>j,reactive:()=>C,readonly:()=>S,ref:()=>m,setCurrentInstance:()=>Ee,shallowReactive:()=>w,shallowRef:()=>y,toRaw:()=>T,toRef:()=>h,toRefs:()=>g,triggerRef:()=>R,unref:()=>x,watch:()=>E,watchEffect:()=>B,watchPostEffect:()=>O,watchSyncEffect:()=>k});import{ref as oe,shallowRef as re,isRef as se,unref as ae,toRef as ie,toRefs as pe,triggerRef as ce,reactive as le,readonly as fe,shallowReactive as ue,toRaw as de,isReactive as me,isReadonly as ye,computed as ve,watch as xe,watchEffect as c,effect as he,nextTick as ge}from"@lytjs/reactivity";import{provide as Re,inject as Ce,onMounted as Se,onUpdated as we,onUnmounted as Te,compositionOnBeforeMount as Me,onBeforeUpdate as Pe,onBeforeUnmount as Ue}from"@lytjs/component";var m=oe,y=re,v=se,x=ae,h=ie,g=pe,R=ce,C=le,S=fe,w=ue,T=de,M=me,P=ye;function U(n){return n.__v_skip=!0,n}var A=ve,E=xe,B=c;function O(n){return c(n,{flush:"post"})}function k(n){return c(n,{flush:"sync"})}var D=he,b=ge,j=Re,I=Ce,$=Se,F=we,V=Te,G=Me,K=Pe,W=Ue;function _(n){}function L(n){}function q(n){}function N(n){}function z(n){}function H(n){}var J=null,Ae=null;function Q(){return J}function Ee(n){J=n}function X(){return Ae}function Y(n){}var p=class{constructor(e){this.content=e}parse(){let e={template:null,script:null,scriptSetup:null,styles:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let o=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(o&&(e.scriptSetup=o[1].trim()),!e.scriptSetup){let s=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);s&&(e.script=s[1].trim())}let r=/<style([^>]*)>([\s\S]*?)<\/style>/g,a;for(;(a=r.exec(this.content))!==null;){let s={},u=a[1].match(/(\w+)(?:="([^"]*)")?/g);if(u)for(let Z of u){let[ee,d]=Z.split("=");s[ee.trim()]=d?d.replace(/"/g,""):""}e.styles.push({content:a[2].trim(),attrs:s})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-model=/g,"v-model="),t}convertScript(e,t=!1){let o=e;return o=o.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),o}convertStyles(e){let t=[];for(let o of e){let r=Object.entries(o.attrs).map(([a,s])=>s?`${a}="${s}"`:a).join(" ");t.push(`<style${r?" "+r:""}>
1
+ var Re=Object.defineProperty;var Se=(i,e)=>{for(var t in e)Re(i,t,{get:e[t],enumerable:!0})};var h={};Se(h,{Fragment:()=>ae,computed:()=>L,defineAsyncComponent:()=>ce,defineEmits:()=>ue,defineExpose:()=>me,defineProps:()=>le,effect:()=>V,getCurrentInstance:()=>oe,getCurrentScope:()=>re,h:()=>pe,inject:()=>G,isProxy:()=>ve,isReactive:()=>y,isReadonly:()=>v,isRef:()=>M,markRaw:()=>W,nextTick:()=>K,onActivated:()=>ee,onBeforeMount:()=>H,onBeforeUnmount:()=>Q,onBeforeUpdate:()=>J,onDeactivated:()=>te,onErrorCaptured:()=>X,onMounted:()=>N,onRenderTracked:()=>Y,onRenderTriggered:()=>Z,onScopeDispose:()=>se,onServerPrefetch:()=>ne,onUnmounted:()=>q,onUpdated:()=>_,provide:()=>z,proxyRefs:()=>he,reactive:()=>E,readonly:()=>P,ref:()=>T,setCurrentInstance:()=>et,shallowReactive:()=>I,shallowRef:()=>j,toRaw:()=>D,toRef:()=>$,toRefs:()=>A,triggerRef:()=>k,unref:()=>b,useAttrs:()=>de,useSlots:()=>ge,useTemplateRef:()=>ye,watch:()=>U,watchEffect:()=>B,watchPostEffect:()=>F,watchSyncEffect:()=>O,withDefaults:()=>fe});import{ref as Te,shallowRef as je,isRef as Me,unref as be,toRef as $e,toRefs as Ae,triggerRef as ke,reactive as Ee,readonly as Pe,shallowReactive as Ie,toRaw as De,isReactive as We,isReadonly as Le,computed as Ue,watch as Be,watchEffect as d,effect as Fe,nextTick as Oe}from"@lytjs/reactivity";import{provide as Ve,inject as Ke,onMounted as ze,onUpdated as Ge,onUnmounted as Ne,compositionOnBeforeMount as _e,onBeforeUpdate as qe,onBeforeUnmount as He,defineEmits as Je}from"@lytjs/component";import{h as Qe,Fragment as Xe}from"@lytjs/core";import{defineAsyncComponent as Ye}from"@lytjs/component/builtins/async-component";var T=Te,j=je,M=Me,b=be,$=$e,A=Ae,k=ke,E=Ee,P=Pe,I=Ie,D=De,y=We,v=Le;function W(i){return i.__v_skip=!0,i}var L=Ue,U=Be,B=d;function F(i){return d(i,{flush:"post"})}function O(i){return d(i,{flush:"sync"})}var V=Fe,K=Oe,z=Ve,G=Ke,N=ze,_=Ge,q=Ne,H=_e,J=qe,Q=He;function X(i){}function Y(i){}function Z(i){}function ee(i){}function te(i){}function ne(i){}var ie=null,Ze=null;function oe(){return ie}function et(i){ie=i}function re(){return Ze}function se(i){}var pe=Qe,ae=Xe,ce=Ye;function le(){return{}}var ue=Je;function fe(i,e){return{...i,...e}}function me(i){}function ge(){return{}}function de(){return{}}function ye(i){return{value:null}}function ve(i){return y(i)||v(i)}function he(i){return i}var u=class{constructor(e){this.warnings=[];this.content=e}getWarnings(){return[...this.warnings]}addWarning(e,t,o){this.warnings.push({type:e,message:t,suggestion:o})}parse(){let e={template:null,script:null,scriptSetup:null,styles:[],customBlocks:[]},t=this.content.match(/<template[^>]*>([\s\S]*?)<\/template>/);t&&(e.template=t[1].trim());let o=this.content.match(/<script[^>]*setup[^>]*>([\s\S]*?)<\/script>/);if(o&&(e.scriptSetup=o[1].trim()),!e.scriptSetup){let p=this.content.match(/<script(?:\s[^>]*?)?>([\s\S]*?)<\/script>/);p&&(e.script=p[1].trim())}let n=/<style([^>]*)>([\s\S]*?)<\/style>/g,r;for(;(r=n.exec(this.content))!==null;){let p={},c=r[1].match(/(\w+)(?:="([^"]*)")?/g);if(c)for(let a of c){let[m,l]=a.split("=");p[m.trim()]=l?l.replace(/"/g,""):""}e.styles.push({content:r[2].trim(),attrs:p})}let s=/<(template|script|style)([^>]*)>([\s\S]*?)<\/\1>/g,g=this.content.match(/<(\w+)([^>]*)>([\s\S]*?)<\/\1>/g)||[];for(let p of g){let c=p.match(/^<(\w+)/);if(!c)continue;let a=c[1];if(["template","script","style"].includes(a))continue;let m=p.match(new RegExp(`^<${a}[^>]*>([\\s\\S]*?)</${a}>$`));if(!m)continue;let l={},w=p.match(new RegExp(`^<${a}([^>]*)>`));if(w){let R=w[1].match(/(\w+)(?:="([^"]*)")?/g);if(R)for(let Ce of R){let[we,S]=Ce.split("=");l[we.trim()]=S?S.replace(/"/g,""):""}}e.customBlocks.push({tag:a,content:m[1].trim(),attrs:l})}return e}convertTemplate(e){let t=e;return t=t.replace(/v-for="([^"]*)"/g,'v-each="$1"'),t=t.replace(/:key=/g,"key="),t=t.replace(/v-if=/g,"if="),t=t.replace(/v-else-if=/g,"else-if="),t=t.replace(/v-else/g,"else"),t=t.replace(/v-show=/g,"show="),t=t.replace(/v-html=/g,"html="),t=t.replace(/v-text=/g,"text="),t=t.replace(/\bv-once\b/g,"once"),t=t.replace(/\bv-pre\b/g,"pre"),t=t.replace(/\bv-cloak\b/g,"cloak"),t=t.replace(/v-slot:/g,"slot:"),t=t.replace(/v-on:/g,"on:"),t=t.replace(/v-model\.(\w+)="/g,'model.$1="'),t=t.replace(/v-model="/g,'model="'),t=t.replace(/v-bind:/g,":"),/v-memo/.test(t)&&(this.addWarning("directive","v-memo \u6307\u4EE4\u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58"),t=t.replace(/\s*v-memo="[^"]*"/g,"")),/v-is/.test(t)&&(this.addWarning("directive","v-is \u52A8\u6001\u7EC4\u4EF6\u8BED\u6CD5\u5728 Lyt.js \u4E2D\u53EF\u80FD\u9700\u8981\u8C03\u6574","\u4F7F\u7528 :is \u5C5E\u6027\u66FF\u4EE3 v-is"),t=t.replace(/v-is=/g,":is=")),t}convertScript(e,t=!1){let o=e;return o=o.replace(/from\s+['"]vue['"]/g,"from '@lytjs/compat'"),o=o.replace(/from\s+['"]vue-router['"]/g,"from '@lytjs/router'"),o=o.replace(/from\s+['"]pinia['"]/g,"from '@lytjs/store'"),o=o.replace(/from\s+['"]vuex['"]/g,"from '@lytjs/store'"),t&&(/defineProps/.test(o)&&this.addWarning("api","defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ props: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 props \u9009\u9879"),/defineEmits/.test(o)&&this.addWarning("api","defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362\u4E3A defineComponent({ emits: {...} })","\u5728 Lyt.js \u4E2D\u4F7F\u7528 defineComponent \u7684 emits \u9009\u9879"),/defineExpose/.test(o)&&this.addWarning("api","defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981","\u5728 Lyt.js \u4E2D setup \u8FD4\u56DE\u7684\u5BF9\u8C61\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027"),/withDefaults/.test(o)&&this.addWarning("api","withDefaults \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362","\u5728 defineComponent \u7684 props \u9009\u9879\u4E2D\u4F7F\u7528 default \u5B57\u6BB5"),/useSlots/.test(o)&&this.addWarning("api","useSlots \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { slots }) \u8BBF\u95EE\u63D2\u69FD"),/useAttrs/.test(o)&&this.addWarning("api","useAttrs \u5728 Lyt.js \u4E2D\u9700\u8981\u901A\u8FC7 setup \u4E0A\u4E0B\u6587\u8BBF\u95EE","\u4F7F\u7528 setup(props, { attrs }) \u8BBF\u95EE attrs"),o=this.convertScriptSetupToSetup(o)),o}convertScriptSetupToSetup(e){let t=e;return t=t.replace(/const\s+\w+\s*=\s*defineProps\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineProps \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49
2
+ `),t=t.replace(/const\s+\w+\s*=\s*defineEmits\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineEmits \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49
3
+ `),t=t.replace(/defineExpose\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] defineExpose \u5DF2\u79FB\u9664\uFF0Csetup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732
4
+ `),t=t.replace(/const\s+\w+\s*=\s*withDefaults\s*\([^)]*\)\s*;?\s*\n?/g,`// [Compat] withDefaults \u5DF2\u79FB\u9664\uFF0C\u8BF7\u5728 props \u9009\u9879\u4E2D\u4F7F\u7528 default
5
+ `),t}convertStyles(e){let t=[];for(let o of e){let n=Object.entries(o.attrs).map(([r,s])=>s?`${r}="${s}"`:r).join(" ");o.attrs.module!==void 0&&this.addWarning("feature","CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301","\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3"),t.push(`<style${n?" "+n:""}>
2
6
  ${o.content}
3
7
  </style>`)}return t.join(`
4
8
 
@@ -8,6 +12,10 @@ ${o}
8
12
  ${o}
9
13
  </script>`)}else if(e.script){let o=this.convertScript(e.script,!1);t.push(`<script>
10
14
  ${o}
11
- </script>`)}return e.styles.length>0&&t.push(this.convertStyles(e.styles)),t.join(`
15
+ </script>`)}e.styles.length>0&&t.push(this.convertStyles(e.styles));for(let o of e.customBlocks){let n=Object.entries(o.attrs).map(([r,s])=>s?`${r}="${s}"`:r).join(" ");t.push(`<${o.tag}${n?" "+n:""}>
16
+ ${o.content}
17
+ </${o.tag}>`)}return t.join(`
12
18
 
13
- `)}};function Be(n){return new p(n).convert()}import{createApp as Oe}from"@lytjs/core";function ke(n,e){let t=Oe(n,e);return{...t,use(o,...r){return typeof o=="function"?o(this,...r):o&&typeof o.install=="function"&&o.install(this,...r),this},mixin(o){return this},component(o,r){return r?(t.component(o,r),this):t.component(o)},directive(o,r){return r?this:null},provide(o,r){return t.provide(o,r),this}}}import{defineComponent as f}from"@lytjs/component";function De(n){return n&&typeof n=="object"?f(n):typeof n=="function"?f({setup:n}):f(n)}import{defineComponent as i}from"@lytjs/component";import{h as be}from"@lytjs/core";var je=i({name:"KeepAlive",setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),Ie=i({name:"Teleport",props:{to:{type:[String,Object],required:!0},disabled:Boolean},setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),$e=i({name:"Transition",props:{name:{type:String,default:"v"}},setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),Fe=i({name:"TransitionGroup",props:{tag:{type:String,default:"span"},name:{type:String,default:"v"}},setup(n,{slots:e}){return()=>{var t;return be(n.tag,null,(t=e.default)==null?void 0:t.call(e))}}}),Ve=i({name:"Suspense",setup(n,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}});var Ge=!1;function Ke(n=!0){Ge=n}function We(){return{...l,version:"3.x (Compat)"}}export{je as KeepAlive,Ve as Suspense,Ie as Teleport,$e as Transition,Fe as TransitionGroup,p as VueSfcConverter,A as computed,Be as convertVueSfcToLyt,ke as createApp,We as createCompatVue,De as defineComponent,D as effect,Q as getCurrentInstance,X as getCurrentScope,I as inject,M as isReactive,P as isReadonly,v as isRef,U as markRaw,b as nextTick,N as onActivated,G as onBeforeMount,W as onBeforeUnmount,K as onBeforeUpdate,z as onDeactivated,_ as onErrorCaptured,$ as onMounted,L as onRenderTracked,q as onRenderTriggered,Y as onScopeDispose,H as onServerPrefetch,V as onUnmounted,F as onUpdated,j as provide,C as reactive,S as readonly,m as ref,w as shallowReactive,y as shallowRef,T as toRaw,h as toRef,g as toRefs,R as triggerRef,x as unref,Ke as useCompatMode,E as watch,B as watchEffect,O as watchPostEffect,k as watchSyncEffect};
19
+ `)}convertWithWarnings(){return this.warnings=[],{code:this.convert(),warnings:this.warnings}}};function tt(i){return new u(i).convert()}function x(i){return new u(i).convertWithWarnings()}import{createApp as nt}from"@lytjs/core";function it(i,e){let t=nt(i,e);return{...t,use(o,...n){return typeof o=="function"?o(this,...n):o&&typeof o.install=="function"&&o.install(this,...n),this},mixin(o){return this},component(o,n){return n?(t.component(o,n),this):t.component(o)},directive(o,n){return n?this:null},provide(o,n){return t.provide(o,n),this}}}import{defineComponent as C}from"@lytjs/component";function ot(i){return i&&typeof i=="object"?C(i):typeof i=="function"?C({setup:i}):C(i)}import{defineComponent as rt}from"@lytjs/component";import{h as st}from"@lytjs/core";var f=rt,pt=f({name:"KeepAlive",setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),at=f({name:"Teleport",props:{to:{type:[String,Object],required:!0},disabled:Boolean},setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),ct=f({name:"Transition",props:{name:{type:String,default:"v"}},setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}}),lt=f({name:"TransitionGroup",props:{tag:{type:String,default:"span"},name:{type:String,default:"v"}},setup(i,{slots:e}){return()=>{var t;return st(i.tag,null,(t=e.default)==null?void 0:t.call(e))}}}),ut=f({name:"Suspense",setup(i,{slots:e}){return()=>{var t;return(t=e.default)==null?void 0:t.call(e)}}});var ft=!1;function mt(i=!0){ft=i}function gt(){return{...h,version:"3.x (Compat)"}}function xe(i){let e=[],t=i.split(`
20
+ `);for(let o=0;o<t.length;o++){let n=t[o],r=o+1;/from\s+['"]vue['"]/.test(n)&&e.push({type:"import",severity:"warning",description:'\u4ECE "vue" \u5BFC\u5165\u9700\u8981\u66FF\u6362\u4E3A "@lytjs/compat"',suggestion:'\u5C06 from "vue" \u66FF\u6362\u4E3A from "@lytjs/compat"',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vue['"]/,"from '@lytjs/compat'")}),/from\s+['"]vue-router['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"vue-router \u9700\u8981\u66FF\u6362\u4E3A @lytjs/router",suggestion:'\u5C06 from "vue-router" \u66FF\u6362\u4E3A from "@lytjs/router"',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vue-router['"]/,"from '@lytjs/router'")}),/from\s+['"]pinia['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"Pinia \u9700\u8981\u66FF\u6362\u4E3A @lytjs/store",suggestion:'\u5C06 from "pinia" \u66FF\u6362\u4E3A from "@lytjs/store"\uFF0C\u5E76\u8C03\u6574 API \u8C03\u7528',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]pinia['"]/,"from '@lytjs/store'")}),/from\s+['"]vuex['"]/.test(n)&&e.push({type:"ecosystem",severity:"warning",description:"Vuex \u9700\u8981\u66FF\u6362\u4E3A @lytjs/store",suggestion:'\u5C06 from "vuex" \u66FF\u6362\u4E3A from "@lytjs/store"\uFF0C\u5E76\u8C03\u6574 API \u8C03\u7528',line:r,original:n.trim(),replacement:n.trim().replace(/from\s+['"]vuex['"]/,"from '@lytjs/store'")}),/v-for=/.test(n)&&e.push({type:"directive",severity:"warning",description:"v-for \u9700\u8981\u8F6C\u6362\u4E3A v-each",suggestion:'\u5C06 v-for="..." \u66FF\u6362\u4E3A v-each="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-for=/,"v-each=")}),/v-if=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-if \u9700\u8981\u8F6C\u6362\u4E3A if",suggestion:'\u5C06 v-if="..." \u66FF\u6362\u4E3A if="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-if=/,"if=")}),/v-else-if=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-else-if \u9700\u8981\u8F6C\u6362\u4E3A else-if",suggestion:'\u5C06 v-else-if="..." \u66FF\u6362\u4E3A else-if="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-else-if=/,"else-if=")}),/\bv-else\b/.test(n)&&e.push({type:"directive",severity:"info",description:"v-else \u9700\u8981\u8F6C\u6362\u4E3A else",suggestion:"\u5C06 v-else \u66FF\u6362\u4E3A else",line:r,original:n.trim(),replacement:n.trim().replace(/\bv-else\b/,"else")}),/v-show=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-show \u9700\u8981\u8F6C\u6362\u4E3A show",suggestion:'\u5C06 v-show="..." \u66FF\u6362\u4E3A show="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-show=/,"show=")}),/v-model/.test(n)&&e.push({type:"directive",severity:"info",description:"v-model \u9700\u8981\u8F6C\u6362\u4E3A model",suggestion:'\u5C06 v-model="..." \u66FF\u6362\u4E3A model="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-model/,"model")}),/v-on:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-on: \u9700\u8981\u8F6C\u6362\u4E3A on:",suggestion:'\u5C06 v-on:click="..." \u66FF\u6362\u4E3A on:click="..." \u6216 @click="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-on:/,"on:")}),/v-bind:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-bind: \u53EF\u4EE5\u7B80\u5199\u4E3A :",suggestion:'\u5C06 v-bind:attr="..." \u66FF\u6362\u4E3A :attr="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-bind:/,":")}),/v-slot:/.test(n)&&e.push({type:"directive",severity:"info",description:"v-slot: \u9700\u8981\u8F6C\u6362\u4E3A slot:",suggestion:"\u5C06 v-slot:name \u66FF\u6362\u4E3A slot:name \u6216 #name",line:r,original:n.trim(),replacement:n.trim().replace(/v-slot:/,"slot:")}),/v-html=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-html \u9700\u8981\u8F6C\u6362\u4E3A html",suggestion:'\u5C06 v-html="..." \u66FF\u6362\u4E3A html="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-html=/,"html=")}),/v-text=/.test(n)&&e.push({type:"directive",severity:"info",description:"v-text \u9700\u8981\u8F6C\u6362\u4E3A text",suggestion:'\u5C06 v-text="..." \u66FF\u6362\u4E3A text="..."',line:r,original:n.trim(),replacement:n.trim().replace(/v-text=/,"text=")}),/v-memo/.test(n)&&e.push({type:"feature",severity:"error",description:"v-memo \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 computed \u5C5E\u6027\u66FF\u4EE3\u624B\u52A8\u7F13\u5B58\u903B\u8F91",line:r,original:n.trim()}),/\$refs/.test(n)&&e.push({type:"api",severity:"warning",description:"$refs \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 ref() \u548C\u6A21\u677F ref \u5C5E\u6027\u66FF\u4EE3",line:r,original:n.trim()}),/\$emit/.test(n)&&e.push({type:"api",severity:"warning",description:"$emit \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 setup \u4E0A\u4E0B\u6587\u4E2D\u7684 emit \u51FD\u6570\u66FF\u4EE3",line:r,original:n.trim()}),/\$el/.test(n)&&e.push({type:"api",severity:"warning",description:"$el \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 template ref \u66FF\u4EE3",line:r,original:n.trim()}),/\$parent/.test(n)&&e.push({type:"api",severity:"warning",description:"$parent \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 provide/inject \u66FF\u4EE3",line:r,original:n.trim()}),/\$children/.test(n)&&e.push({type:"api",severity:"error",description:"$children \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 provide/inject \u6216\u4E8B\u4EF6\u603B\u7EBF\u66FF\u4EE3",line:r,original:n.trim()}),/\$forceUpdate/.test(n)&&e.push({type:"api",severity:"warning",description:"$forceUpdate \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981",suggestion:"Lyt.js \u7684\u54CD\u5E94\u5F0F\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u89E6\u53D1\u66F4\u65B0",line:r,original:n.trim()}),/\$nextTick/.test(n)&&e.push({type:"api",severity:"info",description:"$nextTick \u9700\u8981\u66FF\u6362\u4E3A\u72EC\u7ACB\u7684 nextTick \u51FD\u6570",suggestion:'import { nextTick } from "@lytjs/compat"',line:r,original:n.trim()}),/defineProps/.test(n)&&e.push({type:"api",severity:"warning",description:"defineProps \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362",suggestion:"\u5728 defineComponent({ props: {...} }) \u4E2D\u5B9A\u4E49 props",line:r,original:n.trim()}),/defineEmits/.test(n)&&e.push({type:"api",severity:"warning",description:"defineEmits \u662F\u7F16\u8BD1\u5668\u5B8F\uFF0C\u9700\u8981\u624B\u52A8\u8F6C\u6362",suggestion:"\u5728 defineComponent({ emits: [...] }) \u4E2D\u5B9A\u4E49 emits",line:r,original:n.trim()}),/defineExpose/.test(n)&&e.push({type:"api",severity:"info",description:"defineExpose \u5728 Lyt.js \u4E2D\u4E0D\u9700\u8981",suggestion:"setup \u8FD4\u56DE\u503C\u81EA\u52A8\u66B4\u9732\u4E3A\u516C\u5171\u5C5E\u6027",line:r,original:n.trim()}),/<style[^>]*module/.test(n)&&e.push({type:"style",severity:"error",description:"CSS Modules \u5728 Lyt.js \u4E2D\u4E0D\u652F\u6301",suggestion:"\u4F7F\u7528 scoped \u6837\u5F0F\u66FF\u4EE3",line:r,original:n.trim()}),/<Teleport/.test(n)&&e.push({type:"component",severity:"info",description:"Teleport \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 Teleport",line:r}),/<Suspense/.test(n)&&e.push({type:"component",severity:"info",description:"Suspense \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 Suspense",line:r}),/<KeepAlive/.test(n)&&e.push({type:"component",severity:"info",description:"KeepAlive \u7EC4\u4EF6\u5DF2\u901A\u8FC7 @lytjs/compat \u63D0\u4F9B",suggestion:"\u786E\u4FDD\u4ECE @lytjs/compat \u5BFC\u5165 KeepAlive",line:r})}return e}function dt(i){if(i.length===0)return 100;let e=100;for(let t of i)switch(t.severity){case"error":e-=15;break;case"warning":e-=5;break;case"info":e-=1;break}return Math.max(0,Math.min(100,e))}function yt(i){let e=[],t=new Set;for(let o of i)if(o.severity==="error"||o.severity==="warning"){let n=`${o.type}:${o.description}`;t.has(n)||(t.add(n),e.push(`- [${o.severity.toUpperCase()}] ${o.description}: ${o.suggestion}`))}return e}function vt(i){let e=x(i),t=xe(i);for(let s of e.warnings)t.push({type:s.type,severity:"warning",description:s.message,suggestion:s.suggestion||""});let o=t.filter(s=>s.severity==="error").length,n=t.filter(s=>s.severity==="warning").length,r=t.filter(s=>s.severity==="info").length;return{code:e.code,issues:t,errorCount:o,warningCount:n,infoCount:r,compatibilityScore:dt(t),manualFixes:yt(t)}}function ht(i){return xe(i)}function xt(i){let e=[];if(e.push("========================================"),e.push(" Vue 3 -> Lyt.js \u8FC1\u79FB\u62A5\u544A"),e.push("========================================"),e.push(""),e.push(`\u517C\u5BB9\u6027\u8BC4\u5206: ${i.compatibilityScore}/100`),i.compatibilityScore>=80?e.push("\u8FC1\u79FB\u96BE\u5EA6: \u4F4E - \u5927\u90E8\u5206\u4EE3\u7801\u53EF\u4EE5\u81EA\u52A8\u8F6C\u6362"):i.compatibilityScore>=50?e.push("\u8FC1\u79FB\u96BE\u5EA6: \u4E2D - \u9700\u8981\u4E00\u4E9B\u624B\u52A8\u8C03\u6574"):e.push("\u8FC1\u79FB\u96BE\u5EA6: \u9AD8 - \u9700\u8981\u5927\u91CF\u624B\u52A8\u4FEE\u6539"),e.push(""),e.push("\u95EE\u9898\u7EDF\u8BA1:"),e.push(` \u9519\u8BEF: ${i.errorCount}`),e.push(` \u8B66\u544A: ${i.warningCount}`),e.push(` \u4FE1\u606F: ${i.infoCount}`),e.push(""),i.manualFixes.length>0){e.push("\u9700\u8981\u624B\u52A8\u4FEE\u6539\u7684\u90E8\u5206:");for(let t of i.manualFixes)e.push(` ${t}`);e.push("")}if(i.issues.length>0){e.push("\u8BE6\u7EC6\u95EE\u9898\u5217\u8868:"),e.push("");let t=new Map;for(let n of i.issues){let r=t.get(n.type)||[];r.push(n),t.set(n.type,r)}let o={import:"\u5BFC\u5165\u8BED\u53E5",directive:"\u6307\u4EE4\u8BED\u6CD5",lifecycle:"\u751F\u547D\u5468\u671F",api:"API \u5DEE\u5F02",component:"\u7EC4\u4EF6",style:"\u6837\u5F0F",feature:"\u4E0D\u652F\u6301\u7684\u529F\u80FD",ecosystem:"\u751F\u6001\u7CFB\u7EDF"};for(let[n,r]of t){e.push(` [${o[n]}]`);for(let s of r){let g=s.line?` (\u884C ${s.line})`:"";e.push(` ${s.severity.toUpperCase()}: ${s.description}${g}`),e.push(` \u5EFA\u8BAE: ${s.suggestion}`)}e.push("")}}return e.push("========================================"),e.join(`
21
+ `)}export{ae as Fragment,pt as KeepAlive,ut as Suspense,at as Teleport,ct as Transition,lt as TransitionGroup,u as VueSfcConverter,ht as analyzeVueFile,L as computed,tt as convertVueSfcToLyt,x as convertVueSfcToLytWithWarnings,it as createApp,gt as createCompatVue,ce as defineAsyncComponent,ot as defineComponent,ue as defineEmits,me as defineExpose,le as defineProps,V as effect,xt as formatMigrationReport,oe as getCurrentInstance,re as getCurrentScope,pe as h,G as inject,ve as isProxy,y as isReactive,v as isReadonly,M as isRef,W as markRaw,vt as migrateVueFile,K as nextTick,ee as onActivated,H as onBeforeMount,Q as onBeforeUnmount,J as onBeforeUpdate,te as onDeactivated,X as onErrorCaptured,N as onMounted,Y as onRenderTracked,Z as onRenderTriggered,se as onScopeDispose,ne as onServerPrefetch,q as onUnmounted,_ as onUpdated,z as provide,he as proxyRefs,E as reactive,P as readonly,T as ref,I as shallowReactive,j as shallowRef,D as toRaw,$ as toRef,A as toRefs,k as triggerRef,b as unref,de as useAttrs,mt as useCompatMode,ge as useSlots,ye as useTemplateRef,U as watch,B as watchEffect,F as watchPostEffect,O as watchSyncEffect,fe as withDefaults};
@@ -7,25 +7,25 @@
7
7
  * KeepAlive 组件
8
8
  * @see https://vuejs.org/api/built-in-components.html#keepalive
9
9
  */
10
- export declare const KeepAlive: import("@lytjs/component").ComponentDefine;
10
+ export declare const KeepAlive: any;
11
11
  /**
12
12
  * Teleport 组件
13
13
  * @see https://vuejs.org/api/built-in-components.html#teleport
14
14
  */
15
- export declare const Teleport: import("@lytjs/component").ComponentDefine;
15
+ export declare const Teleport: any;
16
16
  /**
17
17
  * Transition 组件
18
18
  * @see https://vuejs.org/api/built-in-components.html#transition
19
19
  */
20
- export declare const Transition: import("@lytjs/component").ComponentDefine;
20
+ export declare const Transition: any;
21
21
  /**
22
22
  * TransitionGroup 组件
23
23
  * @see https://vuejs.org/api/built-in-components.html#transitiongroup
24
24
  */
25
- export declare const TransitionGroup: import("@lytjs/component").ComponentDefine;
25
+ export declare const TransitionGroup: any;
26
26
  /**
27
27
  * Suspense 组件
28
28
  * @see https://vuejs.org/api/built-in-components.html#suspense
29
29
  */
30
- export declare const Suspense: import("@lytjs/component").ComponentDefine;
30
+ export declare const Suspense: any;
31
31
  //# sourceMappingURL=built-in-components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"built-in-components.d.ts","sourceRoot":"","sources":["../../src/built-in-components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,eAAO,MAAM,SAAS,4CAKpB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,4CASnB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,4CAQrB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,4CAS1B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,4CAKnB,CAAA"}
1
+ {"version":3,"file":"built-in-components.d.ts","sourceRoot":"","sources":["../../src/built-in-components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;GAGG;AACH,eAAO,MAAM,SAAS,KAKpB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,KASnB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,KAQrB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,KAS1B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,KAKnB,CAAA"}
@@ -5,11 +5,13 @@
5
5
  *
6
6
  * @module @lytjs/compat
7
7
  */
8
- export { ref, shallowRef, isRef, unref, toRef, toRefs, triggerRef, reactive, readonly, shallowReactive, toRaw, isReactive, isReadonly, markRaw, computed, watch, watchEffect, watchPostEffect, watchSyncEffect, effect, nextTick, provide, inject, onMounted, onUpdated, onUnmounted, onBeforeMount, onBeforeUpdate, onBeforeUnmount, onErrorCaptured, onRenderTracked, onRenderTriggered, onActivated, onDeactivated, onServerPrefetch, getCurrentInstance, getCurrentScope, onScopeDispose, } from './vue3-api';
9
- export { convertVueSfcToLyt, VueSfcConverter, } from './sfc-converter';
8
+ export { ref, shallowRef, isRef, unref, toRef, toRefs, triggerRef, reactive, readonly, shallowReactive, toRaw, isReactive, isReadonly, markRaw, computed, watch, watchEffect, watchPostEffect, watchSyncEffect, effect, nextTick, provide, inject, onMounted, onUpdated, onUnmounted, onBeforeMount, onBeforeUpdate, onBeforeUnmount, onErrorCaptured, onRenderTracked, onRenderTriggered, onActivated, onDeactivated, onServerPrefetch, getCurrentInstance, getCurrentScope, onScopeDispose, h, Fragment, defineAsyncComponent, defineProps, defineEmits, withDefaults, defineExpose, useSlots, useAttrs, useTemplateRef, isProxy, proxyRefs, } from './vue3-api';
9
+ export { convertVueSfcToLyt, convertVueSfcToLytWithWarnings, VueSfcConverter, } from './sfc-converter';
10
10
  export { createApp } from './create-app';
11
11
  export { defineComponent } from './define-component';
12
12
  export { KeepAlive, Teleport, Transition, TransitionGroup, Suspense, } from './built-in-components';
13
- export type { Ref, ComputedRef, WritableComputedRef, Reactive, UnwrapRef, ComponentPublicInstance, SetupContext, ComponentOptions, DefineComponent, App, AppConfig, Plugin, Directive, } from './types';
13
+ export type { Ref, ComputedRef, WritableComputedRef, Reactive, UnwrapRef, ComponentPublicInstance, SetupContext, ComponentOptions, DefineComponent, App, AppConfig, Plugin, Directive, DirectiveBinding, AsyncComponentLoader, AsyncComponentOptions, AsyncComponent, VNode, } from './types';
14
14
  export { createCompatVue, useCompatMode, } from './compat-mode';
15
+ export { migrateVueFile, analyzeVueFile, formatMigrationReport, } from './migrate';
16
+ export type { MigrationIssue, MigrationIssueType, MigrationSeverity, MigrationReport, } from './migrate';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,KAAK,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,GACT,MAAM,uBAAuB,CAAA;AAG9B,YAAY,EACV,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,GAAG,EACH,SAAS,EACT,MAAM,EACN,SAAS,GACV,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,KAAK,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,EAEd,CAAC,EACD,QAAQ,EAER,oBAAoB,EAEpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EAEZ,QAAQ,EACR,QAAQ,EACR,cAAc,EAEd,OAAO,EACP,SAAS,GACV,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,GACT,MAAM,uBAAuB,CAAA;AAG9B,YAAY,EACV,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,GAAG,EACH,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,KAAK,GACN,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,WAAW,CAAA;AAElB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,WAAW,CAAA"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Vue 3 到 Lyt.js 迁移工具
3
+ *
4
+ * 提供代码级别的迁移分析和转换功能,帮助用户从 Vue 3 平滑迁移到 Lyt.js。
5
+ */
6
+ /**
7
+ * 迁移问题类型
8
+ */
9
+ export type MigrationIssueType = 'import' | 'directive' | 'lifecycle' | 'api' | 'component' | 'style' | 'feature' | 'ecosystem';
10
+ /**
11
+ * 迁移问题严重程度
12
+ */
13
+ export type MigrationSeverity = 'error' | 'warning' | 'info';
14
+ /**
15
+ * 迁移问题
16
+ */
17
+ export interface MigrationIssue {
18
+ type: MigrationIssueType;
19
+ severity: MigrationSeverity;
20
+ description: string;
21
+ suggestion: string;
22
+ line?: number;
23
+ original?: string;
24
+ replacement?: string;
25
+ }
26
+ /**
27
+ * 迁移报告
28
+ */
29
+ export interface MigrationReport {
30
+ /** 转换后的代码 */
31
+ code: string;
32
+ /** 所有迁移问题 */
33
+ issues: MigrationIssue[];
34
+ /** 错误数量 */
35
+ errorCount: number;
36
+ /** 警告数量 */
37
+ warningCount: number;
38
+ /** 信息数量 */
39
+ infoCount: number;
40
+ /** 兼容性评分(0-100) */
41
+ compatibilityScore: number;
42
+ /** 需要手动修改的部分 */
43
+ manualFixes: string[];
44
+ }
45
+ /**
46
+ * 迁移 Vue 3 SFC 代码到 Lyt.js
47
+ *
48
+ * @param source - Vue 3 SFC 源代码
49
+ * @returns 迁移报告,包含转换后的代码和问题列表
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { migrateVueFile } from '@lytjs/compat/migrate'
54
+ *
55
+ * const report = migrateVueFile(`
56
+ * <template>
57
+ * <div v-if="show">{{ message }}</div>
58
+ * </template>
59
+ *
60
+ * <script setup>
61
+ * import { ref } from 'vue'
62
+ * const message = ref('Hello')
63
+ * </script>
64
+ * `)
65
+ *
66
+ * console.log(report.code) // 转换后的代码
67
+ * console.log(report.issues) // 迁移问题列表
68
+ * console.log(report.compatibilityScore) // 兼容性评分
69
+ * ```
70
+ */
71
+ export declare function migrateVueFile(source: string): MigrationReport;
72
+ /**
73
+ * 分析 Vue 3 代码的迁移可行性(不执行转换)
74
+ *
75
+ * @param source - Vue 3 SFC 源代码
76
+ * @returns 迁移问题列表
77
+ */
78
+ export declare function analyzeVueFile(source: string): MigrationIssue[];
79
+ /**
80
+ * 生成迁移摘要报告(文本格式)
81
+ *
82
+ * @param report - 迁移报告
83
+ * @returns 格式化的文本报告
84
+ */
85
+ export declare function formatMigrationReport(report: MigrationReport): string;
86
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,WAAW,GACX,WAAW,GACX,KAAK,GACL,WAAW,GACX,OAAO,GACP,SAAS,GACT,WAAW,CAAA;AAEf;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa;IACb,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,WAAW;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB;IAChB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAkbD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA+B9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAyErE"}
@@ -14,13 +14,43 @@ interface SFCParseResult {
14
14
  content: string;
15
15
  attrs: Record<string, string>;
16
16
  }>;
17
+ customBlocks: Array<{
18
+ tag: string;
19
+ content: string;
20
+ attrs: Record<string, string>;
21
+ }>;
22
+ }
23
+ /**
24
+ * 转换警告信息
25
+ */
26
+ interface ConversionWarning {
27
+ type: 'directive' | 'syntax' | 'api' | 'feature';
28
+ message: string;
29
+ line?: number;
30
+ suggestion?: string;
31
+ }
32
+ /**
33
+ * 转换结果
34
+ */
35
+ interface ConversionResult {
36
+ code: string;
37
+ warnings: ConversionWarning[];
17
38
  }
18
39
  /**
19
40
  * Vue SFC 转换器类
20
41
  */
21
42
  export declare class VueSfcConverter {
22
43
  private content;
44
+ private warnings;
23
45
  constructor(content: string);
46
+ /**
47
+ * 获取转换过程中的警告
48
+ */
49
+ getWarnings(): ConversionWarning[];
50
+ /**
51
+ * 添加警告
52
+ */
53
+ private addWarning;
24
54
  /**
25
55
  * 解析 Vue SFC
26
56
  */
@@ -33,6 +63,10 @@ export declare class VueSfcConverter {
33
63
  * 转换脚本
34
64
  */
35
65
  convertScript(script: string, isSetup?: boolean): string;
66
+ /**
67
+ * 将 <script setup> 语法转换为 setup() 函数
68
+ */
69
+ private convertScriptSetupToSetup;
36
70
  /**
37
71
  * 转换样式
38
72
  */
@@ -41,10 +75,18 @@ export declare class VueSfcConverter {
41
75
  * 执行完整转换
42
76
  */
43
77
  convert(): string;
78
+ /**
79
+ * 执行完整转换并返回结果(含警告)
80
+ */
81
+ convertWithWarnings(): ConversionResult;
44
82
  }
45
83
  /**
46
84
  * 便捷函数:转换 Vue SFC 内容为 Lyt.js SFC
47
85
  */
48
86
  export declare function convertVueSfcToLyt(content: string): string;
87
+ /**
88
+ * 便捷函数:转换 Vue SFC 内容并返回警告
89
+ */
90
+ export declare function convertVueSfcToLytWithWarnings(content: string): ConversionResult;
49
91
  export {};
50
92
  //# sourceMappingURL=sfc-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sfc-converter.d.ts","sourceRoot":"","sources":["../../src/sfc-converter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CAClE;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACH,KAAK,IAAI,cAAc;IAiDvB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqBzC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,MAAM;IAmB/D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,MAAM;IAgBvD;;OAEG;IACH,OAAO,IAAI,MAAM;CAgClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D"}
1
+ {"version":3,"file":"sfc-converter.d.ts","sourceRoot":"","sources":["../../src/sfc-converter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;IACjE,YAAY,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CACrF;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAC9B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAA0B;gBAE9B,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAIlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,KAAK,IAAI,cAAc;IAiFvB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IA4EzC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,MAAM;IA4F/D;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA8BjC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,MAAM;IA0BvD;;OAEG;IACH,OAAO,IAAI,MAAM;IA2CjB;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;CAKxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAGhF"}
@@ -164,13 +164,57 @@ export type Plugin = ((app: App, ...options: any[]) => any) | {
164
164
  * 指令类型
165
165
  * @see https://vuejs.org/guide/reusability/custom-directives.html
166
166
  */
167
- export interface Directive {
168
- created?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
169
- beforeMount?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
170
- mounted?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
171
- beforeUpdate?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
172
- updated?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
173
- beforeUnmount?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
174
- unmounted?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
167
+ export interface Directive<T = any, V = any> {
168
+ created?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
169
+ beforeMount?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
170
+ mounted?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
171
+ beforeUpdate?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
172
+ updated?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
173
+ beforeUnmount?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
174
+ unmounted?: (el: any, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => void;
175
+ get?: (el: T, binding: DirectiveBinding<V>, vnode: any, prevVnode: any) => V;
176
+ set?: (el: T, binding: DirectiveBinding<V>, vnode: any, prevVnode: any, prevValue: V) => void;
177
+ }
178
+ /**
179
+ * 指令绑定值
180
+ */
181
+ export interface DirectiveBinding<V = any> {
182
+ instance: ComponentPublicInstance | null;
183
+ value: V;
184
+ oldValue: V | null;
185
+ arg?: string;
186
+ modifiers: Record<string, boolean>;
187
+ dir: Directive<any, V>;
188
+ }
189
+ /**
190
+ * 异步组件加载器
191
+ */
192
+ export type AsyncComponentLoader<T = any> = () => Promise<T>;
193
+ /**
194
+ * 异步组件选项
195
+ */
196
+ export interface AsyncComponentOptions<T = any> {
197
+ loader: AsyncComponentLoader<T>;
198
+ loadingComponent?: any;
199
+ errorComponent?: any;
200
+ delay?: number;
201
+ timeout?: number;
202
+ suspensible?: boolean;
203
+ onError?: (error: Error, retry: () => void, fail: () => void, attempts: number) => any;
204
+ }
205
+ /**
206
+ * 异步组件类型
207
+ */
208
+ export type AsyncComponent<T = any> = AsyncComponentOptions<T> | AsyncComponentLoader<T>;
209
+ /**
210
+ * VNode 类型(简化版)
211
+ */
212
+ export interface VNode {
213
+ type: any;
214
+ props: Record<string, any> | null;
215
+ children: any;
216
+ key: string | number | null;
217
+ ref: any;
218
+ el: any;
175
219
  }
176
220
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@
4
4
  * 重新导出 Lyt.js 的响应式 API,并提供 Vue 3 特有的 API
5
5
  */
6
6
  import { ref as lytRef, shallowRef as lytShallowRef, isRef as lytIsRef, unref as lytUnref, toRef as lytToRef, toRefs as lytToRefs, triggerRef as lytTriggerRef, reactive as lytReactive, readonly as lytReadonly, shallowReactive as lytShallowReactive, toRaw as lytToRaw, isReactive as lytIsReactive, isReadonly as lytIsReadonly, computed as lytComputed, watch as lytWatch, watchEffect as lytWatchEffect, effect as lytEffect, nextTick as lytNextTick } from '@lytjs/reactivity';
7
- import { provide as lytProvide, inject as lytInject, compositionOnBeforeMount as lytOnBeforeMount } from '@lytjs/component';
7
+ import { provide as lytProvide, inject as lytInject, compositionOnBeforeMount as lytOnBeforeMount, defineEmits as lytDefineEmits } from '@lytjs/component';
8
+ import { h as lytH } from '@lytjs/core';
9
+ import { defineAsyncComponent as lytDefineAsyncComponent } from '@lytjs/component/builtins/async-component';
8
10
  /**
9
11
  * 创建响应式引用
10
12
  * @see https://vuejs.org/api/reactivity-core.html#ref
@@ -199,4 +201,78 @@ export declare function getCurrentScope(): any;
199
201
  * @see https://vuejs.org/api/reactivity-advanced.html#onscopedispose
200
202
  */
201
203
  export declare function onScopeDispose(fn: () => void): void;
204
+ /**
205
+ * 创建虚拟节点
206
+ * @see https://vuejs.org/api/render-function.html#h
207
+ */
208
+ export declare const h: typeof lytH;
209
+ /**
210
+ * Fragment 片段组件
211
+ * @see https://vuejs.org/api/render-function.html#fragment
212
+ */
213
+ export declare const Fragment: symbol;
214
+ /**
215
+ * 定义异步组件
216
+ * @see https://vuejs.org/api/general.html#defineasynccomponent
217
+ */
218
+ export declare const defineAsyncComponent: typeof lytDefineAsyncComponent;
219
+ /**
220
+ * 定义组件 props(编译器宏占位)
221
+ *
222
+ * 在 Lyt.js 中,props 通过 defineComponent 的 props 选项定义。
223
+ * 此函数仅用于代码兼容,运行时返回空对象。
224
+ *
225
+ * @see https://vuejs.org/api/sfc-script-setup.html#defineprops
226
+ */
227
+ export declare function defineProps<T = any>(): T;
228
+ /**
229
+ * 定义组件 emits(编译器宏占位)
230
+ *
231
+ * 在 Lyt.js 中,emits 通过 defineComponent 的 emits 选项定义。
232
+ * 此函数包装了 @lytjs/component 的 defineEmits。
233
+ *
234
+ * @see https://vuejs.org/api/sfc-script-setup.html#defineemits
235
+ */
236
+ export declare const defineEmits: typeof lytDefineEmits;
237
+ /**
238
+ * 为 props 设置默认值(编译器宏占位)
239
+ *
240
+ * @see https://vuejs.org/api/sfc-script-setup.html#withdefaults
241
+ */
242
+ export declare function withDefaults<T, D>(props: T, defaults: D): T & D;
243
+ /**
244
+ * 暴露组件公共属性(编译器宏占位)
245
+ *
246
+ * 在 Lyt.js 中,setup 返回的对象自动暴露为公共属性。
247
+ *
248
+ * @see https://vuejs.org/api/sfc-script-setup.html#defineexpose
249
+ */
250
+ export declare function defineExpose<T = any>(exposed?: T): void;
251
+ /**
252
+ * 使用插槽(占位)
253
+ * @see https://vuejs.org/api/composition-api-setup.html#useslots
254
+ */
255
+ export declare function useSlots(): Record<string, any>;
256
+ /**
257
+ * 使用 attrs(占位)
258
+ * @see https://vuejs.org/api/composition-api-setup.html#useattrs
259
+ */
260
+ export declare function useAttrs(): Record<string, any>;
261
+ /**
262
+ * 使用模板引用(占位)
263
+ * @see https://vuejs.org/api/composition-api-setup.html#usetemplateRef
264
+ */
265
+ export declare function useTemplateRef<T = any>(key: string): {
266
+ value: T | null;
267
+ };
268
+ /**
269
+ * 检查值是否为代理对象(reactive / readonly)
270
+ * @see https://vuejs.org/api/reactivity-utilities.html#isproxy
271
+ */
272
+ export declare function isProxy(value: unknown): boolean;
273
+ /**
274
+ * 将 ref 标记为不再需要跟踪
275
+ * @see https://vuejs.org/api/reactivity-utilities.html#toraw
276
+ */
277
+ export declare function proxyRefs<T extends object>(objectWithRefs: T): T;
202
278
  //# sourceMappingURL=vue3-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue3-api.d.ts","sourceRoot":"","sources":["../../src/vue3-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vue3-api.d.ts","sourceRoot":"","sources":["../../src/vue3-api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lytjs/compat",
3
- "version": "4.2.0",
3
+ "version": "5.0.1",
4
4
  "description": "Lyt.js Vue 3 兼容层 - 提供与 Vue 3 兼容的 API 和工具",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -11,12 +11,6 @@
11
11
  "import": "./dist/index.mjs",
12
12
  "require": "./dist/index.cjs",
13
13
  "default": "./dist/index.mjs"
14
- },
15
- "./vite": {
16
- "types": "./dist/types/vite.d.ts",
17
- "import": "./dist/vite.mjs",
18
- "require": "./dist/vite.cjs",
19
- "default": "./dist/vite.mjs"
20
14
  }
21
15
  },
22
16
  "bin": {
@@ -47,9 +41,8 @@
47
41
  "access": "public"
48
42
  },
49
43
  "dependencies": {
50
- "@lytjs/core": "^4.2.0",
51
- "@lytjs/reactivity": "^4.2.0",
52
- "@lytjs/component": "^4.2.0"
53
- },
54
- "devDependencies": {}
44
+ "@lytjs/core": "^5.0.1",
45
+ "@lytjs/reactivity": "^5.0.1",
46
+ "@lytjs/component": "^5.0.1"
47
+ }
55
48
  }