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.

Dependencies (4)

Dev Dependencies (1)

Package Sidebar

Install

npm i tyranid-tdgen

Weekly Downloads

4

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