Skip to content

lilezek/awesome-metadata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Awesome metadata emitter for TypeScript.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published