UNPKG

@alifd/dts-generator

Version:

A tool to generate *.d.ts by specified api schema.

63 lines (52 loc) 1.32 kB
const prettier = require('prettier'); const Interface = require('./types/interface'); const Component = require('./types/component'); function run(schema, syncExec) { let subComponents = schema.subComponents; schema.isEntry = true; let entryComponent = _run(schema); if (Array.isArray(subComponents)) { // submodules is nullable subComponents = subComponents.map(component => _run(component)); } else { subComponents = []; } const formatted = prettier.format( _createHead() + subComponents.join('\n') + entryComponent, { parser: 'typescript' } ); if (syncExec) { return { message: formatted }; } return Promise.resolve({ message: formatted }); } function _run(component) { const name = component.name; const subComponents = component.subComponents; const isEntry = component.isEntry; const reactProps = new Interface({ name, props: component.props || {}, propsExtends: component.propsExtends }); const reactComponent = new Component({ name, subComponents, methods: component.methods, isEntry }); return reactProps.toString() + reactComponent.toString(); } function _createHead() { return ` /// <reference types="react" />\n import * as React from 'react';\n `; } module.exports = run;