Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
49 lines
1.1 KiB
Plaintext
49 lines
1.1 KiB
Plaintext
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();
|