Last change
on this file since 6a80231 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago |
initial commit
|
-
Property mode
set to
100644
|
File size:
1.1 KB
|
Line | |
---|
1 | const definitions = require("../src/definitions");
|
---|
2 | const flatMap = require("array.prototype.flatmap");
|
---|
3 | const { typeSignature, mapProps, iterateProps, unique } = require("./util");
|
---|
4 |
|
---|
5 | const stdout = process.stdout;
|
---|
6 |
|
---|
7 | function params(fields) {
|
---|
8 | return mapProps(fields)
|
---|
9 | .map(typeSignature)
|
---|
10 | .join(",");
|
---|
11 | }
|
---|
12 |
|
---|
13 | function 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 |
|
---|
47 | generate();
|
---|
Note:
See
TracBrowser
for help on using the repository browser.