tyranid-tdgen
    TypeScript icon, indicating that this package has built-in type declarations

    0.6.14 • Public • Published

    tyranid-tdgen

    npm version codecov

    Generate typescript .d.ts files from your tyranid schema definitions. The generated type definition files extend tyranids own type definitions through declaration merging

    Example Usage - Command Line

    Pass your model directory to tyranid-tdgen

    npm install -g tyranid-tdgen
    tyranid-tdgen "./dist/example/models/*.js" > isomorphic.d.ts

    For help...

    tyranid-tdgen --help

    Example Usage - Module

    (see /example for the code and output shown below)

    Say we have a user tyranid collection, User.ts...

    import { Tyr } from 'tyranid';
    
    export default new Tyr.Collection({
      id: 'u00',
      name: 'user',
      dbName: 'users',
      fields: {
        _id: { is: 'mongoid' },
        name: { is: 'string' },
        email: { is: 'email' },
        teamId: { is: 'mongoid' },
        skills: {
          is: 'array',
          of: {
            is: 'object',
            fields: {
              years: { is: 'integer' },
              name: { is: 'string' }
            }
          }
        }
      }
    });

    In a separate typescript/javascript file, after initializing tyranid, we can generate a type definition file like so...

    import { Tyr } from 'tyranid';
    import * as fs from 'fs';
    import * as mongodb from 'mongodb';
    import * as path from 'path';
    import { generateFile } from '../';
    
    generate().catch(console.error);
    
    async function generate() {
      const db = await mongodb.MongoClient.connect(
        'mongodb://127.0.0.1:27017/tyranid_tdgen'
      );
    
      await Tyr.config({
        db: db,
        validate: [
          {
            dir: path.resolve(__dirname, `./models/`),
            fileMatch: '.*.ts'
          }
        ]
      });
    
      await Promise.all([
        generateFile(
          Tyr.collections,
          path.resolve(__dirname, './output/isomorphic.d.ts')
        ),
        generateFile(
          Tyr.collections,
          path.resolve(__dirname, './output/server.d.ts'),
          { type: 'server' }
        ),
        generateFile(
          Tyr.collections,
          path.resolve(__dirname, './output/client.d.ts'),
          { type: 'client' }
        )
      ]);
    
      process.exit(0);
    }

    See ./example/output for the resulting generated type definition files.

    Keywords

    none

    Install

    npm i tyranid-tdgen

    DownloadsWeekly Downloads

    7

    Version

    0.6.14

    License

    Apache-2.0

    Unpacked Size

    145 kB

    Total Files

    44

    Last publish

    Collaborators

    • dimensia
    • bsouthga
    • shindig
    • christian.yang
    • adam-at-crosslead