@lytjs/compat 5.0.1 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env node
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:""}>
7
- ${s.content}
8
- </style>`)}return t.join(`
9
-
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(`
19
-
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(`
21
- vue-to-lyt - \u5C06 Vue \u9879\u76EE\u8F6C\u6362\u4E3A Lyt.js \u9879\u76EE
22
-
23
- \u7528\u6CD5:
24
- vue-to-lyt <input> [options]
25
-
26
- \u9009\u9879:
27
- -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F
28
- -o, --output \u6307\u5B9A\u8F93\u51FA\u76EE\u5F55\uFF08\u53EF\u9009\uFF09
29
- -r, --recursive \u9012\u5F52\u5904\u7406\u76EE\u5F55
30
- -d, --dry-run \u9884\u89C8\u8F6C\u6362\uFF0C\u4E0D\u5B9E\u9645\u5199\u5165\u6587\u4EF6
31
-
32
- \u793A\u4F8B:
33
- # \u8F6C\u6362\u5355\u4E2A\u6587\u4EF6
34
- vue-to-lyt ./src/MyComponent.vue
35
-
36
- # \u8F6C\u6362\u6574\u4E2A\u76EE\u5F55
37
- vue-to-lyt ./src --recursive
38
-
39
- # \u8F6C\u6362\u5230\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
40
- vue-to-lyt ./src --recursive --output ./lyt-src
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();
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * vue-to-lyt CLI 工具
4
- *
5
- * 将 Vue 项目转换为 Lyt.js 项目
6
- */
7
- export {};
8
- //# sourceMappingURL=vue-to-lyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue-to-lyt.d.ts","sourceRoot":"","sources":["../../../src/bin/vue-to-lyt.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -1,31 +0,0 @@
1
- /**
2
- * 内置组件兼容层
3
- *
4
- * 提供与 Vue 3 兼容的内置组件
5
- */
6
- /**
7
- * KeepAlive 组件
8
- * @see https://vuejs.org/api/built-in-components.html#keepalive
9
- */
10
- export declare const KeepAlive: any;
11
- /**
12
- * Teleport 组件
13
- * @see https://vuejs.org/api/built-in-components.html#teleport
14
- */
15
- export declare const Teleport: any;
16
- /**
17
- * Transition 组件
18
- * @see https://vuejs.org/api/built-in-components.html#transition
19
- */
20
- export declare const Transition: any;
21
- /**
22
- * TransitionGroup 组件
23
- * @see https://vuejs.org/api/built-in-components.html#transitiongroup
24
- */
25
- export declare const TransitionGroup: any;
26
- /**
27
- * Suspense 组件
28
- * @see https://vuejs.org/api/built-in-components.html#suspense
29
- */
30
- export declare const Suspense: any;
31
- //# sourceMappingURL=built-in-components.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * 兼容模式工具
3
- *
4
- * 提供 Vue 3 兼容模式的相关工具
5
- */
6
- /**
7
- * 启用 Vue 3 兼容模式
8
- */
9
- export declare function useCompatMode(enabled?: boolean): void;
10
- /**
11
- * 检查是否在 Vue 3 兼容模式下
12
- */
13
- export declare function isCompatMode(): boolean;
14
- /**
15
- * 创建兼容的 Vue 3 风格对象
16
- */
17
- export declare function createCompatVue(): any;
18
- //# sourceMappingURL=compat-mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compat-mode.d.ts","sourceRoot":"","sources":["../../src/compat-mode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,GAAG,CAKrC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * createApp 兼容层
3
- *
4
- * 提供与 Vue 3 兼容的 createApp API
5
- */
6
- import type { App } from './types';
7
- /**
8
- * 创建应用实例
9
- * @see https://vuejs.org/api/application.html#createapp
10
- */
11
- export declare function createApp(rootComponent: any, rootProps?: any): App;
12
- //# sourceMappingURL=create-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../src/create-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAuC,MAAM,SAAS,CAAA;AAEvE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CA0DlE"}
@@ -1,12 +0,0 @@
1
- /**
2
- * defineComponent 兼容层
3
- *
4
- * 提供与 Vue 3 兼容的 defineComponent API
5
- */
6
- import type { ComponentOptions, DefineComponent } from './types';
7
- /**
8
- * 定义组件
9
- * @see https://vuejs.org/api/general.html#definecomponent
10
- */
11
- export declare function defineComponent<Props = any, RawBindings = any, D = any, C extends Record<string, any> = any, M extends Record<string, any> = any, Mixin extends ComponentOptions = any, Extends extends ComponentOptions = any, E extends Record<string, any> = any, EE extends string = string, I extends Record<string, any> = any, II extends string = string, S extends Record<string, any> = any, PP = Props>(options: any): DefineComponent;
12
- //# sourceMappingURL=define-component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define-component.d.ts","sourceRoot":"","sources":["../../src/define-component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAA;AAE9E;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,GAAG,GAAG,EACX,WAAW,GAAG,GAAG,EACjB,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,KAAK,SAAS,gBAAgB,GAAG,GAAG,EACpC,OAAO,SAAS,gBAAgB,GAAG,GAAG,EACtC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EACnC,EAAE,GAAG,KAAK,EACV,OAAO,EAAE,GAAG,GAAG,eAAe,CAc/B"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Lyt.js Vue 3 兼容层
3
- *
4
- * 提供与 Vue 3 完全兼容的 API,使 Vue 3 用户可以无缝迁移到 Lyt.js
5
- *
6
- * @module @lytjs/compat
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, h, Fragment, defineAsyncComponent, defineProps, defineEmits, withDefaults, defineExpose, useSlots, useAttrs, useTemplateRef, isProxy, proxyRefs, } from './vue3-api';
9
- export { convertVueSfcToLyt, convertVueSfcToLytWithWarnings, VueSfcConverter, } from './sfc-converter';
10
- export { createApp } from './create-app';
11
- export { defineComponent } from './define-component';
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, DirectiveBinding, AsyncComponentLoader, AsyncComponentOptions, AsyncComponent, VNode, } from './types';
14
- export { createCompatVue, useCompatMode, } from './compat-mode';
15
- export { migrateVueFile, analyzeVueFile, formatMigrationReport, } from './migrate';
16
- export type { MigrationIssue, MigrationIssueType, MigrationSeverity, MigrationReport, } from './migrate';
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,86 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,92 +0,0 @@
1
- /**
2
- * Vue SFC 转换器
3
- *
4
- * 将 Vue 的 .vue 文件转换为 Lyt.js 的 .lyt 文件
5
- */
6
- /**
7
- * SFC 解析结果
8
- */
9
- interface SFCParseResult {
10
- template: string | null;
11
- script: string | null;
12
- scriptSetup: string | null;
13
- styles: Array<{
14
- content: string;
15
- attrs: Record<string, string>;
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[];
38
- }
39
- /**
40
- * Vue SFC 转换器类
41
- */
42
- export declare class VueSfcConverter {
43
- private content;
44
- private warnings;
45
- constructor(content: string);
46
- /**
47
- * 获取转换过程中的警告
48
- */
49
- getWarnings(): ConversionWarning[];
50
- /**
51
- * 添加警告
52
- */
53
- private addWarning;
54
- /**
55
- * 解析 Vue SFC
56
- */
57
- parse(): SFCParseResult;
58
- /**
59
- * 转换模板语法
60
- */
61
- convertTemplate(template: string): string;
62
- /**
63
- * 转换脚本
64
- */
65
- convertScript(script: string, isSetup?: boolean): string;
66
- /**
67
- * 将 <script setup> 语法转换为 setup() 函数
68
- */
69
- private convertScriptSetupToSetup;
70
- /**
71
- * 转换样式
72
- */
73
- convertStyles(styles: SFCParseResult['styles']): string;
74
- /**
75
- * 执行完整转换
76
- */
77
- convert(): string;
78
- /**
79
- * 执行完整转换并返回结果(含警告)
80
- */
81
- convertWithWarnings(): ConversionResult;
82
- }
83
- /**
84
- * 便捷函数:转换 Vue SFC 内容为 Lyt.js SFC
85
- */
86
- export declare function convertVueSfcToLyt(content: string): string;
87
- /**
88
- * 便捷函数:转换 Vue SFC 内容并返回警告
89
- */
90
- export declare function convertVueSfcToLytWithWarnings(content: string): ConversionResult;
91
- export {};
92
- //# sourceMappingURL=sfc-converter.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,220 +0,0 @@
1
- /**
2
- * Vue 3 兼容类型定义
3
- */
4
- import type { Ref as LytRef, ComputedRef as LytComputedRef, WritableComputedRef as LytWritableComputedRef } from '@lytjs/reactivity';
5
- /**
6
- * Ref 类型
7
- * @see https://vuejs.org/api/reactivity-core.html#ref
8
- */
9
- export type Ref<T = any> = LytRef<T>;
10
- /**
11
- * 计算属性类型(只读)
12
- * @see https://vuejs.org/api/reactivity-core.html#computed
13
- */
14
- export type ComputedRef<T = any> = LytComputedRef<T>;
15
- /**
16
- * 可写计算属性类型
17
- * @see https://vuejs.org/api/reactivity-core.html#computed
18
- */
19
- export type WritableComputedRef<T = any> = LytWritableComputedRef<T>;
20
- /**
21
- * 响应式对象类型
22
- * @see https://vuejs.org/api/reactivity-core.html#reactive
23
- */
24
- export type Reactive<T = any> = T;
25
- /**
26
- * 解包 Ref 类型
27
- * @see https://vuejs.org/api/reactivity-utilities.html#unref
28
- */
29
- export type UnwrapRef<T> = T extends Ref<infer V> ? V : T;
30
- /**
31
- * 组件公共实例类型
32
- * @see https://vuejs.org/api/component-instance.html
33
- */
34
- export interface ComponentPublicInstance {
35
- $el: any;
36
- $data: any;
37
- $props: any;
38
- $attrs: any;
39
- $slots: any;
40
- $refs: any;
41
- $parent: any;
42
- $root: any;
43
- $emit: (event: string, ...args: any[]) => void;
44
- $forceUpdate: () => void;
45
- $nextTick: (fn: () => void) => Promise<void>;
46
- }
47
- /**
48
- * Setup 上下文类型
49
- * @see https://vuejs.org/api/composition-api-setup.html#setup-context
50
- */
51
- export interface SetupContext {
52
- attrs: Record<string, any>;
53
- slots: Record<string, any>;
54
- emit: (event: string, ...args: any[]) => void;
55
- expose: (exposed?: Record<string, any>) => void;
56
- }
57
- /**
58
- * 组件选项类型
59
- * @see https://vuejs.org/api/options-state.html
60
- */
61
- export interface ComponentOptions {
62
- name?: string;
63
- props?: any;
64
- emits?: any;
65
- data?: () => object;
66
- computed?: Record<string, any>;
67
- methods?: Record<string, Function>;
68
- watch?: Record<string, any>;
69
- setup?: (props: any, ctx: SetupContext) => any;
70
- render?: () => any;
71
- template?: string;
72
- components?: Record<string, any>;
73
- directives?: Record<string, any>;
74
- provide?: any;
75
- inject?: any;
76
- beforeCreate?: () => void;
77
- created?: () => void;
78
- beforeMount?: () => void;
79
- mounted?: () => void;
80
- beforeUpdate?: () => void;
81
- updated?: () => void;
82
- beforeUnmount?: () => void;
83
- unmounted?: () => void;
84
- errorCaptured?: (err: any, instance: any, info: string) => boolean | void;
85
- }
86
- /**
87
- * defineComponent 返回类型
88
- * @see https://vuejs.org/api/general.html#definecomponent
89
- */
90
- export type DefineComponent<Props = any, RawBindings = any, D = any, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, PP = Props> = any;
91
- /**
92
- * 计算选项类型
93
- */
94
- export interface ComputedOptions {
95
- [key: string]: ((...args: any[]) => any) | {
96
- get?: (...args: any[]) => any;
97
- set?: (v: any) => any;
98
- };
99
- }
100
- /**
101
- * 方法选项类型
102
- */
103
- export interface MethodOptions {
104
- [key: string]: (...args: any[]) => any;
105
- }
106
- /**
107
- * 组件混入选项类型
108
- */
109
- export type ComponentOptionsMixin = ComponentOptions;
110
- /**
111
- * 触发选项类型
112
- */
113
- export interface EmitsOptions {
114
- [key: string]: ((...args: any[]) => any) | null;
115
- }
116
- /**
117
- * 组件注入选项类型
118
- */
119
- export type ComponentInjectOptions = string[] | {
120
- [key: string]: string | symbol | {
121
- from?: string | symbol;
122
- default?: any;
123
- };
124
- };
125
- /**
126
- * 插槽类型
127
- */
128
- export type SlotsType = {
129
- [key: string]: any;
130
- };
131
- /**
132
- * App 实例类型
133
- * @see https://vuejs.org/api/application.html
134
- */
135
- export interface App {
136
- config: AppConfig;
137
- use(plugin: Plugin, ...options: any[]): this;
138
- mixin(mixin: ComponentOptions): this;
139
- component(name: string, component?: any): any;
140
- directive(name: string, directive?: Directive): any;
141
- mount(rootContainer: any, isHydrate?: boolean): ComponentPublicInstance;
142
- unmount(): void;
143
- provide<T>(key: string | symbol, value: T): this;
144
- }
145
- /**
146
- * App 配置类型
147
- * @see https://vuejs.org/api/application.html#app-config
148
- */
149
- export interface AppConfig {
150
- errorHandler?: (err: any, instance: any, info: string) => void;
151
- warnHandler?: (msg: string, instance: any, trace: string) => void;
152
- performance?: boolean;
153
- compilerOptions?: any;
154
- globalProperties?: any;
155
- }
156
- /**
157
- * 插件类型
158
- * @see https://vuejs.org/guide/reusability/plugins.html
159
- */
160
- export type Plugin = ((app: App, ...options: any[]) => any) | {
161
- install: (app: App, ...options: any[]) => any;
162
- };
163
- /**
164
- * 指令类型
165
- * @see https://vuejs.org/guide/reusability/custom-directives.html
166
- */
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;
219
- }
220
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}