0.5.5 • Published 6 years ago

ember-types v0.5.5

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Ember-types

Sometymes you need types and assertions when organizing bigger application. Addon provides extensions to assert types for computed properties and function parameters in runtime.

                 _                    _                         
   ___ _ __ ___ | |__   ___ _ __     | |_ _   _ _ __   ___  ___ 
  / _ \ '_ ` _ \| '_ \ / _ \ '__|____| __| | | | '_ \ / _ \/ __|
 |  __/ | | | | | |_) |  __/ | |_____| |_| |_| | |_) |  __/\__ \
  \___|_| |_| |_|_.__/ \___|_|        \__|\__, | .__/ \___||___/
                                          |___/|_|              

Installation

ember install ember-error-handler

Typed computed property

import { asserted } from 'ember-types/property';

export default Ember.Object.extend({
  
  hello: asserted('string', function() {
      return 'world'
  })

});

or with passing computed

import { asserted } from 'ember-types/property';
const {computed} = Ember;

export default Ember.Object.extend({
  
  hello: asserted('string', computed(function() {
      return 'world'
  }))

});

or empty

import { asserted } from 'ember-types/property';

export default Ember.Object.extend({
 
 helloWorld: asserted('string')

});

Assert type of function arguments

import { assertType } from 'ember-types/asserts';
function execute(param) {
  assertType(param, 'string');
};

Types validators (assertions)

Assertions could be defined as string, Assertion Validator or Class name

Assertion based on shortcuts

import { assertType } from 'ember-types/asserts';
assertType('hello world', 'string');

supported shortcuts

  • array
  • boolean
  • function
  • nothing
  • number
  • object
  • string

Assertion based on class

import { assertType } from 'ember-types/asserts';
assertType(myInstance, Ember.Object);

Assertion based on validator

import { assertType } from 'ember-types/asserts';
import LogicalOr from 'ember-types/asserts/validator/logical-or'
import Enumeration from 'ember-types/asserts/validator/enumeration'

assertType(mixed, new LogicalOr(Ember.Component, Ember.Route));
assertType(mixed, new LogicalOr(Ember.Component, Ember.Route, new Enumeration(false, undefined, null));

Assertion based on enumeration

import { assertType } from 'ember-types/asserts';

// will fail
assertType('hello', enumeration('hello', 'world'));

Custom validators could be implemented

import { defineValidator } from 'ember-types/definition';
import { InvalidTypeError } from 'ember-types/errors';
import { extractName } from 'ember-types/classes';

export default  defineValidator(
  (value) => {
    if (typeof value !== 'boolean') {
      throw new InvalidTypeError(`value ${extractName(value)} must be boolean`);
    }
  },
  {name: 'boolean'}
);

See LogicalOr validator as advanced validator implementation

Naming tooling

Extension also includes tooling for proper class / function / instance naming

TBD

Will-be tooling

Extension also includes tooling for definition of non-scalar values on classes

TBD

Function decorators

TBD

0.5.5

6 years ago

0.5.4

6 years ago

0.5.2

6 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.0

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.6

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.0

7 years ago