Sha256: 5b96ec2e54f02d93bdc7e79cbf58838a243b4c8de189afd67a50b9976c3602eb
Contents?: true
Size: 1.11 KB
Versions: 28
Compression:
Stored size: 1.11 KB
Contents
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();
Version data entries
28 entries across 27 versions & 9 rubygems