awesome-metadata
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

Summary

Awesome metadata emitter for TypeScript. Injects fake decorators in every class with additional information, to be accessed by other libraries and utilities.

Libraries using atm at the moment

  • TSON: This library makes automatic serialization and deseralization possible, like GSON for Java.
  • ts-mongoose-metadata Generates mongoose schemas automatically from class metadata.
  • ts-express-validator Middleware for express that automatically deserializes the body of a request, and checks if the data is valid.

Goals

The goal of this project is to offer metadata for all elements in TypeScript, being as simple as possible.

Features

  • Class body schema metadata atm:body
    • Visibility (private, protected, public, none) BROKEN IN THIS BRANCH
    • Optionality (question mark token) BROKEN IN THIS BRANCH
    • Primitive members serialization
    • Union types serialization
    • Type alias serialization
    • Array of generic types
    • Type literal serialization
    • Interface type serialization
  • Configuration based metadata emit
    • Needs discussion.
  • Interface body schema metadata
    • Needs discussion.
  • Variable and function metadata
    • Needs discussion.

Usage

We use it this way:

In package.json:

{
  "scripts": {
    "compile": "atm"
  }
}

Then instead of compiling using tsc, you compile using

npm run compile
# or 
atm

Metadatas

Class body

You can get an schema of a class using:

Reflect.getMetadata("atm:body", AnyClass);

Package Sidebar

Install

npm i awesome-metadata

Weekly Downloads

9

Version

0.1.0

License

ISC

Last publish

Collaborators

  • ezequiel-umu