source: trip-planner-front/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js@ 8d391a1

Last change on this file since 8d391a1 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.1 KB
Line 
1const definitions = require("../src/definitions");
2const flatMap = require("array.prototype.flatmap");
3const { typeSignature, mapProps, iterateProps, unique } = require("./util");
4
5const stdout = process.stdout;
6
7function params(fields) {
8 return mapProps(fields)
9 .map(typeSignature)
10 .join(",");
11}
12
13function generate() {
14 stdout.write(`
15 // @flow
16 /* eslint no-unused-vars: off */
17
18 // THIS FILE IS AUTOGENERATED
19 // see scripts/generateTypeDefinitions.js
20 `);
21
22 // generate union types
23 const unionTypes = unique(
24 flatMap(mapProps(definitions).filter(d => d.unionType), d => d.unionType)
25 );
26 unionTypes.forEach(unionType => {
27 stdout.write(
28 `type ${unionType} = ` +
29 mapProps(definitions)
30 .filter(d => d.unionType && d.unionType.includes(unionType))
31 .map(d => d.name)
32 .join("|") +
33 ";\n\n"
34 );
35 });
36
37 // generate the type definitions
38 iterateProps(definitions, typeDef => {
39 stdout.write(`type ${typeDef.name} = {
40 ...BaseNode,
41 type: "${typeDef.name}",
42 ${params(typeDef.fields)}
43 };\n\n`);
44 });
45}
46
47generate();
Note: See TracBrowser for help on using the repository browser.