0.1.0 • Published 6 years ago

awesome-metadata v0.1.0

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

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);