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

Version Path
optimacms-0.1.61 spec/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.18.0 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.18.2 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.16.1 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.15.2 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.18.4 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.18.1 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.14.0 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
tang-0.2.1 spec/tang_app/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
tang-0.2.0 spec/tang_app/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
tang-0.1.0 spec/tang_app/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
tang-0.0.9 spec/tang_app/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
enju_library-0.3.8 spec/dummy/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js
jester-data-8.0.0 node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js