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
|
Rev | Line | |
---|
[6a3a178] | 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.