UNPKG

common-intellisense

Version:
97 lines (82 loc) 2.58 kB
const fg = require('fast-glob') const path = require('node:path') const base = process.cwd() const fsp = require('node:fs/promises') const cwd = path.resolve(base, 'scripts/nextui') const quasar2ComponentsMap: string[][] = [] const quasar2Map: string[] = [] const quasar2Importers: string[] = [] async function run() { const entry = await fg(['*.json'], { dot: true, cwd }) entry.forEach(async (item: any) => { const name = item.slice(0, -5) quasar2Importers.push(`import ${name} from './${name}.json'`) quasar2Map.push(name) quasar2ComponentsMap.push([name, name, `<${name}></${name}>`]) const json = JSON.parse(await fsp.readFile(path.resolve(cwd, item), 'utf-8')) const { props: _props, methods: _methods, events: _events, link } = json const props: any = {} const methods: any = [] const events: any = [] if (_props && _props.length) { _props.forEach((p: any) => { props[p.Attribute] = { type: p.Type, default: p.Default, description: p.Description, value: p.value || '', } }) } if (_methods) { Object.keys(_methods).forEach((key) => { const value = _methods[key] const params = value.params ? `(${Object.keys(value.params).map((k) => { const val = value.params[k] return `${k}: ${val.type}` }).join(', ')}) => ${value?.returns?.type || 'void'}` : '' methods.push({ name: key, description: value.desc, params, }) }) } if (_events && _events.length) { _events.forEach((e: any) => { events.push({ name: e.Attribute, description: e.Description, params: e.Type, }) }) } const newJson = { name, methods, events, props, link, } fsp.writeFile(path.resolve(base, `src/ui/nextui/nextui2/${item}`), JSON.stringify(newJson, null, 2), 'utf-8') }) generateIndex() console.log('nextui generate done!') } function generateIndex() { const indexTemplate = `import { componentsReducer, propsReducer } from '../../utils' ${quasar2Importers.join('\n')} export function nextui2() { const map: any = ${JSON.stringify(quasar2Map, null, 4).replace(/"/g, '')} return propsReducer(map) } export function nextui2Components() { const map = ${JSON.stringify(quasar2ComponentsMap, null, 4)} return componentsReducer(map) } ` fsp.writeFile(`${base}/src/ui/nextui/nextui2/index.ts`, indexTemplate) } export default run