g-ui-web 1.4.38 → 1.4.39

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/lib/g-ui-web.cjs CHANGED
@@ -99,7 +99,7 @@ https://www.w3ctech.com/topic/2226`));let k=x(..._);return k.postcssPlugin=S,k.p
99
99
  * @vue/compiler-core v3.5.18
100
100
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
101
101
  * @license MIT
102
- **/const hIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function pIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await LJ,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=RJ(f);p.forEach(v=>{if(v.n===t){const m=f.slice(v.ss,v.se),g=m.match(/import\s*\{([^}]+)\}/);g&&g[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const y=m.match(/import\s+(\w+)\s+from/);if(y&&!m.includes("{")){const C=y[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=jke(c);if((d=p.template)!=null&&d.ast){const v=m=>{var g;if(m.type===hIe.ELEMENT&&((g=m.tag)!=null&&g.startsWith("g-"))){const y=m.tag,C=i.componentCount.get(y)||0;i.componentCount.set(y,C+1),h.push(y),i.totalImports++}Array.isArray(m.children)&&m.children.forEach(v)};p.template.ast.children.forEach(v)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async buildEnd(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
102
+ **/const hIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function pIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await LJ,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=RJ(f);p.forEach(v=>{if(v.n===t){const m=f.slice(v.ss,v.se),g=m.match(/import\s*\{([^}]+)\}/);g&&g[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const y=m.match(/import\s+(\w+)\s+from/);if(y&&!m.includes("{")){const C=y[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=jke(c);if((d=p.template)!=null&&d.ast){const v=m=>{var g;if(m.type===hIe.ELEMENT&&((g=m.tag)!=null&&g.startsWith("g-"))){const y=m.tag,C=i.componentCount.get(y)||0;i.componentCount.set(y,C+1),h.push(y),i.totalImports++}Array.isArray(m.children)&&m.children.forEach(v)};p.template.ast.children.forEach(v)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async closeBundle(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
103
103
  📊 组件引用统计:`),console.log(` 组件库: ${t}`),console.log(` 总引用次数: ${c.summary.totalImports}`),console.log(` 使用的组件数: ${c.summary.uniqueComponents}`),console.log(` 涉及文件数: ${c.summary.filesWithImports}`),console.log(`
104
104
  Top 10 组件:`),c.topComponents.slice(0,10).forEach((u,d)=>{console.log(` ${d+1}. ${u.name}: ${u.count} 次`)}),r)try{const u=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});u.ok?console.log(`
105
105
  ✅ 统计数据已发送至: ${r}`):console.warn(`
@@ -99,7 +99,7 @@ https://www.w3ctech.com/topic/2226`));let k=x(..._);return k.postcssPlugin=S,k.p
99
99
  * @vue/compiler-core v3.5.18
100
100
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
101
101
  * @license MIT
102
- **/const tIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function rIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await a8,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=n8(f);p.forEach(m=>{if(m.n===t){const g=f.slice(m.ss,m.se),y=g.match(/import\s*\{([^}]+)\}/);y&&y[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const v=g.match(/import\s+(\w+)\s+from/);if(v&&!g.includes("{")){const C=v[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=Bke(c);if((d=p.template)!=null&&d.ast){const m=g=>{var y;if(g.type===tIe.ELEMENT&&((y=g.tag)!=null&&y.startsWith("g-"))){const v=g.tag,C=i.componentCount.get(v)||0;i.componentCount.set(v,C+1),h.push(v),i.totalImports++}Array.isArray(g.children)&&g.children.forEach(m)};p.template.ast.children.forEach(m)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async buildEnd(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
102
+ **/const tIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function rIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await a8,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=n8(f);p.forEach(m=>{if(m.n===t){const g=f.slice(m.ss,m.se),y=g.match(/import\s*\{([^}]+)\}/);y&&y[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const v=g.match(/import\s+(\w+)\s+from/);if(v&&!g.includes("{")){const C=v[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=Bke(c);if((d=p.template)!=null&&d.ast){const m=g=>{var y;if(g.type===tIe.ELEMENT&&((y=g.tag)!=null&&y.startsWith("g-"))){const v=g.tag,C=i.componentCount.get(v)||0;i.componentCount.set(v,C+1),h.push(v),i.totalImports++}Array.isArray(g.children)&&g.children.forEach(m)};p.template.ast.children.forEach(m)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async closeBundle(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
103
103
  📊 组件引用统计:`),console.log(` 组件库: ${t}`),console.log(` 总引用次数: ${c.summary.totalImports}`),console.log(` 使用的组件数: ${c.summary.uniqueComponents}`),console.log(` 涉及文件数: ${c.summary.filesWithImports}`),console.log(`
104
104
  Top 10 组件:`),c.topComponents.slice(0,10).forEach((u,d)=>{console.log(` ${d+1}. ${u.name}: ${u.count} 次`)}),r)try{const u=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});u.ok?console.log(`
105
105
  ✅ 统计数据已发送至: ${r}`):console.warn(`
Binary file
package/lib/g-ui-web.js CHANGED
@@ -24479,8 +24479,8 @@ function Z5t(e = {}) {
24479
24479
  }
24480
24480
  return null;
24481
24481
  },
24482
- // 构建结束时发送数据
24483
- async buildEnd() {
24482
+ // 整个构建完全结束后再统计和上报,确保所有文件都已处理
24483
+ async closeBundle() {
24484
24484
  if (!o && !a || s) return;
24485
24485
  s = !0;
24486
24486
  const l = {
Binary file
@@ -99,7 +99,7 @@ https://www.w3ctech.com/topic/2226`));let k=x(..._);return k.postcssPlugin=S,k.p
99
99
  * @vue/compiler-core v3.5.18
100
100
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
101
101
  * @license MIT
102
- **/const eIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function tIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await a8,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=n8(f);p.forEach(m=>{if(m.n===t){const g=f.slice(m.ss,m.se),y=g.match(/import\s*\{([^}]+)\}/);y&&y[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const v=g.match(/import\s+(\w+)\s+from/);if(v&&!g.includes("{")){const C=v[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=Pke(c);if((d=p.template)!=null&&d.ast){const m=g=>{var y;if(g.type===eIe.ELEMENT&&((y=g.tag)!=null&&y.startsWith("g-"))){const v=g.tag,C=i.componentCount.get(v)||0;i.componentCount.set(v,C+1),h.push(v),i.totalImports++}Array.isArray(g.children)&&g.children.forEach(m)};p.template.ast.children.forEach(m)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async buildEnd(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
102
+ **/const eIe={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"};new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b");function tIe(e={}){const{libraryName:t="",reportUrl:r="",extraData:n={},enableInDev:o=!1}=e,i={componentCount:new Map,fileDetails:new Map,totalImports:0};let s=!1,l=!1;return{name:"vite-plugin-component-usage",enforce:"pre",async buildStart(){await a8,i.componentCount.clear(),i.fileDetails.clear(),i.totalImports=0},configResolved(c){s=c.command==="build"},transform(c,u){var d;if(!s&&!o||u.includes("node_modules")||!/\.(js|jsx|ts|tsx|vue|svelte)$/.test(u))return null;try{let f=c;if(u.endsWith(".vue")){const p=c.match(/<script[^>]*>([\s\S]*?)<\/script>/);p&&(f=p[1])}const h=[];if(f){const[p]=n8(f);p.forEach(m=>{if(m.n===t){const g=f.slice(m.ss,m.se),y=g.match(/import\s*\{([^}]+)\}/);y&&y[1].split(",").map(b=>b.trim()).filter(Boolean).map(b=>b.split(/\s+as\s+/)[0].trim()).forEach(b=>{if(b){const S=i.componentCount.get(b)||0;i.componentCount.set(b,S+1),h.push(b),i.totalImports++}});const v=g.match(/import\s+(\w+)\s+from/);if(v&&!g.includes("{")){const C=v[1],b=i.componentCount.get(C)||0;i.componentCount.set(C,b+1),h.push(C),i.totalImports++}}})}if(u.endsWith(".vue")){const{descriptor:p}=Pke(c);if((d=p.template)!=null&&d.ast){const m=g=>{var y;if(g.type===eIe.ELEMENT&&((y=g.tag)!=null&&y.startsWith("g-"))){const v=g.tag,C=i.componentCount.get(v)||0;i.componentCount.set(v,C+1),h.push(v),i.totalImports++}Array.isArray(g.children)&&g.children.forEach(m)};p.template.ast.children.forEach(m)}}if(h.length>0){const p=u.replace(process.cwd(),"");i.fileDetails.set(p,h)}}catch(f){console.warn(`[component-usage] 解析文件失败: ${u}`,f.message)}return null},async closeBundle(){if(!s&&!o||l)return;l=!0;const c={libraryName:t,timestamp:new Date().toISOString(),summary:{totalImports:i.totalImports,uniqueComponents:i.componentCount.size,filesWithImports:i.fileDetails.size},componentCount:Object.fromEntries(i.componentCount),fileDetails:Object.fromEntries(i.fileDetails),topComponents:[...i.componentCount.entries()].sort((u,d)=>d[1]-u[1]).slice(0,20).map(([u,d])=>({name:u,count:d})),...n};if(console.log(`
103
103
  📊 组件引用统计:`),console.log(` 组件库: ${t}`),console.log(` 总引用次数: ${c.summary.totalImports}`),console.log(` 使用的组件数: ${c.summary.uniqueComponents}`),console.log(` 涉及文件数: ${c.summary.filesWithImports}`),console.log(`
104
104
  Top 10 组件:`),c.topComponents.slice(0,10).forEach((u,d)=>{console.log(` ${d+1}. ${u.name}: ${u.count} 次`)}),r)try{const u=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});u.ok?console.log(`
105
105
  ✅ 统计数据已发送至: ${r}`):console.warn(`
@@ -189,8 +189,8 @@ function componentUsagePlugin(options = {}) {
189
189
  }
190
190
  return null;
191
191
  },
192
- // 构建结束时发送数据
193
- async buildEnd() {
192
+ // 整个构建完全结束后再统计和上报,确保所有文件都已处理
193
+ async closeBundle() {
194
194
  if (!isBuild && !enableInDev) return;
195
195
  if (hasReported) return;
196
196
  hasReported = true;
@@ -163,8 +163,8 @@ function componentUsagePlugin(options = {}) {
163
163
  }
164
164
  return null;
165
165
  },
166
- // 构建结束时发送数据
167
- async buildEnd() {
166
+ // 整个构建完全结束后再统计和上报,确保所有文件都已处理
167
+ async closeBundle() {
168
168
  if (!isBuild && !enableInDev) return;
169
169
  if (hasReported) return;
170
170
  hasReported = true;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "g-ui-web",
3
3
  "private": false,
4
4
  "description": "可视化组件库",
5
- "version": "1.4.38",
5
+ "version": "1.4.39",
6
6
  "author": "wyu",
7
7
  "license": "MIT",
8
8
  "type": "module",