tx-reflector
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

TX Reflector

TypeScript transformer for code generation.
See also Interface-based instructions.

Install

npm i --save-dev tx-reflector

API

  • getInterfaces(target: Function | object): string[]
  • getInterfaces<T>(target: T): string[]
  • getRawInterfaces<T>(target: T): Interface[]
  • getComponentInterfaces(XClass: Function): string[]

Usage

import {getInterfaces} from 'tx-reflector';
 
const data: IData = {value: 'foo'};
const interfaces: string[] = getInterfaces(data); // OR getInterfaces<IData>(anything);
 
// After compilation:
//   var interfaces = ["IData", "IAbstractData"];

React and like

import {getComponentInterfaces} from 'tx-reflector';
 
interface IBtnProps extends IComponent, IClickable {
    value: string;
}
 
class Btn extends React.Component<IBtnProps> {
}
 
 
const interfaces = getComponentInterfaces(Btn);
 
// After compilation:
//   var interfaces = ["IBtnProps", "IComponent", "IClickable"];

Webpack

Use awesome-typescript-loader or ts-loader 2.3+.

// webpack.config.js
const {default:txReflector} = require('tx-reflector/src/transformer/transformer');
 
module.exports = {
    // ...
    module: {
        // ...
        {
            test: /\.tsx?$/,
            loader: 'awesome-typescript-loader', // or ts-loader
            options: {
                getCustomTransformers() {
                    return {
                        before: [txReflector],
                        after: [],
                    };
                }
            }
        },
    },
    // ...
};

Jest (only with TS 2.4+)

// .jest/tsPreprocessor.js
const tsc = require('typescript');
const tsConfig = require('../tsconfig.json');
const {default:txReflector} = require('tx-reflector/src/transformer/transformer');
 
module.exports = {
    process(src, path) {
        if (path.endsWith('.ts') || path.endsWith('.tsx')) {
            const result = tsc.transpileModule(src, {
                compilerOptions: tsConfig.compilerOptions,
                fileName: path,
                transformers: {
                    before: [txReflector],
                    after: [],
                },
            });
 
            return result.outputText;
        }
 
        return src;
    },
};

Development

Package Sidebar

Install

npm i tx-reflector

Weekly Downloads

3

Version

0.4.0

License

MIT

Last publish

Collaborators

  • rubaxa