@vtj/coder 0.17.7 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +83 -35
- package/dist/index.mjs +1210 -408
- package/package.json +7 -5
- package/types/collecter.d.ts +3 -0
- package/types/index.d.ts +1 -0
- package/types/parser/composition/composables.d.ts +18 -0
- package/types/parser/composition/computed.d.ts +8 -0
- package/types/parser/composition/globalApi.d.ts +49 -0
- package/types/parser/composition/imports.d.ts +31 -0
- package/types/parser/composition/index.d.ts +63 -0
- package/types/parser/composition/inject.d.ts +8 -0
- package/types/parser/composition/lifeCycles.d.ts +23 -0
- package/types/parser/composition/methods.d.ts +18 -0
- package/types/parser/composition/provide.d.ts +9 -0
- package/types/parser/composition/reactives.d.ts +11 -0
- package/types/parser/composition/refs.d.ts +8 -0
- package/types/parser/composition/setupStatements.d.ts +24 -0
- package/types/parser/composition/symbolTable.d.ts +32 -0
- package/types/parser/composition/template.d.ts +17 -0
- package/types/parser/composition/transformer.d.ts +38 -0
- package/types/parser/composition/watch.d.ts +9 -0
- package/types/parser/functions.d.ts +2 -2
- package/types/parser/imports.d.ts +1 -1
- package/types/templates.d.ts +1 -0
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,53 +1,76 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@vtj/base"),W=require("prettier/standalone"),je=require("prettier/plugins/html"),ke=require("prettier/plugins/babel"),we=require("prettier/plugins/postcss"),Ae=require("prettier/plugins/estree");function L(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,n.get?n:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const Oe=L(je),Q=L(ke),X=L(we),Y=L(Ae);/**!
|
|
2
2
|
* Copyright (c) 2026, VTJ.PRO All rights reserved.
|
|
3
3
|
* @name @vtj/coder
|
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
|
5
|
-
* @version 0.
|
|
5
|
+
* @version 0.18.0
|
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
|
7
|
-
*/const
|
|
7
|
+
*/const Ie="0.18.0";/**!
|
|
8
8
|
* Copyright (c) 2026, VTJ.PRO All rights reserved.
|
|
9
9
|
* @name @vtj/core
|
|
10
10
|
* @author CHC chenhuachun1549@dingtalk.com
|
|
11
|
-
* @version 0.
|
|
11
|
+
* @version 0.18.0
|
|
12
12
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
|
13
|
-
*/const
|
|
13
|
+
*/const Ce=["slot","template","component","img","div","p","h1","h2","h3","span","a"];b.mitt();const q={arrowParens:"always",bracketSpacing:!0,bracketSameLine:!0,endOfLine:"lf",htmlWhitespaceSensitivity:"css",insertPragma:!1,jsxBracketSameLine:!0,jsxSingleQuote:!0,printWidth:80,proseWrap:"preserve",quoteProps:"as-needed",requirePragma:!1,semi:!0,singleQuote:!0,tabWidth:2,trailingComma:"none",useTabs:!1,vueIndentScriptAndStyle:!0,removeBlankLines:!0};async function H(t,e){return e?t:await W.format(t,{parser:"vue",...q,plugins:[Oe,Q,Y,X]})}async function K(t,e){if(e)return t;try{return(await W.format(t,{parser:"babel-ts",...q,plugins:[Q,Y]})).replace(/;\n$/gi,"")}catch(s){return console.warn(s),t}}async function F(t,e){return e?t:W.format(t,{parser:"scss",...q,plugins:[X]})}function B(t){return t&&t.type==="JSExpression"}function T(t){return typeof t=="object"&&t&&t.type==="JSFunction"}function j(t){return B(t)||T(t)}function ee(t){return t.replace(new RegExp("this.","g"),"")}function J(t){return t.replace(/this\.context\??\./g,"")}function y(t,e=!0,s=!0,n=[],o=!0){let r=t;return j(t)?(r=t.value.trim().replace(/;$/,""),o&&(r=r.replace(/\"/g,"'"))):r=e?JSON.stringify(r):t,r=M(r,n),s?ee(J(r)):J(r)}function M(t="",e=[]){let s=t;for(const n of e)s=s.replace(new RegExp(`this.${n}.value`,"g"),`this.${n}`);return s}function te(t){let e=t.trim().replace(/;$/,"");if(e=/^\((\(|async|function)/.test(e)?e.substring(1,e.length-1):e,e.startsWith("{"))return e;if(e.startsWith("async function"))e=e.replace(/^async function/,"async");else if(e.startsWith("function"))e=e.replace(/^function/,"");else{const o=/^(async\s)?\([\w]*\)\s+\=\>\s([\w\W]+)/,r=e.match(o);r&&r[2]&&(r[2].startsWith("{")||(e=e.replace(r[2],`{ return ${r[2]} }`))),e=e.replace("=>","")}return e}function Pe(t={}){return Object.entries(t).map(([e,s])=>`"${e}": ${y(s)}`)}function se(t={},e=!1){const s=Object.keys(t);return e?s.map(n=>"."+n):s}function xe(t){let e="";for(var s in t)if(t.hasOwnProperty(s)){var n=t[s];e+=s+": "+n+";"}return e}function Ee(t=[],e=[]){return t.filter(s=>!e.includes(s))}function z(t){return b.base64(JSON.stringify(t))}class Ne{constructor(e,s){this.dsl=e,this.dependencies=s,this.collectEasycom(),this.libraryRegex=this.collectLibrary(),this.walk(e),this.walkNodes(e),this.members=this.getLibraryMember()}imports={};context={};style={};members=[];urlSchemas={};blockPlugins={};easycomPackages=new Set;libraryRegex=[];collectEasycom(){for(const e of this.dependencies)e.easycom?.key&&e.easycom?.value&&e.package&&this.easycomPackages.add(e.package)}collectLibrary(){return this.dependencies.filter(e=>!!e.library).map(e=>new RegExp(`(this.\\$libs.${e.library}.([\\w]+))`,"g"))}collectImport(e){const s=e.split(".");if(s.length===4){const n=s.pop(),o=s.join(".")+".",r=s.pop();if(n&&r){const c=this.dependencies.find(a=>a.library===r)?.package;c&&!this.easycomPackages.has(c)&&(this.imports[c]||(this.imports[c]=new Set)).add(n)}return{name:n,path:o,library:r}}return null}replaceLibraryPath(e){const{libraryRegex:s}=this;let n=e.value;for(const o of s){const r=e.value?.match(o)||[];for(const c of r){const a=this.collectImport(c);if(a){const l=a.path.replace(/\$/g,"\\$");n=n.replace(new RegExp(l,"g"),"")}}}return n}walk(e){const s=n=>{if(!n||typeof n!="object")return;if(Array.isArray(n)){for(let r of n)s(r);return}const o=Object.values(n);for(const r of o)j(r)?r.value=this.replaceLibraryPath(r):s(r)};s(e)}getLibraryMember(e=[]){let s=[...e];const n={...this.imports};delete n["uni-h5"],delete n["@dcloudio/uni-h5"],delete n["uni-ui"],delete n["@dcloudio/uni-ui"];for(const o of Object.values(n))s=s.concat(Array.from(o));return b.dedupArray(s)}collectContext(e,s){const n=new Set(s?.id?this.context[s.id]:[]),o=(e.directives||[]).find(a=>a.name==="vFor");let r=new Set(Array.from(n));if(o){const{item:a="item",index:l="index"}=o.iterator||{};r=new Set([a,l,...Array.from(r)])}const c=e.slot;if(c){const a=typeof c=="string"?[]:c.params||[],l=a.length?a:[`scope_${s?.id}`];r=new Set([...l,...Array.from(r)])}this.context[e.id]=r}collectStyle(e){e.id&&e.props?.style&&Object.keys(e.props.style).length&&!j(e.props.style)&&(this.style[`.${e.name}_${e.id}`]=e.props.style)}collectUrlSchema(e){typeof e.from=="object"&&e.from.type==="UrlSchema"&&(this.urlSchemas[e.name]=e.from)}collectBlockPlugin(e){typeof e.from=="object"&&e.from.type==="Plugin"&&(this.blockPlugins[e.name]=e.from)}walkNodes(e){const s=(n,o)=>{this.collectContext(n,o),this.collectStyle(n),this.collectUrlSchema(n),this.collectBlockPlugin(n),Array.isArray(n.children)&&n.children.forEach(r=>s(r,n))};Array.isArray(e.nodes)&&e.nodes.forEach(n=>s(n))}}function Be(t={}){return Object.entries(t).map(([e,s])=>{const n=y(s,!1,!0,[],!1);return`${e}:${n}`})}function Me(t=[]){return t.map(e=>`${e.name}: {
|
|
14
14
|
from: '${e.from||e.name}',
|
|
15
|
-
default: ${
|
|
16
|
-
}`)}function
|
|
15
|
+
default: ${y(e.default,!0,!1,[],!1)}
|
|
16
|
+
}`)}function ne(t=[]){const e=s=>s?`[${b.toArray(s).map(r=>r.replace(/\'|\"/gi,"")).join(",")}]`:void 0;return t.map(s=>typeof s=="string"?`${s}: {}`:(j(s.default)&&!s.default.value&&(s.default.value="undefined"),`${s.name}: {
|
|
17
17
|
type:${e(s.type)},
|
|
18
|
-
required: ${
|
|
19
|
-
default: ${s.default?
|
|
20
|
-
}`))}function
|
|
18
|
+
required: ${y(!!s.required,!0,!1,[],!1)},
|
|
19
|
+
default: ${s.default?y(s.default,!0,!1,[],!1):"undefined"}
|
|
20
|
+
}`))}function re(t=[]){return t.map(e=>`'${typeof e=="string"?e:e.name}'`)}function D(t={},e=[]){return Object.entries(t).map(([s,n])=>{let o=te(y(n,!1,!1,[],!1));return o=M(o,e)?.trim(),o.startsWith("async")?`async ${s}${o.replace(/^async/,"")}`:o.startsWith("(")||o.startsWith("{")?`${s}${o}`:null}).filter(s=>!!s)}function Te(t=[],e=[]){const s=t.reduce((r,c)=>(c.id&&T(c.source)&&(r[`watcher_${c.id}`]=c.source),r),{}),n=D(s,e),o=t.map(r=>r.handler&&r.handler.value?`watcher_${r.id}: {
|
|
21
21
|
deep: ${r.deep},
|
|
22
22
|
immediate:${r.immediate},
|
|
23
|
-
handler${
|
|
24
|
-
}`:null).filter(r=>!!r);return{computed:n,watches:
|
|
25
|
-
// DataSource: ${
|
|
23
|
+
handler${te(r.handler.value)}
|
|
24
|
+
}`:null).filter(r=>!!r);return{computed:n,watches:o}}function Re(t={}){return Object.values(t).map(e=>{if(e.type==="mock"){const s=T(e.mockTemplate)&&e.mockTemplate.value||"(params) => ({})";return`async ${e.name}(...args) {
|
|
25
|
+
// DataSource: ${z(e)}
|
|
26
26
|
const mock = this.provider.createMock(${s});
|
|
27
27
|
return await mock.apply(this, args);
|
|
28
|
-
}`}else{const s=
|
|
29
|
-
// DataSource: ${
|
|
28
|
+
}`}else{const s=T(e.transform)&&e.transform.value||"(res) => res";return`async ${e.name}(...args) {
|
|
29
|
+
// DataSource: ${z(e)}
|
|
30
30
|
return await this.provider.apis['${e.ref}'].apply(this, args).then(${s});
|
|
31
|
-
}`}})}const
|
|
32
|
-
`),Object.assign(
|
|
33
|
-
`+
|
|
34
|
-
`),
|
|
31
|
+
}`}})}const De=["img","input","br","hr","area","base","col","embed","link","meta","param","source","track","wbr"],Z=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"];function G(t,e,s=[],n={},o){const r=[];let c={},a=[];const l=[];let p=[];return Ue(t).forEach(i=>{const u=[];for(const v of i.children){let{id:_,name:w,invisible:g,from:m}=v;if(g)continue;const h=Fe(w,e,m);h&&a.push(h),oe(m)&&p.push({id:m.id,name:w});const{props:S,events:$}=Ge(v,_,v.props,v.events,n,s),A=Ve(v.directives,s,l).join(" "),O=v.children?Ze(v.children,s,e,n,v):"";let C="";typeof O=="string"?C=O:(C=(O?.nodes||[]).join(`
|
|
32
|
+
`),Object.assign(c,O?.methods||{}),a=a.concat(O?.components||[]),p=p.concat(O?.importBlocks||[]));const N=["@dcloudio/uni-h5","@dcloudio/uni-ui"].includes(m||e.get(w)?.package)?b.kebabCase(w):ce(m)||ae(m)?"component":w;u.push(De.includes(N)?`<${N} ${A} ${S} ${$} />`:`<${N} ${A} ${S} ${$}>${C?`
|
|
33
|
+
`+C.trim():""}</${N}>`)}const f=Qe(i.slot,u.join(`
|
|
34
|
+
`),o?.id);r.push(f)}),{nodes:r,methods:c,directives:Le(l),components:b.dedupArray(a),importBlocks:b.dedupArray(p,"id")}}function Le(t){return b.dedupArray(t).map(e=>`${e.startsWith("v")?e.substring(1):e}:${e}`)}function Ue(t=[]){const e=new Map;for(const s of t){const n=typeof s.slot=="string"?s.slot:s.slot?.name,o=e.get(n);o?o.children.push(s):e.set(n,{slot:s.slot,children:[s]})}return e}function Fe(t,e,s){if(Ce.includes(t))return null;const n=e.get(t);if(n&&n.alias){const o=n.parent?`${n.parent}.${n.alias}`:n.alias;return`${t}: ${o}`}return oe(s)||n?t:null}function oe(t){return!!t&&typeof t=="object"&&t.type==="Schema"}function ce(t){return typeof t=="object"&&t.type==="UrlSchema"}function ae(t){return typeof t=="object"&&t.type==="Plugin"}function Je(t,e,s=[]){return t==="style"?j(e)?`:style="${y({...e,value:M(e.value,s)})}"`:"":t==="__class"&&j(e)?`:class="${y({...e,value:M(e.value,s)})}"`:typeof e=="string"?`${t}="${e}"`:j(e)?`:${t}="${y({...e,value:M(e.value,s)})}"`:b.isPlainObject(e)?`:${t}='{${Pe(e).join(", ")}}'`:`:${t}='${JSON.stringify(e)}'`}function We(t,e={},s=[]){if(!!Object.keys(e.style||{}).length){const r=`${t.name}_${t.id}`;e.class?typeof e.class=="string"?e.class=[e.class,r].join(" "):(e.__class=e.class,e.class=r):e.class=r,j(e.style)||delete e.style}const o=t.from;return(ce(o)||ae(o))&&(e.is={type:"JSExpression",value:t.name}),Object.entries(e).map(([r,c])=>Je(r,c,s))}function qe(t,e,s){const n=se(e.modifiers,!0);return`@${t}${n.join("")}="${s}"`}function He(t,e={},s={}){const n={};return{binders:Object.entries(e).map(([r,c])=>{const a=ee(J(c.handler.value)).replace(/\"/g,"'");return qe(r,c,a)}),handlers:n}}function Ge(t,e,s={},n={},o={},r){const{binders:c,handlers:a}=He(e,n,o);return{props:We(t,s,r).join(" "),handlers:a,binders:c,events:c.join(" ")}}function Ve(t=[],e=[],s=[]){const n=[],{vIf:o,vElse:r,vElseIf:c,vShow:a,vModels:l,vFor:p,vBind:d,vHtml:i,customDirectives:u}=ze(t);if(o&&n.push(`v-if="${y(o.value,!0,!0,e)}"`),c&&n.push(`v-else-if="${y(c.value,!0,!0,e)}"`),r&&n.push("v-else"),a&&n.push(`v-show="${y(a.value,!0,!0,e)}"`),d&&n.push(`v-bind="${y(d.value,!0,!0,e)}"`),l.forEach(f=>{const v=se(f.modifiers,!0),_=f.arg?B(f.arg)?`:[${y(f.arg,!0,!0,e)}]`:`:${f.arg}`:"";n.push(`v-model${_}${v}="${y(f.value,!0,!0,e)}"`)}),p){const{item:f,index:v}={item:"item",index:"index",...p.iterator};n.push(`v-for="(${f}, ${v}) in ${y(p.value,!0,!0,e)}"`)}return i&&n.push(`v-html="${y(i.value,!0,!0,e)}"`),u&&u.length&&u.forEach(f=>{if(!f.name)return;let v="",_="";B(f.name)?(_=y(f.name,!0,!0,e),s.push(_)):_=f.name;const w=_?.startsWith("v")?b.kebabCase(_):b.kebabCase("v-"+_);if(v+=w,f.arg&&(B(f.arg)?v+=`:[${y(f.name,!0,!0,e)}]`:v+=`:${f.arg}`),f.modifiers){const g=Object.keys(f.modifiers);g.length&&(v+=g.map(m=>"."+m))}f.value?n.push(`${v}="${y(f.value,!0,!0,e)}"`):n.push(v)}),n}function ze(t=[]){const e=t.filter(i=>Z.includes(i.name)),s=t.filter(i=>!Z.includes(i.name)),n=e.find(i=>b.camelCase(i.name)==="vIf"),o=e.find(i=>b.camelCase(i.name)==="vElseIf"),r=e.find(i=>b.camelCase(i.name)==="vElse"),c=e.find(i=>b.camelCase(i.name)==="vFor"),a=e.find(i=>b.camelCase(i.name)==="vShow"),l=e.find(i=>b.camelCase(i.name)==="vBind"),p=e.find(i=>b.camelCase(i.name)==="vHtml"),d=e.filter(i=>b.camelCase(i.name)==="vModel");return{vIf:n,vElseIf:o,vElse:r,vFor:c,vShow:a,vModels:d,vBind:l,vHtml:p,customDirectives:s}}function Ze(t,e,s,n,o){return typeof t=="string"?t:B(t)?`{{ ${y(t,!1,!0,e)} }}`:Array.isArray(t)?G(t,s,e,n,o):""}function Qe(t,e,s){if(!t)return e;const n=typeof t=="string"?{name:t,params:[],scope:""}:{params:[],scope:"",...t};return`<template ${`#${n.name}="${n.scope?n.scope:n.params?.length>0?`{${n.params?.join(",")}}`:`scope_${s}`}"`}>
|
|
35
35
|
${e}
|
|
36
|
-
</template>`}function
|
|
36
|
+
</template>`}function Xe(t,e=[],s=[],n={},o="web",r=new Set){const c=["@dcloudio/uni-h5","uni-h5","@dcloudio/uni-ui","uni-ui"],a={vue:["defineComponent","reactive"]},l=[];for(const d of e){const i=t.get(d.split(":")[0]);if(i&&i.package){if(r.has(i.package))continue;const u=a[i.package]??(a[i.package]=[]),f=i.parent||(i.alias||"").split(".")[0]||i.name;u.push(f),o==="uniapp"&&c.includes(i.package)&&l.push(f)}}for(const[d,i]of Object.entries(n))(a[d]??(a[d]=[])).push(...Array.from(i)),o==="uniapp"&&c.includes(d)&&l.push(...Array.from(i));return{imports:Object.entries(a).filter(([d,i])=>o==="uniapp"?!c.includes(d)&&!!i.length:!!i.length).map(([d,i])=>`import { ${b.dedupArray(i).join(",")}} from '${d}';`).concat(s),uniComponents:l}}function ie(t={}){const e=[];for(const[s,n]of Object.entries(t))e.push(`
|
|
37
37
|
${s} {
|
|
38
|
-
${
|
|
38
|
+
${xe(n)}
|
|
39
39
|
}
|
|
40
40
|
`);return e.join(`
|
|
41
|
-
`)}function
|
|
42
|
-
|
|
43
|
-
`),components:
|
|
44
|
-
`),css:n.css||"",style:
|
|
45
|
-
`),blockPlugins
|
|
46
|
-
`),asyncComponents:
|
|
41
|
+
`)}function le(t={}){const e=[];return Object.entries(t).forEach(([s,n])=>{e.push(`const ${s} = provider.defineUrlSchemaComponent('${n.url}');`)}),e}function ue(t={}){const e=[];return Object.entries(t).forEach(([s,n])=>{e.push(`const ${s} = provider.definePluginComponent(${JSON.stringify(n)});`)}),e}function Ye(t,e,s="web"){const{dsl:n}=t,o=Object.keys(n.computed||{}),r=D(n.lifeCycles,o),c=D(n.computed,o),a=Te(n.watch,o),l=Re(n.dataSources),{methods:p,nodes:d,components:i,importBlocks:u,directives:f}=G(n.nodes||[],e,o,t.context),v=[...c,...a.computed],_=D({...p,...n.methods||{}},o),w=u.map(A=>`import ${A.name} from './${A.id}.vue';`);let{imports:g,uniComponents:m}=Xe(e,i,w,t.imports,s,t.easycomPackages);const h=Object.keys({...t.urlSchemas,...t.blockPlugins}),S=le(t.urlSchemas),$=ue(t.blockPlugins);return{id:n.id,version:n.__VERSION__,name:n.name,state:Be(n.state).join(","),inject:Me(n.inject).join(","),props:ne(n.props).join(","),emits:re(n.emits).join(","),expose:n.expose&&n.expose.length?JSON.stringify(n.expose||[]):"",watch:a.watches.join(","),lifeCycles:r.join(","),computed:v.join(","),methods:[...l,..._].join(","),imports:`
|
|
42
|
+
`+g.join(`
|
|
43
|
+
`),components:Ee(i,m).join(","),directives:f.join(","),returns:t.members.join(","),template:d.join(`
|
|
44
|
+
`),css:n.css||"",style:ie(t.style),urlSchemas:S.join(`
|
|
45
|
+
`),blockPlugins:$.join(`
|
|
46
|
+
`),asyncComponents:h.join(","),uniComponents:m,renderer:s==="uniapp"?"@vtj/uni-app":"@vtj/renderer"}}const x={state:{composable:null,from:"self",declare:null,replace:"__state"},$uni:{composable:null,from:"self",declare:null,replace:"uni"},$getApp:{composable:null,from:"self",declare:null,replace:"getApp"},$emit:{composable:null,from:"vue",declare:null,replace:"__emit"},$props:{composable:null,from:"vue",declare:null,replace:"__props"},$attrs:{composable:"useAttrs",from:"vue",declare:"const __attrs = useAttrs();",replace:"__attrs"},$slots:{composable:"useSlots",from:"vue",declare:"const __slots = useSlots();",replace:"__slots"},$nextTick:{composable:"nextTick",from:"vue",declare:null,replace:"nextTick"},$watch:{composable:"watch",from:"vue",declare:null,replace:"watch"},$refs:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$refs"},$el:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$el"},$root:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$root"},$parent:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$parent"},$options:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$options"},$forceUpdate:{composable:"getCurrentInstance",from:"vue",declare:"const __instance = getCurrentInstance();",replace:"__instance.proxy.$forceUpdate"},$router:{composable:"useRouter",from:"vue-router",declare:"const __router = useRouter();",replace:"__router"},$route:{composable:"useRoute",from:"vue-router",declare:"const __route = useRoute();",replace:"__route"},$i18n:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n"},$t:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.t"},$n:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.n"},$d:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.d"},$rt:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.rt"},$te:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.te"},$tm:{composable:"useI18n",from:"vue-i18n",declare:"const __i18n = useI18n();",replace:"__i18n.tm"},$provider:{composable:"useStore",from:"__renderer__",declare:null,replace:"__provider"},$store:{composable:"useStore",from:"__renderer__",declare:"const __store = useStore();",replace:"__store"},$pinia:{composable:"usePinia",from:"__renderer__",declare:"const __pinia = usePinia();",replace:"__pinia"},$request:{composable:"useRequest",from:"__renderer__",declare:"const __request = useRequest();",replace:"__request"},$libs:{composable:"useLibs",from:"__renderer__",declare:"const __libs = useLibs();",replace:"__libs"},$access:{composable:"useAccess",from:"__renderer__",declare:"const __access = useAccess();",replace:"__access"},$apis:{composable:"useApis",from:"__renderer__",declare:"const __apis = useApis();",replace:"__apis"}},V={"element-plus":{$loading:{composable:"ElLoading",from:"element-plus",declare:null,replace:"ElLoading.service"},$message:{composable:"ElMessage",from:"element-plus",declare:null,replace:"ElMessage"},$notify:{composable:"ElNotification",from:"element-plus",declare:null,replace:"ElNotification"},$messageBox:{composable:"ElMessageBox",from:"element-plus",declare:null,replace:"ElMessageBox"},$msgbox:{composable:"ElMessageBox",from:"element-plus",declare:null,replace:"ElMessageBox"},$confirm:{composable:"ElMessageBox",from:"element-plus",declare:null,replace:"ElMessageBox.confirm"},$prompt:{composable:"ElMessageBox",from:"element-plus",declare:null,replace:"ElMessageBox.prompt"}},"ant-design-vue":{$confirm:{composable:"Modal",from:"ant-design-vue",declare:null,replace:"Modal.confirm"},$message:{composable:"message",from:"ant-design-vue",declare:null,replace:"message"},$notification:{composable:"notification",from:"ant-design-vue",declare:null,replace:"notification"},$info:{composable:"message",from:"ant-design-vue",declare:null,replace:"message.info"},$success:{composable:"message",from:"ant-design-vue",declare:null,replace:"message.success"},$warning:{composable:"message",from:"ant-design-vue",declare:null,replace:"message.warning"},$error:{composable:"message",from:"ant-design-vue",declare:null,replace:"message.error"}}},pe=Object.keys(V);function fe(t){for(const[,e]of t)if(pe.includes(e.package))return e.package;return null}function me(t){const e=t?V[t]??{}:{};return{...x,...e}}function Ke(t,e=x){const s=new Set,n=/this\.\$(\w+)\b/g,o=r=>{if(r&&typeof r=="object"){if(Array.isArray(r)){for(const c of r)o(c);return}if(j(r)&&r.value){let c;for(n.lastIndex=0;(c=n.exec(r.value))!==null;){const a="$"+c[1];a in e&&s.add(a)}return}for(const c of Object.values(r))o(c)}};return o(t.refs),o(t.reactives),o(t.state),o(t.computed),o(t.methods),o(t.watch),o(t.lifeCycles),o(t.inject),o(t.composables),o(t.provide),o(t.dataSources),o(t.setup),o(t.nodes),s}function et(t,e=x){const s=[];for(const n of t){const o=e[n];o&&o.declare&&!s.includes(o.declare)&&s.push(o.declare)}return s}function tt(t,e=x){const s={};for(const n of t){const o=e[n];if(o&&o.composable){const r=s[o.from]??(s[o.from]=[]);r.includes(o.composable)||r.push(o.composable)}}return s}function st(t,e=x){const s=new Set(Object.keys(t.refs??{})),n=new Set(Object.keys(t.reactives??{})),r=Object.keys(t.state??{}).length>0;r&&n.add("__state");const c=new Set(Object.keys(t.computed??{})),a=new Set(Object.keys(t.methods??{})),l=new Set;for(const u of t.props??[])b.isString(u)?l.add(u):l.add(u.name);const p=new Set;for(const u of t.composables??[])if(u.destructure&&u.destructure.length>0)for(const f of u.destructure)p.add(f);else u.name&&p.add(u.name);const d=new Set;for(const u of t.inject??[])u.name&&d.add(u.name);const i=new Set;for(const[,u]of Object.entries(t.dataSources??{}))u.name&&i.add(u.name);return{refs:s,reactives:n,computed:c,methods:a,props:l,composables:p,injects:d,dataSources:i,hasState:r,effectiveApiMap:e}}function k(t,e,s="script"){if(!t)return t;let n=t;for(const[o,r]of Object.entries(e.effectiveApiMap)){const c=o.replace(/\$/g,"\\$"),a=new RegExp(`this\\.${c}\\b`,"g");n=n.replace(a,r.replace)}return n=n.replace(/this\.([A-Za-z_$][\w$]*)\.value\b/g,(o,r)=>e.refs.has(r)||e.computed.has(r)?s==="script"?`${r}.value`:r:o),n=n.replace(/this\.([A-Za-z_$][\w$]*)/g,(o,r)=>e.refs.has(r)||e.computed.has(r)?s==="script"?`${r}.value`:r:r==="state"?"__state":e.reactives.has(r)||e.methods.has(r)||e.composables.has(r)||e.injects.has(r)||e.dataSources.has(r)?r:e.props.has(r)?s==="script"?`__props.${r}`:r:o),n}function E(t){let e=t.trim().replace(/;$/,"");return/^\((\(|async|function)/.test(e)&&(e=e.substring(1,e.length-1).trim()),e}function nt(t={},e){return Object.entries(t).map(([s,n])=>{let o;return j(n)?o=k(n.value||"undefined",e,"script"):o=JSON.stringify(n),`const ${s} = ref(${o});`})}function rt(t={},e){return Object.entries(t).map(([s,n])=>{let o;return j(n)?o=k(n.value||"{}",e,"script"):o=JSON.stringify(n??{}),`const ${s} = reactive(${o});`})}function ot(t={},e){const s=Object.entries(t);return s.length===0?"":`const __state = reactive({ ${s.map(([o,r])=>{let c;return j(r)?c=k(r.value||"undefined",e,"script"):c=JSON.stringify(r),`${o}: ${c}`}).join(", ")} });`}function ct(t=[],e){const s=[],n={},o=new Set;for(const r of t){if(!r||!r.composable)continue;let c="";if(j(r.composable)?c=r.composable.value||"":typeof r.composable=="string"&&(c=r.composable),!c||c==="useProvider")continue;if(r.name){if(o.has(r.name))continue;o.add(r.name)}const l=(r.args??[]).map(p=>j(p)?k(p.value||"",e,"script"):JSON.stringify(p)).join(", ");r.destructure&&r.destructure.length>0?s.push(`const { ${r.destructure.join(", ")} } = ${c}(${l});`):r.name?s.push(`const ${r.name} = ${c}(${l});`):s.push(`${c}(${l});`)}return{statements:s,imports:n}}function at(t=[],e){return t.map(s=>{const n=j(s.from)?k(s.from.value||`'${s.name}'`,e,"script"):`'${s.from||s.name}'`;let o="undefined";return s.default!==void 0&&s.default!==null&&(j(s.default)?o=k(s.default.value||"undefined",e,"script"):o=JSON.stringify(s.default)),`const ${s.name} = inject(${n}, ${o});`})}function it(t={},e){return Object.entries(t).map(([s,n])=>{if(!n||!n.value)return null;const o=k(n.value,e,"script"),r=E(o);return`const ${s} = computed(${r});`}).filter(s=>!!s)}function lt(t={},e){return Object.entries(t).map(([s,n])=>{if(!n||!n.value)return null;const o=k(n.value,e,"script"),r=E(o);return`const ${s} = ${r};`}).filter(s=>!!s)}function ut(t={},e){return Object.values(t).map(s=>{if(!s||!s.name)return null;if(s.type==="mock"){const n=s.mockTemplate&&s.mockTemplate.value?s.mockTemplate.value:"(params) => ({})",o=e?k(n,e,"script"):n;return`const ${s.name} = async (...args) => {
|
|
47
|
+
const mock = __provider.createMock(${o});
|
|
48
|
+
return await mock.apply(null, args);
|
|
49
|
+
};`}else{const n=s.transform&&s.transform.value?s.transform.value:"(res) => res",o=e?k(n,e,"script"):n;return`const ${s.name} = async (...args) => {
|
|
50
|
+
return await __provider.apis['${s.ref}'].apply(null, args).then(${o});
|
|
51
|
+
};`}}).filter(s=>!!s)}function pt(t=[],e){return t.map(s=>{if(!s||!s.handler||!s.handler.value)return null;const n=s.source&&s.source.value?k(s.source.value,e,"script"):"() => null",o=E(n),r=k(s.handler.value,e,"script"),c=E(r),a=[];s.deep&&a.push("deep: true"),s.immediate&&a.push("immediate: true"),s.flush&&a.push(`flush: '${s.flush}'`);const l=a.length>0?`, { ${a.join(", ")} }`:"";return`watch(${o}, ${c}${l});`}).filter(s=>!!s)}function ft(t={},e){return Object.entries(t).map(([s,n])=>{let o;if(T(n)){const r=k(n.value||"",e,"script");o=E(r)}else j(n)?o=k(n.value||"undefined",e,"script"):o=JSON.stringify(n);return`provide('${s}', ${o});`})}function de(t){let e=t.trim().replace(/;$/,"");/^\((\(|async|function)/.test(e)&&(e=e.substring(1,e.length-1).trim());const s=e.match(/^(?:async\s+)?\([^)]*\)\s*=>\s*([\s\S]+)$/);if(s){let o=s[1].trim();return o.startsWith("{")&&o.endsWith("}")?o=o.slice(1,-1).trim():o=o.replace(/;$/,"")+";",o}const n=e.match(/^(?:async\s+)?function\s*\w*\s*\([^)]*\)\s*\{([\s\S]*)\}$/);return n?n[1].trim():e}function mt(t,e){if(!t||!t.value)return"";const s=k(t.value,e,"script");return de(s)}function dt(t={},e){const s=[];for(const n of["beforeCreate","created"]){const o=t[n];if(o&&o.value){const r=k(o.value,e,"script"),c=de(r);c&&s.push(`// ${n}
|
|
52
|
+
${c}`)}}return s.join(`
|
|
53
|
+
`)}const ht={beforeMount:"onBeforeMount",mounted:"onMounted",beforeUpdate:"onBeforeUpdate",updated:"onUpdated",beforeUnmount:"onBeforeUnmount",unmounted:"onUnmounted",errorCaptured:"onErrorCaptured",renderTracked:"onRenderTracked",renderTriggered:"onRenderTriggered",activated:"onActivated",deactivated:"onDeactivated"},gt=new Set(["onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onErrorCaptured","onRenderTracked","onRenderTriggered","onActivated","onDeactivated"]),vt=new Set(["onLoad","onShow","onReady","onHide","onUnload","onResize","onPullDownRefresh","onReachBottom","onTabItemTap","onShareAppMessage","onPageScroll","onNavigationBarButtonTap","onBackPress","onNavigationBarSearchInputChanged","onNavigationBarSearchInputConfirmed","onNavigationBarSearchInputClicked","onShareTimeline","onAddToFavorites"]);function $t(t={},e){const s=[],n=new Set,o=new Set;for(const[r,c]of Object.entries(t)){if(!c||!c.value||r==="created"||r==="beforeCreate")continue;const a=ht[r]||r;if(gt.has(a)){const l=k(c.value,e,"script"),p=E(l);s.push(`${a}(${p});`),n.add(a)}else if(vt.has(a)){const l=k(c.value,e,"script"),p=E(l);s.push(`${a}(${p});`),o.add(a)}}return{statements:s,usedHooks:n,usedUniHooks:o}}function bt(t){const{componentMap:e,components:s,importBlocks:n,collectImports:o,platform:r,vueImports:c,composableImports:a,globalApiImports:l,uniHookImports:p,easycomPackages:d}=t,i=["@dcloudio/uni-h5","uni-h5","@dcloudio/uni-ui","uni-ui"],u={vue:[...c]},f=[],v=[],_={};for(const g of s){const m=g.split(":")[0],h=e.get(m);if(!h||!h.package||h.parent||d.has(h.package))continue;const S=u[h.package]??(u[h.package]=[]),$=(h.alias||"").split(".")[0]||h.name,A=m,O=$!==A?`${$} as ${A}`:$;S.push(O),_[$]=A,r==="uniapp"&&i.includes(h.package)&&f.push($)}for(const g of s){const m=g.split(":")[0],h=e.get(m);if(!h||!h.package||!h.parent||d.has(h.package))continue;const S=h.parent,$=_[S]??S,A=h.alias||"";v.push(`const ${m} = ${$}.${A};`),_[S]||((u[h.package]??(u[h.package]=[])).push(S),_[S]=S)}for(const[g,m]of Object.entries(o))(u[g]??(u[g]=[])).push(...Array.from(m)),r==="uniapp"&&i.includes(g)&&f.push(...Array.from(m));for(const[g,m]of Object.entries(a))(u[g]??(u[g]=[])).push(...m);for(const[g,m]of Object.entries(l))(u[g]??(u[g]=[])).push(...m);return r==="uniapp"&&p.length>0&&(u["@dcloudio/uni-app"]??(u["@dcloudio/uni-app"]=[])).push(...p),{imports:Object.entries(u).filter(([g,m])=>r==="uniapp"?!i.includes(g)&&!!m.length:!!m.length).map(([g,m])=>`import { ${b.dedupArray(m).join(",")}} from '${g}';`).concat(n),uniComponents:f,componentDeclarations:v}}function _t(t,e=x,s=new Set,n=new Set){const o=Object.entries(e),r=c=>{if(c==null||typeof c!="object")return c;if(Array.isArray(c))return c.map(r);if(j(c)&&typeof c.value=="string"){let l=c.value;for(const[p,d]of o){const i=p.replace(/\$/g,"\\$"),u=new RegExp(`this\\.${i}\\b`,"g");l=l.replace(u,d.replace)}return l=l.replace(/this\.([A-Za-z_$][\w$]*)\.value\b/g,(p,d)=>s.has(d)||n.has(d)?d:p),{...c,value:l}}const a={};for(const[l,p]of Object.entries(c))a[l]=r(p);return a};return t.map(r)}function yt(t,e,s=[],n={},o,r=x,c=new Set,a=new Set){const l=_t(t,r,c,a);return G(l,e,s,n,o)}function St(t,e,s="web"){const{dsl:n}=t,o=fe(e),r=me(o),c=st(n,r),a=Ke(n,r),l=et(a,r),p=tt(a,r),d=p.__renderer__||[];delete p.__renderer__;const i=yt(n.nodes||[],e,Object.keys(n.computed||{}),t.context,void 0,r,c.refs,c.computed),u=i.importBlocks.map(I=>`import ${I.name} from './${I.id}.vue';`),f=nt(n.refs||{},c),v=rt(n.reactives||{},c),_=ot(n.state||{},c),w=it(n.computed||{},c),g={...i.methods||{},...n.methods||{}},m=lt(g,c),h=ut(n.dataSources||{},c),S=pt(n.watch||[],c),$=at(n.inject||[],c),A=ft(n.provide||{},c),O=ct(n.composables||[],c),C=new Set;for(const I of n.composables||[])if(I.destructure&&I.destructure.length>0)for(const R of I.destructure)C.add(R);else I.name&&C.add(I.name);const N=l.filter(I=>{const R=I.match(/^const\s+(\w+)\s*=/);return!(R&&C.has(R[1]))}),U=$t(n.lifeCycles||{},c),he=dt(n.lifeCycles||{},c),ge=mt(n.setup,c),P=new Set;f.length>0&&P.add("ref"),(v.length>0||_)&&P.add("reactive"),w.length>0&&P.add("computed"),S.length>0&&P.add("watch"),$.length>0&&P.add("inject"),A.length>0&&P.add("provide");for(const I of U.usedHooks)P.add(I);const ve=s==="uniapp"?Array.from(U.usedUniHooks):[],{imports:$e,uniComponents:be,componentDeclarations:_e}=bt({componentMap:e,components:i.components,importBlocks:u,collectImports:t.imports,platform:s,vueImports:Array.from(P),composableImports:O.imports,globalApiImports:p,uniHookImports:ve,easycomPackages:t.easycomPackages}),ye=le(t.urlSchemas),Se=ue(t.blockPlugins);return{id:n.id,version:n.__VERSION__,name:n.name,imports:`
|
|
54
|
+
`+$e.join(`
|
|
55
|
+
`),props:ne(n.props).join(","),emits:re(n.emits).join(","),needsProps:a.has("$props"),needsEmit:a.has("$emit"),expose:n.expose&&n.expose.length?`{ ${n.expose.join(", ")} }`:"",globalApiDeclares:N.join(`
|
|
56
|
+
`),injects:$.join(`
|
|
57
|
+
`),composables:O.statements.join(`
|
|
58
|
+
`),state:_,refs:f.join(`
|
|
59
|
+
`),reactives:v.join(`
|
|
60
|
+
`),computed:w.join(`
|
|
61
|
+
`),methods:m.join(`
|
|
62
|
+
`),dataSources:h.join(`
|
|
63
|
+
`),watch:S.join(`
|
|
64
|
+
`),provide:A.join(`
|
|
65
|
+
`),createdStatements:he,setupStatements:ge,lifeCycles:U.statements.join(`
|
|
66
|
+
`),template:i.nodes.join(`
|
|
67
|
+
`),css:n.css||"",style:ie(t.style),urlSchemas:ye.join(`
|
|
68
|
+
`),blockPlugins:Se.join(`
|
|
69
|
+
`),uniComponents:be,renderer:s==="uniapp"?"@vtj/uni-app":"@vtj/renderer",rendererImports:["useProvider",...d].join(", "),componentDeclarations:_e.join(`
|
|
70
|
+
`)}}const jt=`
|
|
47
71
|
// @ts-nocheck
|
|
48
|
-
|
|
49
|
-
<%= imports %>
|
|
50
72
|
import { useProvider } from '<%= renderer %>';
|
|
73
|
+
<%= imports %>
|
|
51
74
|
export default defineComponent({
|
|
52
75
|
name: '<%= name %>',
|
|
53
76
|
<% if(inject) { %> inject: { <%= inject %>}, <% } %>
|
|
@@ -76,22 +99,47 @@ export default defineComponent({
|
|
|
76
99
|
<% if(methods) { %> methods: { <%= methods %> }, <% } %>
|
|
77
100
|
<% if(watch) { %> watch: { <%= watch %> }, <% } %> <%= lifeCycles %>
|
|
78
101
|
});
|
|
79
|
-
|
|
102
|
+
`,kt=`
|
|
80
103
|
<template>
|
|
81
104
|
<%= template %>
|
|
82
105
|
</template>
|
|
83
|
-
<script lang="<%= scriptLang %>"
|
|
106
|
+
<script lang="<%= scriptLang %>"<% if(scriptSetup) { %> setup<% } %>>
|
|
84
107
|
<%= script %>
|
|
85
108
|
<\/script>
|
|
86
109
|
<style lang="<%= styleLang %>" scoped>
|
|
87
110
|
<%= css %>
|
|
88
111
|
<%= style %>
|
|
89
112
|
</style>
|
|
90
|
-
`,
|
|
113
|
+
`,wt=`// @ts-nocheck
|
|
114
|
+
import { <%= rendererImports %> } from '<%= renderer %>';<%= imports %>
|
|
115
|
+
<% if(componentDeclarations) { %><%= componentDeclarations %><% } %>
|
|
116
|
+
<% if(props) { %>const __props = defineProps({ <%= props %> });<% } else if(needsProps) { %>const __props = defineProps();<% } %>
|
|
117
|
+
<% if(emits) { %>const __emit = defineEmits([<%= emits %>]);<% } else if(needsEmit) { %>const __emit = defineEmits();<% } %>
|
|
118
|
+
const __provider = useProvider({ id: '<%= id %>', version: '<%= version %>' });
|
|
119
|
+
<%= urlSchemas %>
|
|
120
|
+
<%= blockPlugins %>
|
|
121
|
+
<%= globalApiDeclares %>
|
|
122
|
+
<%= injects %>
|
|
123
|
+
<%= composables %>
|
|
124
|
+
<%= createdStatements %>
|
|
125
|
+
<%= state %>
|
|
126
|
+
<%= refs %>
|
|
127
|
+
<%= reactives %>
|
|
128
|
+
<%= computed %>
|
|
129
|
+
<%= methods %>
|
|
130
|
+
<%= setupStatements %>
|
|
131
|
+
<%= dataSources %>
|
|
132
|
+
<%= watch %>
|
|
133
|
+
<%= provide %>
|
|
134
|
+
<%= lifeCycles %>
|
|
135
|
+
<% if(expose) { %>defineExpose(<%= expose %>);<% } %>
|
|
136
|
+
`,At=b.template(jt),Ot=b.template(wt),It=b.template(kt);async function Ct(t,e=new Map,s=[],n="web",o){const r=t,c=typeof r.dsl=="object"&&arguments.length===1?r:{dsl:t,componentMap:e,dependencies:s,platform:n,formatterDisabled:o},{dsl:a,componentMap:l=new Map,dependencies:p=[],platform:d="web",formatterDisabled:i=!1,ts:u=!0,scss:f=!1}=c,v=new Ne(b.cloneDeep(a),p),_=a.apiMode==="composition";let w,g,m,h;if(_){const $=St(v,l,d);h=Ot($),w=$.template||`
|
|
137
|
+
<!--组件模版内容-->
|
|
138
|
+
`,g=$.css,m=$.style}else{const $=Ye(v,l,d);h=At($),w=$.template||`
|
|
91
139
|
<!--组件模版内容-->
|
|
92
|
-
`,css:await F(
|
|
140
|
+
`,g=$.css,m=$.style}const S=It({template:w,css:await F(g,i)||`
|
|
93
141
|
/* 组件样式内容 */
|
|
94
|
-
`,script:await
|
|
142
|
+
`,script:await K(h,i),style:await F(m,i),scriptLang:u?"ts":"js",styleLang:f?"scss":"css",scriptSetup:_});return await H(S,i).catch($=>($.content=S,Promise.reject($)))}async function Pt(t){const e=`
|
|
95
143
|
<template>
|
|
96
144
|
<div>
|
|
97
145
|
<h3>源码模式页面</h3>
|
|
@@ -102,4 +150,4 @@ export default defineComponent({
|
|
|
102
150
|
<\/script>
|
|
103
151
|
<style scoped lang="scss">
|
|
104
152
|
</style>
|
|
105
|
-
`;return await
|
|
153
|
+
`;return await H(e)}exports.GLOBAL_API_MAP=x;exports.UI_GLOBAL_API_MAPS=V;exports.UI_PACKAGES=pe;exports.VTJ_CODER_VERSION=Ie;exports.buildEffectiveApiMap=me;exports.createEmptyPage=Pt;exports.cssFormatter=F;exports.detectUIPackage=fe;exports.generator=Ct;exports.tsFormatter=K;exports.vueFormatter=H;
|