code.js
1 import { cli, Strategy } from '@jackwener/opencli/registry'; 2 import { 3 getPostDetails, 4 getRawCode, 5 extractExportCode, 6 inferLanguage, 7 getCodeLength, 8 } from './_shared.js'; 9 10 cli({ 11 site: 'uiverse', 12 name: 'code', 13 description: 'Export Uiverse component code (HTML, CSS, React, or Vue)', 14 domain: 'uiverse.io', 15 strategy: Strategy.PUBLIC, 16 browser: true, 17 args: [ 18 { name: 'input', type: 'str', required: true, positional: true, help: 'Uiverse URL or author/slug identifier' }, 19 { name: 'target', type: 'str', required: true, choices: ['html', 'css', 'react', 'vue'], help: 'Code target to export' }, 20 ], 21 columns: ['target', 'username', 'slug', 'language', 'length'], 22 func: async (page, kwargs) => { 23 const detail = await getPostDetails(page, kwargs.input); 24 const target = String(kwargs.target).toLowerCase(); 25 let code = ''; 26 27 if (target === 'react' || target === 'vue') { 28 code = await extractExportCode(page, target); 29 } else { 30 const payload = await getRawCode(page, detail.post.id); 31 code = target === 'html' ? payload.html : payload.css; 32 } 33 34 return { 35 target, 36 username: detail.username, 37 slug: detail.slug, 38 url: detail.url, 39 language: inferLanguage(target, detail.post), 40 length: getCodeLength(code), 41 code, 42 postId: detail.post.id, 43 type: detail.post.type, 44 isTailwind: Boolean(detail.post.isTailwind), 45 }; 46 }, 47 });