UNPKG

@webassemblyjs/ast

Version:
49 lines (41 loc) 1.15 kB
const definitions = require("../src/definitions"); const flatMap = require("array.prototype.flatmap"); const { typeSignature, mapProps, iterateProps, unique } = require("./util"); const stdout = process.stdout; function params(fields) { return mapProps(fields).map(typeSignature).join(","); } function generate() { stdout.write(` // @flow /* eslint no-unused-vars: off */ // THIS FILE IS AUTOGENERATED // see scripts/generateTypeDefinitions.js `); // generate union types const unionTypes = unique( flatMap( mapProps(definitions).filter((d) => d.unionType), (d) => d.unionType ) ); unionTypes.forEach((unionType) => { stdout.write( `type ${unionType} = ` + mapProps(definitions) .filter((d) => d.unionType && d.unionType.includes(unionType)) .map((d) => d.name) .join("|") + ";\n\n" ); }); // generate the type definitions iterateProps(definitions, (typeDef) => { stdout.write(`type ${typeDef.name} = { ...BaseNode, type: "${typeDef.name}", ${params(typeDef.fields)} };\n\n`); }); } generate();