proxy-typer

0.0.21 • Public • Published

proxy-typer

Runtime javascript proptypes check, only for user defined classes.
Implemented using ES6 features (Proxy and Symbol) >=8.0.0

Install

npm install proxy-typer --save

Supported types

  • Number
  • String
  • Date
  • Object
  • Boolena
  • Function
  • AsyncFunction
  • Array
  • User Defined [Custom class]

Description

How to set type on prop

Value need to be number and it's required
Model.propTypes = {
    exampleProp: Number
};
Value need to be string and it's required
Model.propTypes = {
    exampleProp: {type: String, required: true} 
};
Value can be any type that is possible to cast in to number (parseInt)
Model.propTypes = {
    exampleProp: {type: Number, required: true, cast: parseInt} 
};

How to set type on function

Need to be function, first argument need to be number [required], second argument need to be string [required] and function need to return some object
Model.propTypes = {
    setValue: {type: Function, args: [Number, String], return: Object};
}
Need to be function, first argument need to be number [required], second argument need to be string and function can not return any value
Model.propTypes = {

    setValue: {type: Function, args: [{type: Number}, {type: String, required: false}]};
}    
Need to be async function, first argument need to be number [required], second argument need to be string [required], cast arguments in correct types and return some string
Model.propTypes = {
    setValue: {type: AsyncFunction, args: [Number, String], cast: (...args)=> [...args], return: String};
}

How to use

const {ProxyTyper, AsyncFunction} = require("proxy-typer");
class Test {
        constructor(value, number) {
            this.value = value;
            this.number = number;
        }

        setValue(val) {
            this.number = val;
            return this.number;
        }

        async getValue() {
            return this.number.toString();
        }
    }

    Test.propTypes = {
        value: String, // is same like {type: String}
        number: Number, // if prop isn't required then {type: Number, required: false}
        setValue: {type: Function, args: [{type: Number}]}, // if function need to return value then add {return: [Type]}
        getValue: {type: AsyncFunction, return: String}
    };

    const TestModel = ProxyTyper(Test);
    const test = new TestModel("test", 45);
    test.setValue(3);
    test.getValue();

Example

TO DO

  • Add support for static props and static functions

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.0.21
    0
    • latest

Version History

Package Sidebar

Install

npm i proxy-typer

Weekly Downloads

20

Version

0.0.21

License

MIT

Unpacked Size

21.3 kB

Total Files

9

Last publish

Collaborators

  • kberbic